Commit Graph

502 Commits

Author SHA1 Message Date
Elijah Newren
f57759de44 Merge branch 'jm/grammo-fix'
Signed-off-by: Elijah Newren <newren@gmail.com>
2022-09-27 00:45:26 -07:00
Jonathan Malmaud
6731278c45 git-filter-repo.txt: fix small grammar error
Signed-off-by: Jonathan Malmaud <malmaud@gmail.com>
2022-09-26 11:29:19 -07:00
Elijah Newren
16abc01792 Merge branch 'mg/documentation-typos'
Signed-off-by: Elijah Newren <newren@gmail.com>
2022-09-24 17:39:03 -07:00
Elijah Newren
bfb86c1b17 Merge branch 'kd/installation-makefile-improvements'
Signed-off-by: Elijah Newren <newren@gmail.com>
2022-09-24 17:33:58 -07:00
Todd Zullinger
70d781b05d git-filter-repo.txt: add missing git- prefix to fast-import link
Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
2022-09-24 16:56:00 -07:00
Elijah Newren
6e52d99979 Merge branch 'mh/ref-map-header'
Signed-off-by: Elijah Newren <newren@gmail.com>
2022-09-24 16:08:01 -07:00
Elijah Newren
585891f9d5 Merge branch 'mh/fix-filename-in-install-docs'
Signed-off-by: Elijah Newren <newren@gmail.com>
2022-09-24 15:59:13 -07:00
Elijah Newren
d760d24cf7 Merge branch 'sr/git-2.35-fast-export-order-fix'
Signed-off-by: Elijah Newren <newren@gmail.com>
2022-05-27 21:32:24 -07:00
Stefano Rivera
838bdd19f6 Update expected test data for git 2.35
Commit order from fast-export --first-parent has changed in git 2.35,
see 726a228dfb

This will break the same tests on older git releases.

Fixes: #344
Signed-off-by: Stefano Rivera <stefano@rivera.za.net>
2022-03-06 12:34:15 -04:00
Mo-Gul
7b2840a948
doc: fix some typos
Signed-off-by: Stefan Pinnow <Mo-Gul@gmx.net>
2022-02-14 07:19:09 +01:00
Kevin Daudt
e1e418018e Makefile: support DESTDIR
When packaging applications, the application is commonly installed into
a different location than it will end up on the users system. While
`prefix` can control where the files will be installed, it also affects
the location the `git_filter_repo` symlink points to. If the files are
then installed in a different location, the symlink is broken.

`DESTDIR` is a de facto standard variable to control where files are
installed, so that prefix can be used to specify where the files end up
on the end-users system. This allows a usecase like `make install
prefix=/usr DESTDIR=pkg`.

Signed-off-by: Kevin Daudt <me@ikke.info>
2022-01-31 10:03:48 +01:00
Kevin Daudt
4ef1aabd4d Makefile: create parent directories
cp requires the destination directories to already exist. If they do not
exist, it will fail. When packaging applications, it's common they are
installed in an empty directory where the expected directory structure
does not exist yet.

Use `install -D` to copy the files to copy the files so that parent
diretories are automatically created.

Signed-off-by: Kevin Daudt <me@ikke.info>
2022-01-31 09:53:06 +01:00
Markus Heidelberg
3fe2b5c3c9 filter-repo: prepend the header line to the "ref-map" file
The existance of a header has already been specified in the documentation.
Further adapt it to the real text implemented now.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
2022-01-17 16:49:04 +01:00
Markus Heidelberg
9cfde803db INSTALL.md: correct a filename with mixed underscore and dash
Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
2021-12-23 12:10:56 +01:00
Elijah Newren
fff5f43a15 Merge branch 'ek/run-mandb'
Signed-off-by: Elijah Newren <newren@gmail.com
2021-12-01 13:02:03 -08:00
erickeller
ced9a0ba03 Update mandb after installing the man page
When manually installing the manpage, also update the mandb.

Signed-off-by: Eric Keller <keller.eric@gmail.com>
2021-12-01 21:12:26 +01:00
Elijah Newren
235fed3269 Makefile: avoid leaking GIT_INDEX_FILE shenanigans to additional commands
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-11-15 14:54:30 -08:00
Elijah Newren
0cd8a1fd39 filter-repo: fix blob count when analyzing
Reported-by: Li Linchao
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-11-12 09:03:56 -08:00
Elijah Newren
240ef0bcc2 README.md: clarify simple instruction rules and antecedent of it
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-11-09 13:42:46 -08:00
Elijah Newren
933475ecf1 Make it clearer that --path* do not follow renames
The wording "exact paths" appears to not be clear enough for folks and I
keep repeatedly getting bug reports about filter-repo not following
renames.  Make it very explicit.

Signed-off-by: Elijah Newren <newren@gmail.com>
2021-11-09 10:01:06 -08:00
Elijah Newren
05e3548b67 Merge branch 'rnd/add-report-dir-option'
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-11-08 22:10:41 -08:00
rndbit
e9d5ab3529 filter-repo: add option --report-dir to set custom analysis dir
--analyze is hardcoded to write to a subdirectory inside GIT_DIR.

When practicing filtering runs on a large repo it is desirable to keep
an unchanged copy read-only to reduce chance of user error. It is
desirable to be able to analyze a read-only repo without having to clone
it. This would save a lot of time and space.

Add --report-dir option to set a non-default destination directory for
writing analysis output to.

Signed-off-by: rndbit <rndbit@filter.bitman.net>
[en: fixed existing regression test broken by now not overwriting the
     analysis directory unconditionally, and also added a new test of
     the new behavior for code coverage.]
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-11-08 22:10:19 -08:00
Elijah Newren
a8ed6929d0 Merge branch 'rnd/fix-binary-blob-detection'
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-11-06 19:38:32 -07:00
rndbit
993216739e filter-repo: add tests for --replace-text in binary blobs
The --replace-text failed to detect blobs as binary and incorrectly
applied to all blobs.
Prior to switch from python2 to python3 it incorrectly designated blobs
containing 0 character instead of NUL byte as binary and would have been
causing text replacements to apply to binary files and not apply to text
files containing 0 character.

Add regression tests with blobs containing; 0 character, NUL byte, and
both 0 character and NUL byte.

Signed-off-by: rndbit <rndbit@filter.bitman.net>
2021-09-02 16:39:11 +00:00
rndbit
9cfe2b4090 filter-repo: fix detection of binary blobs for --replace-text
Detection if blob is binary for the purpose of --replace-text always
fails and text replacement is applied to all blobs. This has changed
going to python3. With python2 the same code would still be wrong but
would manifest differently.

In the construct 'for x in b"..."' the x is
 - of type <int> in python3
 - of type <str> in python2
thus in python3 condition 'x == b"\0"' can not be true for any x due to
type difference.

Further, the search was supposed to look for NUL byte and not 0
character, thus change to b"\0" instead of b"0".

Signed-off-by: rndbit <rndbit@filter.bitman.net>
2021-09-02 16:38:44 +00:00
Elijah Newren
d8e858aeca Merge branch 'sr/fix-file-used-in-version-calculation'
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-08-25 07:53:59 -07:00
Gwyneth Morgan
129a3bcb8b filter-repo: add new --replace-message option
Like --replace-text, add an option --replace-message which replaces text
in commit/tag message bodies, so that users can easily replace text
without constructing a --message-callback.

Signed-off-by: Gwyneth Morgan <gwymor@tilde.club>
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-08-25 07:51:39 -07:00
Stefano Rivera
e7728c38ae Calculate the version from the module, not the entry_point
When git-filter-repo is installed, sys.argv[0] will be an entry-point
stub, not the relevant Python module.

Signed-off-by: Stefano Rivera <stefano@rivera.za.net>
2021-08-24 14:22:46 -07:00
Elijah Newren
c5af37f82c Makefile: avoid releasing with uncommitted changes
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-08-20 10:31:00 -07:00
Elijah Newren
fd64b0c7c0 INSTALL.md: more clarifications and links
Someone was surprised by my claim that someone else had reported
Microsoft provided a stub or stripped down python.  Link to where it was
reported in case others hit the same problem.

Vilius Šumskas reported that the need to edit the shebang line has been
corrected with the newest Git for Windows, so update the text to note
this.  It's possible other users may still have problems given the
variety of Windows versions and the number of reports I had about this,
so I want to still leave links there for at least a little while.

Be more explicit about how pip is lame and provides virtually no benefit
since it leaves you to fix your $PATH yourself, which was the only step
that was needed in installing the whole package anyway.

Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-11 13:42:09 -07:00
Elijah Newren
a557077438 Merge branch 'bm/setup-py-entry-points'
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-10 10:20:52 -07:00
Benjamin Motz
4ff15cd422 Use setup.py entry_points for installation
This should make the installation via pip more robust.

On Windows the usage of entry_points will install a wrapper executable
for the script that chooses the proper python executable. This
essentially makes the script run correctly when called via `git
filter-repo` (direct execution via `git-filter-repo` was already fine
before).

This fixes an issue on Windows, where the git-installation will choose a
different python executable than the one indicated by the installation
via `pip{x,3} install`.

Signed-off-by: Benjamin Motz <benjamin.motz@mailbox.org>
2021-06-10 18:33:26 +02:00
Elijah Newren
7ceb213f04 filter-repo: ensure we close files so they get written
It appears that python will usually write out files even if we do not
explicitly close them, but other tweaks to the code can make this not
happen.  Explicitly close the files to be safe.

Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-08 08:30:18 -07:00
Elijah Newren
1c4551021f Merge branch 'cm/fix-documentation-typo'
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-07 23:29:23 -07:00
Cody Martin
8abc4770e7 git-filter-repo.txt: fix typo in paths-from-file example
The "Filtering based on many paths" section includes this code snippet,
```
regex:^.*/.*/[0-9]{4}-[0-9]{2}-[0-9]{2}.txt$
```
and this text
```
files whose name
was of the form YYYY.MM-DD.txt at least two subdirectories deep
```
Update the text to YYYY-MM-DD.txt to correctly match the regex
in the code snippet.

Signed-off-by: Cody Martin <codytylermartin@gmail.com>
2021-06-07 22:47:02 -07:00
Elijah Newren
65ce5002fe Merge branch 'sl/mailmap-email-case'
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-07 10:37:23 -07:00
Stefan Lietzau
c9a9dcc886 filter-repo: ignore case for email address with mailmap
`git shortlog` ignores the case when matching the email address. As
such, `git filter-repo` should do the same.

Signed-off-by: Stefan Lietzau <lietzaustefan@gmail.com>
[en: fixed a small logic error, tweaked the commit message, and rebased]
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-07 10:36:30 -07:00
Elijah Newren
7b09784d7b INSTALL.md: reference dscho's excellent python on git-for-windows fixes
Dscho made fixes to msys2, cygwin, git-for-windows, and contributed
several improvements to git-filter-repo that were merged in
js/windows-fixes.  Reference some of the fixes so that those who had
issues with git-filter-repo in the past may be willing to retry, and
update the installation instructions with relevant pointers.

Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-07 09:23:45 -07:00
Elijah Newren
47c5a29fd4 Merge branch 'sb/callback-from-file'
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-07 08:36:10 -07:00
Shezan Baig
5256c99e49 Allow callback body to be loaded from a file
For anything more complicated than a few lines, it's easier to write the
callback body in a file and let filter-repo load the file as a string.

Signed-off-by: Shezan Baig <sbaig1@bloomberg.net>
[en: added a testcase for code coverage]
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-07 08:35:23 -07:00
Elijah Newren
a10fa46010 Merge branch 'sr/reusable-test-runner-script'
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-07 08:21:46 -07:00
Stefano Rivera
24f09bd016 Share implementation with github workflow
Signed-off-by: Stefano Rivera <stefano@rivera.za.net>
2021-06-06 14:45:34 -04:00
Stefano Rivera
26e3f8c52e Exit non-zero if the tests fail
Signed-off-by: Stefano Rivera <stefano@rivera.za.net>
2021-06-06 14:45:34 -04:00
Stefano Rivera
34b26f4026 Break the actual test runner into its own script
So that we don't have to run with coverage if we don't want to.

Additionally, don't require being in the t directory to run tests

Signed-off-by: Stefano Rivera <stefano@rivera.za.net>
2021-06-06 14:45:09 -04:00
Elijah Newren
e5d8938d48 lint-history: explain how TMPDIR can be used
Some users may want to take advantage of setting TMPDIR to another
location that might be faster for the linting process.

Reported-by: @ruv on GitHub
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-05 11:57:44 -07:00
Elijah Newren
ccc37d3423 lint-history: explain filename paths
It was not clear for some users that the filenames would be relative
paths from the toplevel of the repository.  Add some text to explain
this.

Reported-by: @ruv on GitHub
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-05 11:57:44 -07:00
Elijah Newren
dc012d277b bfg-ish: add some sanity checks on the specified repo
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-05 11:39:03 -07:00
Elijah Newren
06fa059744 Merge branch 'bl/bfg-ish-relative-paths'
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-05 11:33:47 -07:00
林博仁(Buo-ren Lin)
e732141363 Fix relative path compatibility for --replace-text and bfg_args.repo
Users could specify relative paths on the command line, and then also
provide a directory other than '.' for the repo.  Since we did an
unconditional os.chdir() to move into the repo, that would invalidate
the original relative paths.  Fix that by changing the relative paths
into absolute paths.

Signed-off-by: 林博仁(Buo-ren Lin) <Buo.Ren.Lin@gmail.com>
[en: tweaked commit message to explain the problem]
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-06-05 10:44:34 -07:00
Elijah Newren
75e67bcd44 git-filter-repo.txt: link to GitHub docs on purging old history
Signed-off-by: Elijah Newren <newren@gmail.com>
2021-04-07 11:15:16 -07:00