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` 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. -- Shawn. - 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