threads / patch / 14604

patchDocumentation/git-filter-branch: Remove Useless Use of Plumbing

Subject: [PATCH] Documentation/git-filter-branch: Remove Useless Use of Plumbing

## tl;dr

3 messages between Jul 22, 2008 and Jul 23, 2008. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Petr Baudis· Jul 22, 2008, 22:24 UTC · lore
The example to remove file using index-filter uses git update-index
 --remove where git rm --cached works as well.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
 Documentation/git-filter-branch.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to Documentation/git-filter-branch.txt +1 −1
diff --git a/Documentation/git-filter-branch.txt b/Documentation/git-filter-branch.txt
index a3edc00..7ba9dab 100644
--- a/Documentation/git-filter-branch.txt
+++ b/Documentation/git-filter-branch.txt
@@ -191,7 +191,7 @@ Thus you may instead want to use `rm -f filename` as the script.
 A significantly faster version:
 
 --------------------------------------------------------------------------
-git filter-branch --index-filter 'git update-index --remove filename' HEAD
+git filter-branch --index-filter 'git rm --cached filename' HEAD
 --------------------------------------------------------------------------
 
 Now, you will get the rewritten history saved in HEAD.
Junio C Hamano· Jul 23, 2008, 00:05 UTC · re: Petr Baudis · lore

Re: [PATCH] Documentation/git-filter-branch: Remove Useless Use of Plumbing

Petr Baudis <pasky@suse.cz> writes:
> The example to remove file using index-filter uses git update-index
>  --remove where git rm --cached works as well.

I am not sure "works as well" is a good enough justification to choose a Porcelain command over a plumbing command in this particular context. After all, filter-branch is a scripting enviornment, isn't it?

There also is another subtle difference. "git rm" takes pathspecs while "update-index" takes paths.

So after running one of these commands:
	$ git rm --cached 'Makefil?'
	$ git update-index --force-remove 'Makefil?'
output from:
	$ git diff --cached --stat
would be different.
Petr Baudis· Jul 23, 2008, 22:02 UTC · re: Junio C Hamano · lore

Re: [PATCH] Documentation/git-filter-branch: Remove Useless Use of Plumbing

On Tue, Jul 22, 2008 at 05:05:07PM -0700, Junio C Hamano wrote:
Show 8 quoted lines
> Petr Baudis <pasky@suse.cz> writes:
> 
> > The example to remove file using index-filter uses git update-index
> >  --remove where git rm --cached works as well.
> 
> I am not sure "works as well" is a good enough justification to choose a
> Porcelain command over a plumbing command in this particular context.
> After all, filter-branch is a scripting enviornment, isn't it?

But one of the few that are regularly used even by "mere users", who would be probably put off unnecessarily by using this mysterious command. (We might also say that I'm testing Dscho's suggestions, though this patch was of course provoked by a "huh" of a user I was helping.)

Show 13 quoted lines
> There also is another subtle difference.  "git rm" takes pathspecs while
> "update-index" takes paths.
> 
> So after running one of these commands:
> 
> 	$ git rm --cached 'Makefil?'
> 	$ git update-index --force-remove 'Makefil?'
> 
> output from:
> 
> 	$ git diff --cached --stat
> 
> would be different.

I don't think this is relevant for the example in question. Users are as likely to be bit by or take advantage of this as by regular git rm usage.

-- 
				Petr "Pasky" Baudis
As in certain cults it is possible to kill a process if you know
its true name.  -- Ken Thompson and Dennis M. Ritchie

← back to recent threads