1. Stefan Saasen
  2. git


Junio C Hamano  committed 43d268e Merge

Merge branch 'ch/filter-branch-deprecate-remap-to-ancestor'

* ch/filter-branch-deprecate-remap-to-ancestor:
filter-branch: retire --remap-to-ancestor

  • Participants
  • Parent commits d42cb58, 7ec344d
  • Branches master

Comments (0)

Files changed (3)

File Documentation/git-filter-branch.txt

View file
  • Ignore whitespace
 --subdirectory-filter <directory>::
 	Only look at the history which touches the given subdirectory.
 	The result will contain that directory (and only that) as its
-	project root.  Implies --remap-to-ancestor.
-	Rewrite refs to the nearest rewritten ancestor instead of
-	ignoring them.
-Normally, positive refs on the command line are only changed if the
-commit they point to was rewritten.  However, you can limit the extent
-of this rewriting by using linkgit:rev-list[1] arguments, e.g., path
-limiters.  Refs pointing to such excluded commits would then normally
-be ignored.  With this option, they are instead rewritten to point at
-the nearest ancestor that was not excluded.
+	project root. Implies <<Remap_to_ancestor>>.
 	Some kind of filters will generate empty commits, that left the tree
 	Arguments for 'git rev-list'.  All positive refs included by
 	these options are rewritten.  You may also specify options
 	such as '--all', but you must use '--' to separate them from
-	the 'git filter-branch' options.
+	the 'git filter-branch' options. Implies <<Remap_to_ancestor>>.
+Remap to ancestor
+By using linkgit:rev-list[1] arguments, e.g., path limiters, you can limit the
+set of revisions which get rewritten. However, positive refs on the command
+line are distinguished: we don't let them be excluded by such limiters. For
+this purpose, they are instead rewritten to point at the nearest ancestor that
+was not excluded.

File git-filter-branch.sh

View file
  • Ignore whitespace
+		# deprecated ($remap_to_ancestor is set now automatically)
 # we need "--" only if there are no path arguments in $@
 nonrevs=$(git rev-parse --no-revs "$@") || exit
-test -z "$nonrevs" && dashdash=-- || dashdash=
+if test -z "$nonrevs"
+	dashdash=--
+	dashdash=
+	remap_to_ancestor=t
 rev_args=$(git rev-parse --revs-only "$@")
 case "$filter_subdir" in

File t/t7003-filter-branch.sh

View file
  • Ignore whitespace
 	test $orig_invariant = $(git rev-parse invariant)
+test_expect_success 'automatic remapping to ancestor with filename filters' '
+	git checkout master &&
+	git reset --hard A &&
+	test_commit add-foo2 foo 1 &&
+	git branch moved-foo2 &&
+	test_commit add-bar2 bar a &&
+	git branch invariant2 &&
+	orig_invariant=$(git rev-parse invariant2) &&
+	git branch moved-bar2 &&
+	test_commit change-foo2 foo 2 &&
+	git filter-branch -f \
+		moved-foo2 moved-bar2 A..master \
+		-- -- foo &&
+	test $(git rev-parse moved-foo2) = $(git rev-parse moved-bar2) &&
+	test $(git rev-parse moved-foo2) = $(git rev-parse master^) &&
+	test $orig_invariant = $(git rev-parse invariant2)
 test_expect_success 'setup submodule' '
 	rm -fr ?* .git &&
 	git init &&