On Sat, Dec 10, 2011 at 01:26:32PM +0100, Gelonida N wrote: > Hi, > > What is the best way to fastforward all fastforwardable tracking > branches after a git fetch? I know this is a somewhat closed topic, but I took some time to clean up a program I have been using for a while, including some changes based upon ideas elsewhere in this thread. The program "git-branch-check" is attached, and requires perl > 5.10.0. Note that this does a lot more than just fast-forward all branches, although it can do that as well. I alias it (in ~/.gitconfig) to 'bc', so I just run "git bc". Running with "-h" shows usage: Usage: /home/sitaram/bin/git-branch-check [options] [branches] Check or fast forward branches. Default: act upon all local branches if no arguments supplied, or just the current branch if '-c' is passed. -c act upon current branch only -ff don't just check, try to fast forward also -md max diff (default 100; see below for details) -h help 'max diff': hide output for two branches different by more than so many commits My usual usage is just "git bc -c", which may give me: 1 pu...origin/pu 1 pu...github/pu 13 pu...master 5 pu...q 7 pu...vrs This quickly tells me my 'pu' is one ahead of both my own gitolite server as well as github's copy, and that it is 13 commits ahead of master. The (unreleased and frequently rebased) feature branches 'q' and 'vrs' are ahead of pu, which means a rebase is not pending. Without the "-c" I may see the status of master versus its own upstream and other remotes, etc., also. The purpose of the max diff limit (default 100) is to hide, for example, the pair 'master' and 'man' from the git.git repo. Otherwise you'd see something like: 27249 973 master...man which is pretty meaningless. The sum of those two numbers should be less than the max. "git bc -ff" will attempt to fast forward all selected branches that are ancestors of their respective upstreams. The current branch will not be ff-ed if the tree is dirty, since you can't do this by 'git branch -f'; it has to be an actual merge command. The output is not (currently) pipable to other programs because I use colors (obtained from 'git config --get-color') and currently it is not conditional on STDOUT being a tty.
Attachment:
pgpwP_bX4E5f6.pgp
Description: PGP signature