From: Björn Steinbrink Date: Thu, 27 Aug 2009 22:35:04 GMT Subject: Re: finding unmerged branches Message-ID: <20090827223504.GA18307@atjola.homenet> In-Reply-To: <20090827220241.GA1413@gnu.kitenet.net> On 2009.08.27 18:02:41 -0400, Joey Hess wrote: > My situation is this: My project has a lot of remotes with > lots of branches; about 250 branches in total. I want to > figure out which of these branches to look at to consider > merging. > > So, I reach for git branch -a --no-merged master; that's what > its man page says its for. But this still finds 120 branches, > and a lot of them are not things I want to look at. Many of > them are copies of some of my own branches. > > What I really want is a way to find remote branches that > are not merged with any of my local branches (or any origin > branches). A slow and stupid implementation of that is in the > attached git-unmerged script, and it weeds the branch list > down to 68 branches, which are mostly really ones I might > want to look at. > > So, three questions: > > * Is this situation somewhat common, or an I doing something wrong? > (Assuming that I have a good reason to want to look at remote > branches rather than waiting to get merge requests.) > * Is there a better way to accomplish this than a slow perl script that > runs git branch -r --merged foreach of my branches? Hm, not sure if I'd call it "better", but probably at least a bit faster. You could create a "fake" merge to combine all the branches. git branch -r --no-merged $( : | git commit-tree HEAD^{tree} $( git for-each-ref --format='-p %(refname)' \ refs/heads/ \ refs/remotes/origin ) ) Björn