Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package git-filter-repo for openSUSE:Factory checked in at 2021-03-15 10:56:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/git-filter-repo (Old) and /work/SRC/openSUSE:Factory/.git-filter-repo.new.2401 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "git-filter-repo" Mon Mar 15 10:56:37 2021 rev:5 rq:879118 version:2.29.0 Changes: -------- --- /work/SRC/openSUSE:Factory/git-filter-repo/git-filter-repo.changes 2020-09-12 00:09:23.321034786 +0200 +++ /work/SRC/openSUSE:Factory/.git-filter-repo.new.2401/git-filter-repo.changes 2021-03-15 10:56:38.701378382 +0100 @@ -1,0 +2,7 @@ +Mon Mar 15 09:07:19 UTC 2021 - Andreas Schneider <a...@cryptomilk.org> + +- Update to version 2.29.0 + * https://github.com/newren/git-filter-repo/releases/tag/v2.29.0 +- Removed filter-repo-README-remove-outdated-2.28.0-not-yet-re.patch + +------------------------------------------------------------------- Old: ---- filter-repo-README-remove-outdated-2.28.0-not-yet-re.patch git-filter-repo-2.28.0.tar.xz New: ---- git-filter-repo-2.29.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ git-filter-repo.spec ++++++ --- /var/tmp/diff_new_pack.vrUyCl/_old 2021-03-15 10:56:39.173379103 +0100 +++ /var/tmp/diff_new_pack.vrUyCl/_new 2021-03-15 10:56:39.177379109 +0100 @@ -1,7 +1,7 @@ # # spec file for package git-filter-repo # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -22,7 +22,7 @@ %global gitexecdir %{_libexecdir}/git Name: git-filter-repo -Version: 2.28.0 +Version: 2.29.0 Release: 0 Summary: Quickly rewrite git repository history (git-filter-branch replacement) License: MIT OR GPL-2.0-only @@ -30,7 +30,6 @@ URL: https://github.com/newren/git-filter-repo # Source0: https://github.com/newren/git-filter-repo/releases/download/v%{version}/%{name}-%{version}.tar.xz -Patch01: filter-repo-README-remove-outdated-2.28.0-not-yet-re.patch # BuildArch: noarch # ++++++ git-filter-repo-2.28.0.tar.xz -> git-filter-repo-2.29.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-filter-repo-2.28.0/Documentation/converting-from-bfg-repo-cleaner.md new/git-filter-repo-2.29.0/Documentation/converting-from-bfg-repo-cleaner.md --- old/git-filter-repo-2.28.0/Documentation/converting-from-bfg-repo-cleaner.md 2020-07-27 20:06:22.000000000 +0200 +++ new/git-filter-repo-2.29.0/Documentation/converting-from-bfg-repo-cleaner.md 2020-10-19 21:01:00.000000000 +0200 @@ -106,7 +106,7 @@ becomes ```shell - git filter-repo --use-base-names --path id_dsa --path id_rsa --invert-paths + git filter-repo --use-base-name --path id_dsa --path id_rsa --invert-paths ``` ### Removing sensitive content diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-filter-repo-2.28.0/Documentation/git-filter-repo.txt new/git-filter-repo-2.29.0/Documentation/git-filter-repo.txt --- old/git-filter-repo-2.28.0/Documentation/git-filter-repo.txt 2020-07-27 20:06:22.000000000 +0200 +++ new/git-filter-repo-2.29.0/Documentation/git-filter-repo.txt 2020-10-19 21:01:00.000000000 +0200 @@ -872,9 +872,12 @@ globs (see https://docs.python.org/3/library/fnmatch.html), or regular expressions (see https://docs.python.org/3/library/re.html#regular-expression-syntax). If none of these are specified, `literal:` is assumed. - * globs and regexes are applied to each line of the file; it is not - possible with --replace-text to match a multi-line string. - * If multiple matches are found on a line, all are replaced. + * If multiple matches are found, all are replaced. + * globs and regexes are applied to the entire file, but without any + special flags turned on. Some folks may be interested in adding `(?m)` + to the regex to turn on MULTILINE mode, so that `^` and `$` match the + beginning and ends of lines rather than the beginning and end of file. + See https://docs.python.org/3/library/re.html for details. See also the `--blob-callback` from <<CALLBACKS>>. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-filter-repo-2.28.0/Documentation/html/git-filter-repo.html new/git-filter-repo-2.29.0/Documentation/html/git-filter-repo.html --- old/git-filter-repo-2.28.0/Documentation/html/git-filter-repo.html 2020-07-27 20:06:22.000000000 +0200 +++ new/git-filter-repo-2.29.0/Documentation/html/git-filter-repo.html 2020-10-19 21:01:00.000000000 +0200 @@ -2002,13 +2002,16 @@ </li> <li> <p> -globs and regexes are applied to each line of the file; it is not - possible with --replace-text to match a multi-line string. +If multiple matches are found, all are replaced. </p> </li> <li> <p> -If multiple matches are found on a line, all are replaced. +globs and regexes are applied to the entire file, but without any + special flags turned on. Some folks may be interested in adding <code>(?m)</code> + to the regex to turn on MULTILINE mode, so that <code>^</code> and <code>$</code> match the + beginning and ends of lines rather than the beginning and end of file. + See <a href="https://docs.python.org/3/library/re.html">https://docs.python.org/3/library/re.html</a> for details. </p> </li> </ul></div> @@ -2663,7 +2666,7 @@ <div id="footer"> <div id="footer-text"> Last updated - 2020-07-07 08:38:34 PDT + 2020-10-19 08:10:08 PDT </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-filter-repo-2.28.0/Documentation/man1/git-filter-repo.1 new/git-filter-repo-2.29.0/Documentation/man1/git-filter-repo.1 --- old/git-filter-repo-2.28.0/Documentation/man1/git-filter-repo.1 2020-07-27 20:06:22.000000000 +0200 +++ new/git-filter-repo-2.29.0/Documentation/man1/git-filter-repo.1 2020-10-19 21:01:00.000000000 +0200 @@ -2,12 +2,12 @@ .\" Title: git-filter-repo .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 07/27/2020 +.\" Date: 10/19/2020 .\" Manual: Git Manual -.\" Source: Git 2.28.0.dirty +.\" Source: Git 2.29.0.dirty .\" Language: English .\" -.TH "GIT\-FILTER\-REPO" "1" "07/27/2020" "Git 2\&.28\&.0\&.dirty" "Git Manual" +.TH "GIT\-FILTER\-REPO" "1" "10/19/2020" "Git 2\&.29\&.0\&.dirty" "Git Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -1296,7 +1296,7 @@ .sp -1 .IP \(bu 2.3 .\} -globs and regexes are applied to each line of the file; it is not possible with \-\-replace\-text to match a multi\-line string\&. +If multiple matches are found, all are replaced\&. .RE .sp .RS 4 @@ -1307,7 +1307,15 @@ .sp -1 .IP \(bu 2.3 .\} -If multiple matches are found on a line, all are replaced\&. +globs and regexes are applied to the entire file, but without any special flags turned on\&. Some folks may be interested in adding +\fB(?m)\fR +to the regex to turn on MULTILINE mode, so that +\fB^\fR +and +\fB$\fR +match the beginning and ends of lines rather than the beginning and end of file\&. See +\m[blue]\fBhttps://docs\&.python\&.org/3/library/re\&.html\fR\m[] +for details\&. .RE .sp See also the \fB\-\-blob\-callback\fR from the section called \(lqCALLBACKS\(rq\&. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-filter-repo-2.28.0/INSTALL.md new/git-filter-repo-2.29.0/INSTALL.md --- old/git-filter-repo-2.28.0/INSTALL.md 2020-07-27 20:06:22.000000000 +0200 +++ new/git-filter-repo-2.29.0/INSTALL.md 2020-10-19 21:01:00.000000000 +0200 @@ -17,6 +17,19 @@ these versions. +# Notes for Windows Users + +It seems that the default python on Windows is not fully functional, +and windows might not allow executing python scripts by default. See +[issue 124](https://github.com/newren/git-filter-repo/issues/124), +[issue 36](https://github.com/newren/git-filter-repo/issues/36), and +[this git mailing list +thread](https://lore.kernel.org/git/nycvar.qro.7.76.6.2004251610300.18...@tvgsbejvaqbjf.bet/) +for details and workarounds. I believe that Windows users installing +git-filter-repo via Scoop will be okay, but those using a manual +installation or pip install may run into these issues. + + # Manual Installation filter-repo only consists of a few files that need to be installed: @@ -70,14 +83,26 @@ instructions regardless of whether the html version of help is installed. -So, installation might look something like -``` -cp -a git-filter-repo $(git --exec-path) -cp -a git-filter-repo.1 $(git --man-path)/man1 -cp -a git-filter-repo.html $(git --html-path) -ln -s $(git --exec-path)/git-filter-repo \ - $(python -c "import site; print(site.getsitepackages()[-1])")/git_filter_repo.py -``` +So, installation might look something like the following: + +1. If you don't have the necessary documentation files (because you + are installing from a clone of filter-repo instead of from a + tarball) then you can first run: + + `make snag_docs` + + (which just copies the generated documentation files from the + `docs` branch) + +2. Run the following + + ``` + cp -a git-filter-repo $(git --exec-path) + cp -a git-filter-repo.1 $(git --man-path)/man1 + cp -a git-filter-repo.html $(git --html-path) + ln -s $(git --exec-path)/git-filter-repo \ + $(python -c "import site; print(site.getsitepackages()[-1])")/git_filter_repo.py + ``` # Installation via [pip](https://pip.pypa.io/) @@ -86,6 +111,12 @@ $ pip3 install git-filter-repo +However, the place where pip places that package might not be in your +$PATH (thus requiring you to manually update your $PATH afterwards), +and on windows the pip install might not take care of python-specific +issues for you (see "Notes for Windows Users", above). As such, +installation via package managers is recommended instead. + # Installation via Makefile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-filter-repo-2.28.0/README.md new/git-filter-repo-2.29.0/README.md --- old/git-filter-repo-2.28.0/README.md 2020-07-27 20:06:22.000000000 +0200 +++ new/git-filter-repo-2.29.0/README.md 2020-10-19 21:01:00.000000000 +0200 @@ -430,7 +430,7 @@ (and occasionally other commands) in core git, based on things filter-repo needs to do its work: - * git-2.28.0 (not yet released) + * git-2.28.0 * [fast-import: add new --date-format=raw-permissive format]( https://git.kernel.org/pub/scm/git/git.git/commit/?id=d42a2fb72f) * git-2.24.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-filter-repo-2.28.0/contrib/filter-repo-demos/filter-lamely new/git-filter-repo-2.29.0/contrib/filter-repo-demos/filter-lamely --- old/git-filter-repo-2.28.0/contrib/filter-repo-demos/filter-lamely 2020-07-27 20:06:22.000000000 +0200 +++ new/git-filter-repo-2.29.0/contrib/filter-repo-demos/filter-lamely 2020-10-19 21:01:00.000000000 +0200 @@ -577,7 +577,7 @@ return tag.skip() - reset = Reset(tag.ref, tag.from_ref) + reset = fr.Reset(tag.ref, tag.from_ref) self.filter.insert(reset, direct_insertion = False) def muck_stuff_up(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-filter-repo-2.28.0/git-filter-repo new/git-filter-repo-2.29.0/git-filter-repo --- old/git-filter-repo-2.28.0/git-filter-repo 2020-07-27 20:06:22.000000000 +0200 +++ new/git-filter-repo-2.29.0/git-filter-repo 2020-10-19 21:01:00.000000000 +0200 @@ -1189,13 +1189,14 @@ original_id = self._parse_original_id(); author_name = None + author_email = None if self._currentline.startswith(b'author'): (author_name, author_email, author_date) = self._parse_user(b'author') (committer_name, committer_email, committer_date) = \ self._parse_user(b'committer') - if not author_name: + if not author_name and not author_email: (author_name, author_email, author_date) = \ (committer_name, committer_email, committer_date) @@ -1314,6 +1315,8 @@ if not tag.dumped: self._imported_refs.add(b'refs/tags/'+tag.ref) tag.dump(self._output) + else: + tag.skip() def _parse_progress(self): """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-filter-repo-2.28.0/t/t9390-filter-repo.sh new/git-filter-repo-2.29.0/t/t9390-filter-repo.sh --- old/git-filter-repo-2.28.0/t/t9390-filter-repo.sh 2020-07-27 20:06:22.000000000 +0200 +++ new/git-filter-repo-2.29.0/t/t9390-filter-repo.sh 2020-10-19 21:01:00.000000000 +0200 @@ -317,6 +317,31 @@ ) ' +test_expect_success 'tag of tag before relevant portion of history' ' + test_create_repo filtered_tag_of_tag && + ( + cd filtered_tag_of_tag && + echo contents >file && + git add file && + git commit -m "Initial" && + + git tag -a -m "Inner Tag" inner_tag HEAD && + git tag -a -m "Outer Tag" outer_tag inner_tag && + + mkdir subdir && + echo stuff >subdir/whatever && + git add subdir && + git commit -m "Add file in subdir" && + + git filter-repo --force --subdirectory-filter subdir && + + git show-ref >refs && + ! grep refs/tags refs && + git log --all --oneline >commits && + test_line_count = 1 commits + ) +' + test_expect_success '--subdirectory-filter' ' setup_metasyntactic_repo && ( @@ -1649,4 +1674,37 @@ test_cmp expect actual ' +test_expect_success 'empty author ident' ' + test_create_repo empty_author_ident && + ( + cd empty_author_ident && + + git init && + cat <<-EOF | git fast-import --quiet && + feature done + blob + mark :1 + data 8 + initial + + reset refs/heads/develop + commit refs/heads/develop + mark :2 + author <em...@ident.ity> 1535228562 -0700 + committer Full Name <em...@add.ress> 1535228562 -0700 + data 8 + Initial + M 100644 :1 filename + + done + EOF + + git filter-repo --force --path-rename filename:stuff && + + git log --format=%an develop >actual && + echo >expect && + test_cmp expect actual + ) +' + test_done