On Sat, Mar 02, 2013 at 12:18:59AM +0100, David Madore wrote: > I'd like to suggest a very simple, but IMHO quite useful, additional > option to git-update-ref: an option --ff-only which would cause the > command to refuse unless the current ref is an ancestor of the new > one. > > The reason I think it would be useful: I occasionally wish to perform > a trivial (i.e., fast-forward) merge of some branch into another > (e.g., after a git-fetch) without checking it out. Now git-update-ref > is perfect for that, but there is always the possibility of getting > something wrong (which one would not have with git merge --ff-only, > but the latter requires checking out the branch), and this option > would avoid tedious verifications. The update-ref command is plumbing, which is supposed to do one small, well-defined job. But you can compose many plumbing commands to do what you want: # input ref=refs/heads/master new=$some_sha1 # where are we now? old=`git rev-parse --verify $ref` || exit 1 # is it a fast-forward? if ! git merge-base --is-ancestor $old $new; then echo >&2 "Not a fast-forward" exit 1 fi # update it; we do not have to worry about race conditions because # update-ref will abort if somebody touched the ref in the meantime git update-ref $ref $new $old Yes, it's three commands instead of one, but it's much more flexible (you get to write your own message, you can use the same "merge-base" to handle the "already up to date" case, etc). -Peff -- 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