Re: Commiting automatically

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10-09-25 12:05, Alex Riesen wrote:
> On Fri, Sep 24, 2010 at 22:43, Maaartin <grajcar1@xxxxxxxxx> wrote:
>> I'm going to run periodically a process which uses the current working tree 
and
>> I'd like to protocol what happens. As a part of the protocol I need the exact
>> state of the working tree and that's what is git good for, right? But it must
>> neither disturb my normal workflow nor interfere with my ordinal commits. I
>> could probably use something like
>
> Try using low-level git commands (the "plumbing").
> Take a look at GIT_INDEX_FILE environment variable and
> "git write-tree", "git commit-tree" and "git update-ref", in
> addition to "git add".
> 
> I.e. (untested):
> 
>   $ (
>   export GIT_INDEX_FILE=.git/myindex
>   git add . &&
>   tree=$(git write-tree) &&
>   commit=$(date |git commit-tree $tree -p protocol) &&
>   git update-ref -m autolog protocol $commit
>   )

Based on this, I've created a simple script "git-autocom" which seems to work 
somehow. In order to test it place both attachments in a new directory and run 
"test-git-autocom". The test creates a new working tree with a repository and 
some commits and then invokes "git-autocom".

A branch autocom gets created, but I'm quite unsure if it's correct. I see a 
problem in case the script runs with the branch autocom checked out. Maybe a 
tag could be better or whatever.

I see I can attach no files here in http://post.gmane.org

So I placed them in
http://dl.dropbox.com/u/4971686/101010/git-autocom
and
http://dl.dropbox.com/u/4971686/101010/test-git-autocom
and copied them here as well (I hope there's a better way).

====== git-autocom
#!/bin/sh
message="autocom $(date)"
head=$(git show-ref -s --head HEAD)

# the first parent should be autocom
parent1="-p $(git show-ref -s refs/heads/autocom)"
# needed for the very first use
test -f .git/refs/heads/autocom || parent1=""
# the second parent should be the current head
parent2="-p $head"
# make sure not giving the same parent twice
test "$parent1" = "$parent2" && parent1=""

#temporary index
export GIT_INDEX_FILE=.git/autocom.tmp

git add -A &&
tree=$(git write-tree) &&
commit=$(echo "$message" | git commit-tree $tree $parent1 $parent2) &&
git update-ref -m "$message" refs/heads/autocom $commit
====== test-git-autocom
#!/bin/sh

/bin/rm -fR testtree 2>/dev/null
mkdir testtree &&
cd testtree && 
git init && 
echo a > a &&
git add -A && git commit -m "a" &&
echo b > b &&
git add -A && git commit -m "b" &&
echo c > c &&
/bin/rm b &&
git add -A &&
/bin/rm a &&
echo "preparation OK" &&
../git-autocom &&
echo "autocom OK" &&
git log &&
git log autocom
======


--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]