threads / discuss / 2939

git-inject-tarball

Subject: git-inject-tarball

## tl;dr

4 messages between Dec 28, 2005 and Dec 28, 2005.

replies: 3people: 3as markdown or json

Anand Kumria· Dec 28, 2005, 02:40 UTC · lore
Hi,

In the Everyday commands[1], there is an example of of extracting a tarball and then working with it. I'm finding that I'm doing this fairly often -- I was just wondering if anyone had anything like a 'git-inject-tarball' script they'd written up.

Thanks, Anand

[1]: http://www.kernel.org/pub/software/scm/git/docs/everyday.html
Johannes Schindelin· Dec 28, 2005, 11:42 UTC · re: Anand Kumria · lore

Re: git-inject-tarball

Hi,
On Wed, 28 Dec 2005, Anand Kumria wrote:
Show 7 quoted lines
> 
> Hi,
> 
> In the Everyday commands[1], there is an example of of extracting a
> tarball and then working with it.  I'm finding that I'm doing this fairly
> often -- I was just wondering if anyone had anything like a
> 'git-inject-tarball' script they'd written up.
Something like this?

-- snip -- #!/bin/sh

TARFILE="$1" test -z "$TARFILE" && TARFILE=-

git-ls-files -z | xargs -0 rm tar xvf "$TARFILE" | xargs git add git-update-index --remove $(git-ls-files) -- snap --

Notes:
	- this updates the index to match the given tarfile, you still 
	  have to commit yourself
	- it does not handle compressed tarfiles (you have to do something
	  like "cat bla.tar.gz | gzip -d | sh git-untar.sh")
	- it does not remove empty directories (i.e. if the current index 
	  contains a file "a/b", and the tarfile does not, and the
	  directory "a" is now empty, this is not handled)
	- usually, tarfiles contain files inside a subdirectory. There is
	  no facility to strip the subdirectory

Hth, Dscho

Simon Richter· Dec 28, 2005, 15:51 UTC · re: Johannes Schindelin · lore

Re: git-inject-tarball

Hi,
Johannes Schindelin wrote:
> Something like this?
Show 10 quoted lines
> -- snip --
> #!/bin/sh
> 
> TARFILE="$1"
> test -z "$TARFILE" && TARFILE=-
> 
> git-ls-files -z | xargs -0 rm
> tar xvf "$TARFILE" | xargs git add
> git-update-index --remove $(git-ls-files)
> -- snap --

Well, the most important thing for such a tool IMO would be that it wouldn't overwrite any uncommitted changes, so it's not as trivial as it seems.

    Simon
Johannes Schindelin· Dec 28, 2005, 16:18 UTC · re: Simon Richter · lore

Re: git-inject-tarball

Hi,
On Wed, 28 Dec 2005, Simon Richter wrote:
> Well, the most important thing for such a tool IMO would be that it wouldn't
> overwrite any uncommitted changes, so it's not as trivial as it seems.
Ah, but that's easy:
	test -z "$(git-diff-index --name-only HEAD)" || exit 1
(This is just the idea; you should also output an error message.)

Hth, Dscho

← back to recent threads