I am building a small git wrapper around puppet, and one of the actions it performs is auto-fastforwarding of branches without checking them out. In simplified code... we ensure that we are on a head called master, and in some cases "ppg commit", will commit to master and... ## early on # sanity-check we are on master headname=$(git rev-parse --symbolic-full-name --revs-only HEAD) if [ "$headname" -ne "refs/heads/headname" ]; then echo >&2 "ERROR: can only issue --immediate commit from the master branch!" exit 1 fi ## then git commit -bla blarg baz ## and then... # ensure we can ff head_sha1=$(git rev-parse --revs-only master) mb=$(git merge-base $production_sha1 refs/heads/master) if [[ "$mb" -ne "$production_sha1" ]]; then echo >&2 "ERROR: cannot fast-forward master to production" exit 1 fi $GIT_EXEC_PATH/git-update-ref -m "ppg immediate commit" refs/heads/production $head_sha1 $production_sha1 || exit 1 Are there major pitfalls in this approach? I cannot think of any, but git has stayed away from updating my local tracking branches; so maybe there's a reason for that... cheers, m -- martin.langhoff@xxxxxxxxx - ask interesting questions - don't get distracted with shiny stuff - working code first ~ http://docs.moodle.org/en/User:Martin_Langhoff -- 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