This reverts commit cfabd6eee1745cfec58cfcb794ce8847e43b888a. 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@xxxxxxxxxx> --- On Sunday 25 May 2008 23:23, Linus Torvalds wrote: > On Sun, 25 May 2008, Johannes Sixt wrote: > > The history was this: > > > > C--M > > / / > > A--B > > > > Now assume that both B and C change a, but so that it is identical in > > both B and C. I thought that --full-history makes a difference *only* for > > this case, because without --full-history the revision walk would choose > > either B or C (not quite at random, but in an unspecified manner), but > > not both; but with --full-history the revision walk would go both paths. > > You mis-understood what --full history does. Yes, indeed. Thank you for your explanations. I'm not prepared to dive into the revision walk manchinery, so I instead propose to just remove --full-history from git-filter-branch. -- Hannes git-filter-branch.sh | 2 +- t/t7003-filter-branch.sh | 13 ++----------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 80e99e5..d04c346 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -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 " ") diff --git a/t/t7003-filter-branch.sh b/t/t7003-filter-branch.sh index 1639c7a..3577aa6 100755 --- a/t/t7003-filter-branch.sh +++ b/t/t7003-filter-branch.sh @@ -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 && @@ -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' ' -- 1.5.6.rc0.17.gbc20 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html