All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maaartin <grajcar1@seznam.cz>
To: git@vger.kernel.org
Subject: Re: Commiting automatically
Date: Sun, 10 Oct 2010 19:23:56 +0000 (UTC)	[thread overview]
Message-ID: <loom.20101010T212207-709@post.gmane.org> (raw)
In-Reply-To: AANLkTimpyTVe+OhYRhsV3H8TGahgsASOPAZRqwR=V6od@mail.gmail.com

On 10-09-25 12:05, Alex Riesen wrote:
> On Fri, Sep 24, 2010 at 22:43, Maaartin <grajcar1@seznam.cz> 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
======

  reply	other threads:[~2010-10-10 19:24 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-24 20:43 Commiting automatically Maaartin
2010-09-25  8:01 ` Ramkumar Ramachandra
2010-09-25 10:05 ` Alex Riesen
2010-10-10 19:23   ` Maaartin [this message]
2010-10-10 21:11     ` Matthieu Moy

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=loom.20101010T212207-709@post.gmane.org \
    --to=grajcar1@seznam.cz \
    --cc=git@vger.kernel.org \
    /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.