From: Shawn O. Pearce Date: Mon, 19 May 2008 03:37:36 GMT Subject: Re: git and peer review Message-ID: <20080519033736.GZ29038@spearce.org> In-Reply-To: <20080517213039.GR396@ziti.local> Seth Falcon wrote: > 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.