threads / discuss / 21080

Getting a list of last commit's files and piping them..

Subject: Getting a list of last commit's files and piping them..

## tl;dr

3 messages between Sep 28, 2009 and Sep 28, 2009.

replies: 2people: 3as markdown or json

Ahmed Nuaman, Freelance Designer and Developer· Sep 28, 2009, 13:02 UTC · lore
Hey,

I use git for a local versioning system and was wondering if there was a way that I could write a bash script that would get the paths of the files from the latest commit and then pipe them to ftp or ssh for deployment.

-- 
All the best,

Ahmed Nuaman
Freelance Designer and Developer
+44 (0) 7811 184 436
ahmed@ahmednuaman.com
www.ahmednuaman.com
Johannes Schindelin· Sep 28, 2009, 14:01 UTC · re: Ahmed Nuaman, Freelance Designer and Developer · lore

Re: Getting a list of last commit's files and piping them..

Hi,
On Mon, 28 Sep 2009, Ahmed Nuaman, Freelance Designer and Developer wrote:
> I use git for a local versioning system and was wondering if there was a 
> way that I could write a bash script that would get the paths of the 
> files from the latest commit and then pipe them to ftp or ssh for 
> deployment.
If you mean all the files that were touched by the last commit:
	git diff --name-only HEAD^..
If you mean all the files of the latest revision:
	git ls-tree --name-only -r HEAD

Both commands take -z options in which case they delimit the names with NULs for better parsability.

Hth, Dscho

Christian Himpel· Sep 28, 2009, 14:13 UTC · re: Ahmed Nuaman, Freelance Designer and Developer · lore

Re: Getting a list of last commit's files and piping them..

On Mon, Sep 28, 2009 at 02:02:52PM +0100, Ahmed Nuaman, Freelance Designer and Developer wrote:
> I use git for a local versioning system and was wondering if there was a
> way that I could write a bash script that would get the paths of the files
> from the latest commit and then pipe them to ftp or ssh for deployment.

For example, to scp a complete file list from branch `topic' to `user@server', you could use `rsync' and do something like:

git checkout topic && git ls-tree -r --name-only | rsync -a -e ssh --files-from=- user@server:/path/to/dest

Note, that this is completely untested.  Use at your own risk.

Regards, chressie

← back to recent threads