git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Add test for filter-branch on a subdirectory that's been added and deleted and re-added

From
Kevin Ballard <kevin@sb.org>
Date
Mar 8, 2008, 20:39 UTC
Message-ID
<E6873C4A-ACCC-4E51-B32E-41F1AAA56339@sb.org>
In-Reply-To
<7vejalt12h.fsf@gitster.siamese.dyndns.org>
On Mar 8, 2008, at 3:25 PM, Junio C Hamano wrote:
> This will hopefully be the final version.

Assuming that the lack of a GIT_INDEX_FILE doesn't break git-checkout- index, git-diff-index, git-update-index, or anything that an --index- filter might run (I assume it doesn't, but I didn't test all the relevant commands), then this looks fine by me.

-Kevin
Show 82 quoted lines
>
> -- >8 --
> filter-branch: handle "disappearing tree" case correctly in subdir  
> filter
>
> The subdirectory filter had a bug to notice that the commit in  
> question
> did not have anything in the path-limited part of the tree.  $commit: 
> $path
> does not name an empty tree when $path does not appear in $commit.
>
> This should fix it.  The additional test in t7003 is originally from  
> Kevin
> Ballard but with fixups.
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
>
> * -f is needed because the previous one is about aborting the filter  
> and
>    leaving the "original" namespace.
>
> git-filter-branch.sh     |   11 ++++++++++-
> t/t7003-filter-branch.sh |   24 ++++++++++++++++++++++++
> 2 files changed, 34 insertions(+), 1 deletions(-)
>
> diff --git a/git-filter-branch.sh b/git-filter-branch.sh
> index 49e13f0..010353a 100755
> --- a/git-filter-branch.sh
> +++ b/git-filter-branch.sh
> @@ -252,7 +252,16 @@ while read commit parents; do
> 		git read-tree -i -m $commit
> 		;;
> 	*)
> -		git read-tree -i -m $commit:"$filter_subdir"
> +		# The commit may not have the subdirectory at all
> +		err=$(git read-tree -i -m $commit:"$filter_subdir" 2>&1) || {
> +			if ! git rev-parse --verify $commit:"$filter_subdir" 2>/dev/null
> +			then
> +				rm -f "$GIT_INDEX_FILE"
> +			else
> +				echo >&2 "$err"
> +				false
> +			fi
> +		}
> 	esac || die "Could not initialize the index"
>
> 	GIT_COMMIT=$commit
> diff --git a/t/t7003-filter-branch.sh b/t/t7003-filter-branch.sh
> index 868babc..6e14bf1 100755
> --- a/t/t7003-filter-branch.sh
> +++ b/t/t7003-filter-branch.sh
> @@ -179,4 +179,28 @@ test_expect_success 'Name needing quotes' '
>
> '
>
> +test_expect_success 'Subdirectory filter with disappearing trees' '
> +	git reset --hard &&
> +	git checkout master &&
> +
> +	mkdir foo &&
> +	touch foo/bar &&
> +	git add foo &&
> +	test_tick &&
> +	git commit -m "Adding foo" &&
> +
> +	git rm -r foo &&
> +	test_tick &&
> +	git commit -m "Removing foo" &&
> +
> +	mkdir foo &&
> +	touch foo/bar &&
> +	git add foo &&
> +	test_tick &&
> +	git commit -m "Re-adding foo" &&
> +
> +	git filter-branch -f --subdirectory-filter foo &&
> +	test $(git rev-list master | wc -l) = 3
> +'
> +
> test_done
>
-- 
Kevin Ballard
http://kevin.sb.org
kevin@sb.org
http://www.tildesoft.com
Previous: Junio C Hamano
Message 7 of 7 in “Add test for filter-branch on a subdirectory that's been added and deleted and re-added”
  1. Add test for filter-branch on a subdirectory that's been added and deleted and re-addedKevin Ballard, Mar 8, 2008
  2. Kevin BallardMar 8, 2008
  3. Junio C HamanoMar 8, 2008
  4. Kevin BallardMar 8, 2008
  5. Re* [PATCH] Add test for filter-branch on a subdirectory that's been added and deleted and re-addedJunio C Hamano, Mar 8, 2008
  6. Junio C HamanoMar 8, 2008
  7. Kevin BallardMar 8, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.