2012/2/5 Jakub Narebski <jnareb@xxxxxxxxx>: >> Being able to mark temporary, out of sequence or other hacks as Secret could >> be useful, as would recording where Public commits had been sent. > > Marking as 'secret' must I think be explicit, but I think 'public' phase > should be inferred from remote-tracking branches. The idea of phases is > to allow UI to ask about status of commits: can we amend / rebase it or > not, can we push it or not. I agree that the 'public' state should (by default) be automatically inferred from remote-tracking branches. As it stands, we can do this with current git, by writing a pre-rebase hook that checks if any of the commits to-be-rebased are reachable from any remote-tracking branch. Unfortunately, the pre-rebase hook only affects 'git rebase', and in order to do the same check on 'git commit --amend' you'd have to write a similar pre-commit hook (don't know how easy it is to find the amended commit from within the hook). Maybe we should add a pre-rewrite hook that trigger in the same situations as the post-rewrite hook. This should take care of the simplest 'public' use case in a push-based workflow. If you publish commits by other means (send-email, bundles, pulling directly from your repo), you need some other way to mark the 'public' commits. One solution would be using 'git notes' to annotate the 'public' commits on a 'refs/notes/public' notes ref. Your pre-rebase/pre-rewrite hook should then check if any of the commits to-be-rewritten are reachable from any commit annotated as 'public'. Also, if you want to record where 'public' commits have been sent (other than what can be inferred from the remote-tracking branches), you could write this into the refs/notes/public annotation. As for 'secret' commits, you could annotate these on a refs/notes/secret notes ref, and then teach 'git push' (or whatever other method for publishing commits you use) to refuse to publish commits annotated on this notes ref. Possibly we would want to add a "pre-push" or "pre-publish" hook. Have fun! :) ...Johan -- Johan Herland, <johan@xxxxxxxxxxx> www.herland.net -- 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