Re: git and peer review
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- May 19, 2008, 03:37 UTC
- Message-ID
- <20080519033736.GZ29038@spearce.org>
- In-Reply-To
- <20080517213039.GR396@ziti.local>
Seth Falcon <seth@userprimary.net> wrote:
Show 7 quoted lines
> What I would like is a way for the script to determine the appropriate > tracking branch. So that the usage would look like: > > git mark-reviewed someone@userprimary.net > > and it would figure out whether it should do trunk.. or release-1.3.., > etc. Can anyone point me in the right direction?
Something like this, but its uh, ugly due to the use of a network connection:
branch=$(git symbolic-ref HEAD)
branch=${branch##refs/heads/}remote=$(git config branch.$branch.remote) merge=$(git config branch.$branch.merge)
rb=$(git ls-remote $remote $merge | awk '{print $1}')Then use a filter-branch on "$rb..$branch" as the range.
You may be able to just assume that the remote name is the refs/remotes prefix and instead do:
branch=$(git symbolic-ref HEAD)
branch=${branch##refs/heads/} remote=$(git config branch.$branch.remote)
merge=$(git config branch.$branch.merge)
merge=${merge##refs/heads/}rb=refs/remotes/$remote/$merge
but that's an assumption, and we all know what happens when you assume things.
Technically you need to look at remote.$remote.fetch lines in .git/config to figure out the rewriting rules from what branch.$branch.merge contains to what refs/remotes/* might be, and doing that is not quite as trivial as either using ls-remote or assuming your users have the standard layout created by git-clone and git-remote.
-- Shawn.