Skip to contentSkip to conversation

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

PATCH In review Petr Baudis 2 participants 3 messages Jun 15, 2016 Documentation

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Documentation/git-filter-branch: Remove Useless Use of Plumbing

The example to remove file using index-filter uses git update-index
--remove where git rm --cached works as well.

---

 Documentation/git-filter-branch.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Documentation/git-filter-branch.txt +1 -1
index a3edc00..7ba9dab 100644
@@ -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.
#1 lore raw
Quoted 2 lines · Petr Baudis

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.

#2 lore raw
Quoted 8 lines · Junio C Hamano
Quoted 2 lines · Petr Baudis

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.)

Quoted 5 lines

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

So after running one of these commands:

Quoted 8 lines
	$ 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.

Signature · 3 lines
				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