From: Hao Wang <billhao@gmail.com>
To: Jeff King <peff@peff.net>
Cc: Neal Kreitzinger <nkreitzinger@gmail.com>, git@vger.kernel.org
Subject: Re: process committed files in post-receive hook
Date: Thu, 15 Dec 2011 00:19:08 -0800 [thread overview]
Message-ID: <4EE9AD7C.5080107@gmail.com> (raw)
In-Reply-To: <20111215072301.GC1327@sigill.intra.peff.net>
> If you are scripting, we usually encourage the use of "plumbing"
> commands whose output is guaranteed not to change ("show" is a
> "porcelain" command intended to be used by end-users, and it's possible
> that its behavior might change from version to version).
>
> The plumbing command to get a directory listing for a tree is "git
> ls-tree" (try the "--name-only" option for terse output, and use "-z" if
> you want to be robust in the face of filenames with funny characters).
Jeff, thank you for the information. This is really helpful.
>> # get a list of rule files using git show
>> def getRuleFileList(rev):
>> # run git show
>> p = subprocess.Popen(['git', 'show', rev], stdout=subprocess.PIPE)
>> p.wait()
>> if p.returncode != 0: return None # error
>>
>> # parse output
>> i = 0
>> filelist = []
>> for line in p.stdout.readlines():
>> filelist.append(line)
>> p.stdout.close()
>> return filelist
>
> Doesn't this put "tree HEAD:foo", as printed by "git show", at the top
> of your filelist? Another reason to use ls-tree.
Yes, the first two items ("tree HEAD:foo" and an empty line) are removed
later from filelist.
Hao
prev parent reply other threads:[~2011-12-15 8:19 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-10 10:29 process committed files in post-receive hook Hao
2011-12-10 11:21 ` Michael Schubert
2011-12-10 12:06 ` Ivan Heffner
2011-12-10 21:31 ` Alexey Shumkin
2011-12-15 1:04 ` Neal Kreitzinger
2011-12-15 2:02 ` Hao Wang
2011-12-15 7:23 ` Jeff King
2011-12-15 8:19 ` Hao Wang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EE9AD7C.5080107@gmail.com \
--to=billhao@gmail.com \
--cc=git@vger.kernel.org \
--cc=nkreitzinger@gmail.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.