Hi, On Tue, 13 Mar 2007, Shawn O. Pearce wrote: > David Tweed <david.tweed@xxxxxxxxx> wrote: > > A question for those who understand things: I stash the last written > > _tree_'s hash in a tag and then when a new "commit's" directory tree > > is written starts look to see if it's the same SHA value. If it is I > > know I can avoid the commit. At the moment I'm using > > > > if os.path.exists(lastTreeFile) and > > tree==open(lastTreeFile,"r").read()[:40]: > > > > to be safe just in case a user, eg, goes mad and manually deletes that > > record. Clearly this is going to hit trouble if git ever decides to > > put this tag into a packed refs file. > > Is there any neat way of using builtin stuff like git-rev-parse to ask > > if a ref has a given SHA1 value and return an easily parsed yes/no > > answer? > > The common idiom if you want to compare trees to see if you > need to make a commit is: > > oldc=`git rev-parse $tagname^{commit}` > oldt=`git rev-parse $oldc^{tree}` > newt`git write-tree` new=`git write-tree` > if [ X$oldt = X$newt ]; then > : nothing to save > else > newc=`git commit-tree $newt -p $oldc` > git update-ref $tagname $newc $oldc > fi > > Yes, a little ugly. But its safe; if another program were to > alter the value of $tagname (e.g. "git branch -f", "git tag -f") > while your script is running the update-ref in the else will fail, > letting you know that $tagname changed in the process. Ciao, Dscho - 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