* post-update script to update wc - version 2
@ 2007-06-27 2:05 Sam Vilain
2007-06-27 2:06 ` Sam Vilain
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Sam Vilain @ 2007-06-27 2:05 UTC (permalink / raw)
To: git
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, make this file executable by "chmod +x post-update".
git-update-server-info
export GIT_DIR=`cd $GIT_DIR; pwd`
[ `expr "$GIT_DIR" : '.*/\.git'` = 0 ] && exit 0
tree_in_revlog() {
ref=$1
tree=$2
found=$(
tail logs/$ref | while read commit rubbish
do
this_tree=`git-cat-file commit $commit | awk '/^tree/ { print $2; exit }'`
if [ "$this_tree" = "$tree" ]
then
echo $commit
fi
done
)
[ -n "$found" ] && true
}
for ref
do
active=`git-symbolic-ref HEAD`
if [ "$ref" = "$active" ]
then
echo "Pushing to checked out branch - updating working copy" >&2
success=
if ! (cd ..; git-diff-files) | grep -q .
then
# save the current index just in case
current_tree=`git-write-tree`
if tree_in_revlog $ref $current_tree
then
cd ..
if git-diff-index -R --name-status HEAD >&2 &&
git-diff-index -z --name-only --diff-filter=A HEAD | xargs -0r rm &&
git-reset --hard HEAD
then
success=1
else
echo "E:unexpected error during update" >&2
fi
else
echo "E:uncommitted, staged changes found" >&2
fi
else
echo "E:unstaged changes found" >&2
fi
if [ -z "$success" ]
then
(
echo "Non-bare repository checkout is not clean - not updating it"
echo "However I AM going to update the index. Any half-staged commit"
echo "in that checkout will be thrown away, but on the bright side"
echo "this is probably the least confusing thing for us to do and at"
echo "least we're not throwing any files somebody has changed away"
git-reset --mixed HEAD
echo
echo "This is the new status of the upstream working copy:"
git-status
) >&2
fi
fi
done
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: post-update script to update wc - version 2
2007-06-27 2:05 post-update script to update wc - version 2 Sam Vilain
@ 2007-06-27 2:06 ` Sam Vilain
2007-06-27 9:21 ` Alex Riesen
2007-06-27 7:54 ` Steven Grimm
2007-06-27 10:36 ` Johannes Schindelin
2 siblings, 1 reply; 9+ messages in thread
From: Sam Vilain @ 2007-06-27 2:06 UTC (permalink / raw)
To: Sam Vilain; +Cc: git
Sam Vilain wrote:
> this_tree=`git-cat-file commit $commit | awk '/^tree/ { print $2; exit }'`
Of course on newer git, `git-rev-parse $commit:` will do that.
Sam.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: post-update script to update wc - version 2
2007-06-27 2:05 post-update script to update wc - version 2 Sam Vilain
2007-06-27 2:06 ` Sam Vilain
@ 2007-06-27 7:54 ` Steven Grimm
2007-06-27 23:53 ` Sam Vilain
2007-06-27 10:36 ` Johannes Schindelin
2 siblings, 1 reply; 9+ messages in thread
From: Steven Grimm @ 2007-06-27 7:54 UTC (permalink / raw)
To: Sam Vilain; +Cc: git
Sam Vilain wrote:
> # An example hook script to prepare a packed repository for use over
> # dumb transports.
>
Maybe this comment isn't quite accurate any more?
-Steve
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: post-update script to update wc - version 2
2007-06-27 2:06 ` Sam Vilain
@ 2007-06-27 9:21 ` Alex Riesen
2007-06-27 10:09 ` Junio C Hamano
2007-06-27 22:45 ` Sam Vilain
0 siblings, 2 replies; 9+ messages in thread
From: Alex Riesen @ 2007-06-27 9:21 UTC (permalink / raw)
To: Sam Vilain; +Cc: Sam Vilain, git
On 6/27/07, Sam Vilain <sam@vilain.net> wrote:
> Sam Vilain wrote:
> > this_tree=`git-cat-file commit $commit | awk '/^tree/ { print $2; exit }'`
>
> Of course on newer git, `git-rev-parse $commit:` will do that.
>
Are you sure? Maybe you mean git-rev-parse "$commit"^{tree}?
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: post-update script to update wc - version 2
2007-06-27 9:21 ` Alex Riesen
@ 2007-06-27 10:09 ` Junio C Hamano
2007-06-27 12:43 ` Alex Riesen
2007-06-27 22:45 ` Sam Vilain
1 sibling, 1 reply; 9+ messages in thread
From: Junio C Hamano @ 2007-06-27 10:09 UTC (permalink / raw)
To: Alex Riesen; +Cc: Sam Vilain, Sam Vilain, git
"Alex Riesen" <raa.lkml@gmail.com> writes:
> On 6/27/07, Sam Vilain <sam@vilain.net> wrote:
>> Sam Vilain wrote:
>> > this_tree=`git-cat-file commit $commit | awk '/^tree/ { print $2; exit }'`
>>
>> Of course on newer git, `git-rev-parse $commit:` will do that.
>
> Are you sure? Maybe you mean git-rev-parse "$commit"^{tree}?
I had the same "Huh?" moment as you had, but what Sam said is
correct. He is being too clever to confuse us ;-).
When "$commit" is a tree-ish,
$commit:$path
is the name of the tree or blob object at that $path, and as
very strange special case, an empty $path is the whole tree.
It's been this way since early this year (before v1.5.0-rc1),
thanks to Jeff King.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: post-update script to update wc - version 2
2007-06-27 2:05 post-update script to update wc - version 2 Sam Vilain
2007-06-27 2:06 ` Sam Vilain
2007-06-27 7:54 ` Steven Grimm
@ 2007-06-27 10:36 ` Johannes Schindelin
2 siblings, 0 replies; 9+ messages in thread
From: Johannes Schindelin @ 2007-06-27 10:36 UTC (permalink / raw)
To: Sam Vilain; +Cc: git
Hi,
On Wed, 27 Jun 2007, Sam Vilain wrote:
> # An example hook script to prepare a packed repository for use over
> # dumb transports.
???
Ciao,
Dscho
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: post-update script to update wc - version 2
2007-06-27 10:09 ` Junio C Hamano
@ 2007-06-27 12:43 ` Alex Riesen
0 siblings, 0 replies; 9+ messages in thread
From: Alex Riesen @ 2007-06-27 12:43 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Sam Vilain, Sam Vilain, git
On 6/27/07, Junio C Hamano <gitster@pobox.com> wrote:
> "Alex Riesen" <raa.lkml@gmail.com> writes:
> > On 6/27/07, Sam Vilain <sam@vilain.net> wrote:
> >> Sam Vilain wrote:
> >> > this_tree=`git-cat-file commit $commit | awk '/^tree/ { print $2; exit }'`
> >>
> >> Of course on newer git, `git-rev-parse $commit:` will do that.
> >
> > Are you sure? Maybe you mean git-rev-parse "$commit"^{tree}?
>
> I had the same "Huh?" moment as you had, but what Sam said is
> correct. He is being too clever to confuse us ;-).
>
> When "$commit" is a tree-ish,
>
> $commit:$path
>
> is the name of the tree or blob object at that $path, and as
> very strange special case, an empty $path is the whole tree.
I didn't even see the colon. That's GMail, they obviously have
no idea what font should be used for the mail of a technical user.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: post-update script to update wc - version 2
2007-06-27 9:21 ` Alex Riesen
2007-06-27 10:09 ` Junio C Hamano
@ 2007-06-27 22:45 ` Sam Vilain
1 sibling, 0 replies; 9+ messages in thread
From: Sam Vilain @ 2007-06-27 22:45 UTC (permalink / raw)
To: Alex Riesen; +Cc: git
Alex Riesen wrote:
> On 6/27/07, Sam Vilain <sam@vilain.net> wrote:
>> Sam Vilain wrote:
>>> this_tree=`git-cat-file commit $commit | awk '/^tree/ { print $2; exit }'`
>> Of course on newer git, `git-rev-parse $commit:` will do that.
> Are you sure? Maybe you mean git-rev-parse "$commit"^{tree}?
Ah, I missed that on the git-rev-parse man page. Much better!
Sam.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: post-update script to update wc - version 2
2007-06-27 7:54 ` Steven Grimm
@ 2007-06-27 23:53 ` Sam Vilain
0 siblings, 0 replies; 9+ messages in thread
From: Sam Vilain @ 2007-06-27 23:53 UTC (permalink / raw)
To: Steven Grimm; +Cc: Sam Vilain, git
Steven Grimm wrote:
> Sam Vilain wrote:
>> # An example hook script to prepare a packed repository for use over
>> # dumb transports.
>>
> Maybe this comment isn't quite accurate any more?
Ok that should read something like
# This hook does two things:
#
# 1. update the "info" files that allow the list of references to be
# queries over dumb transports such as http
#
# 2. if this repository looks like it is a non-bare repository, and
# the checked-out branch is pushed to, then update the working copy.
# This makes "push" and "pull" symmetric operations as in darcs and
# bzr.
Sam.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-06-27 23:53 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-27 2:05 post-update script to update wc - version 2 Sam Vilain
2007-06-27 2:06 ` Sam Vilain
2007-06-27 9:21 ` Alex Riesen
2007-06-27 10:09 ` Junio C Hamano
2007-06-27 12:43 ` Alex Riesen
2007-06-27 22:45 ` Sam Vilain
2007-06-27 7:54 ` Steven Grimm
2007-06-27 23:53 ` Sam Vilain
2007-06-27 10:36 ` Johannes Schindelin
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).