git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Determining if a file exists in a bare repo
@ 2010-05-04 16:11 Adam Mercer
  2010-05-04 16:18 ` Jacob Helwig
  2010-05-04 16:39 ` Junio C Hamano
  0 siblings, 2 replies; 5+ messages in thread
From: Adam Mercer @ 2010-05-04 16:11 UTC (permalink / raw)
  To: git

Hi

I'm trying to write a post-receive hook that generates some HTML files
from reStructured text files stored in a repository. Essentially I'm
doing this with

git show master:INSTALL | rst2html --no-raw --no-file-insertion >
/path/to/INSTALL.html

However I would like this script to fail gracefully if the INSTALL
file is not available in the repository so would like to check if this
file exists. The problem I'm having is that git-show seems to return a
zero return code even if the file you request doesn't exist, e.g.:

$ git show master:NoneExistantFile
fatal: ambiguous argument 'master:NoneExistantFile': unknown revision
or path not in the working tree.
Use '--' to separate paths from revisions
$ echo $?
0
$

is there another, scriptable, way to determine if a given file exists
in a given branch of a bare repository?

Cheers

Adam

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Determining if a file exists in a bare repo
  2010-05-04 16:11 Determining if a file exists in a bare repo Adam Mercer
@ 2010-05-04 16:18 ` Jacob Helwig
  2010-05-04 16:26   ` Adam Mercer
  2010-05-04 16:39 ` Junio C Hamano
  1 sibling, 1 reply; 5+ messages in thread
From: Jacob Helwig @ 2010-05-04 16:18 UTC (permalink / raw)
  To: Adam Mercer; +Cc: git

On Tue, May 4, 2010 at 09:11, Adam Mercer <ramercer@gmail.com> wrote:
> Hi
>
> I'm trying to write a post-receive hook that generates some HTML files
> from reStructured text files stored in a repository. Essentially I'm
> doing this with
>
> git show master:INSTALL | rst2html --no-raw --no-file-insertion >
> /path/to/INSTALL.html
>
> However I would like this script to fail gracefully if the INSTALL
> file is not available in the repository so would like to check if this
> file exists. The problem I'm having is that git-show seems to return a
> zero return code even if the file you request doesn't exist, e.g.:
>
> $ git show master:NoneExistantFile
> fatal: ambiguous argument 'master:NoneExistantFile': unknown revision
> or path not in the working tree.
> Use '--' to separate paths from revisions
> $ echo $?
> 0
> $
>
> is there another, scriptable, way to determine if a given file exists
> in a given branch of a bare repository?
>
> Cheers
>
> Adam

What about using "git ls-tree master" to get a file listing?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Determining if a file exists in a bare repo
  2010-05-04 16:18 ` Jacob Helwig
@ 2010-05-04 16:26   ` Adam Mercer
  0 siblings, 0 replies; 5+ messages in thread
From: Adam Mercer @ 2010-05-04 16:26 UTC (permalink / raw)
  To: Jacob Helwig; +Cc: git

On Tue, May 4, 2010 at 11:18, Jacob Helwig <jacob.helwig@gmail.com> wrote:

> What about using "git ls-tree master" to get a file listing?

Good idea, thanks that seems to do the trick.

Cheers

Adam

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Determining if a file exists in a bare repo
  2010-05-04 16:11 Determining if a file exists in a bare repo Adam Mercer
  2010-05-04 16:18 ` Jacob Helwig
@ 2010-05-04 16:39 ` Junio C Hamano
  2010-05-04 16:57   ` Adam Mercer
  1 sibling, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2010-05-04 16:39 UTC (permalink / raw)
  To: Adam Mercer; +Cc: git

Adam Mercer <ramercer@gmail.com> writes:

> Hi
>
> I'm trying to write a post-receive hook that generates some HTML files
> from reStructured text files stored in a repository. Essentially I'm
> doing this with
>
> git show master:INSTALL | rst2html --no-raw --no-file-insertion >
> /path/to/INSTALL.html
>
> However I would like this script to fail gracefully if the INSTALL
> file is not available in the repository so would like to check if this
> file exists. The problem I'm having is that git-show seems to return a
> zero return code even if the file you request doesn't exist

Even if it returned an error status, you are discarding it by placing the
process on the upstream side of the pipe, so your command line above won't
be able to catch an error anyway.  I would probably do something like this
if I were you:

    git rev-parse --verify master:INSTALL >/dev/null 2>&1 &&
    git cat-file blob master:INSTALL | rst2...

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Determining if a file exists in a bare repo
  2010-05-04 16:39 ` Junio C Hamano
@ 2010-05-04 16:57   ` Adam Mercer
  0 siblings, 0 replies; 5+ messages in thread
From: Adam Mercer @ 2010-05-04 16:57 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Tue, May 4, 2010 at 11:39, Junio C Hamano <gitster@pobox.com> wrote:

> Even if it returned an error status, you are discarding it by placing the
> process on the upstream side of the pipe, so your command line above won't
> be able to catch an error anyway.

Sorry I wasn't very clear, first I trying to use git-show if the file
existed and then piping the output to rst2html...

> I would probably do something like this
> if I were you:
>
>    git rev-parse --verify master:INSTALL >/dev/null 2>&1 &&
>    git cat-file blob master:INSTALL | rst2...

Thanks, thats a better approach!

Cheers

Adam

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-05-04 16:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-04 16:11 Determining if a file exists in a bare repo Adam Mercer
2010-05-04 16:18 ` Jacob Helwig
2010-05-04 16:26   ` Adam Mercer
2010-05-04 16:39 ` Junio C Hamano
2010-05-04 16:57   ` Adam Mercer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).