Skip to content

Commit

Permalink
Revert "filter-branch: subdirectory filter needs --full-history"
Browse files Browse the repository at this point in the history
This reverts commit cfabd6e. I had
implemented it without understanding what --full-history does. Consider
this history:

    C--M--N
   /  /  /
  A--B  /
   \   /
    D-/

where B and C modify a path, X, in the same way so that the result is
identical, and D does not modify it at all. With the path limiter X and
without --full-history this is simplified to

   A--B

i.e. only one of the paths via B or C is chosen. I had assumed that
--full-history would keep both paths like this

    C--M
   /  /
  A--B

removing the path via D; but in fact it keeps the entire history.

Currently, git does not have the capability to simplify to this
intermediary case. However, the other extreme to keep the entire history
is not wanted either in usual cases. I think we can expect that histories
like the above are rare, and in the usual cases we want a simplified
history. So let's remove --full-history again.

(Concerning t7003, subsequent tests depend on what the test case sets up,
so we can't just back out the entire test case.)

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Johannes Sixt authored and Junio C Hamano committed May 28, 2008
1 parent 049c1ad commit a17171b
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 12 deletions.
2 changes: 1 addition & 1 deletion git-filter-branch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ case "$filter_subdir" in
;;
*)
git rev-list --reverse --topo-order --default HEAD \
--parents --full-history "$@" -- "$filter_subdir"
--parents "$@" -- "$filter_subdir"
esac > ../revs || die "Could not get the commits"
commits=$(wc -l <../revs | tr -d " ")

Expand Down
13 changes: 2 additions & 11 deletions t/t7003-filter-branch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ test_expect_success 'subdirectory filter result looks okay' '
test_must_fail git show sub:subdir
'

test_expect_success 'setup and filter history that requires --full-history' '
test_expect_success 'more setup' '
git checkout master &&
mkdir subdir &&
echo A > subdir/new &&
Expand All @@ -107,16 +107,7 @@ test_expect_success 'setup and filter history that requires --full-history' '
git rm a &&
test_tick &&
git commit -m "again subdir on master" &&
git merge branch &&
git branch sub-master &&
git-filter-branch -f --subdirectory-filter subdir sub-master
'

test_expect_success 'subdirectory filter result looks okay' '
test 3 = $(git rev-list -1 --parents sub-master | wc -w) &&
git show sub-master^:new &&
git show sub-master^2:new &&
test_must_fail git show sub:subdir
git merge branch
'

test_expect_success 'use index-filter to move into a subdirectory' '
Expand Down

0 comments on commit a17171b

Please sign in to comment.