Teach filter-branch about subdirectory filtering

With git-filter-branch --subdirectory-filter <subdirectory> you can
get at the history, as seen by a certain subdirectory. The history
of the rewritten branch will only contain commits that touched that
subdirectory, and the subdirectory will be rewritten to be the new
project root.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin
2007-06-08 01:30:35 +01:00
committed by Junio C Hamano
parent 3520e1e868
commit 685ef546b6
2 changed files with 54 additions and 3 deletions

View File

@ -54,4 +54,28 @@ test_expect_success 'common ancestor is still common (unchanged)' '
test "$(git-merge-base modD D)" = "$(git-rev-parse B)"
'
test_expect_success 'filter subdirectory only' '
mkdir subdir &&
touch subdir/new &&
git add subdir/new &&
test_tick &&
git commit -m "subdir" &&
echo H > a &&
test_tick &&
git commit -m "not subdir" a &&
echo A > subdir/new &&
test_tick &&
git commit -m "again subdir" subdir/new &&
git rm a &&
test_tick &&
git commit -m "again not subdir" &&
git-filter-branch --subdirectory-filter subdir sub
'
test_expect_success 'subdirectory filter result looks okay' '
test 2 = $(git-rev-list sub | wc -l) &&
git show sub:new &&
! git show sub:subdir
'
test_done