From: Mark Levedahl Date: Wed, 02 Jul 2008 00:16:32 GMT Subject: Re: [PATCH/v2] git-basis, a script to manage bases for git-bundle Message-ID: <486AC8E0.60002@verizon.net> In-Reply-To: <7vzlp1jh1o.fsf@gitster.siamese.dyndns.org> Junio C Hamano wrote: > > Well, I have a moderately strong objection to this. > > This very much feels like adding a missing feature to "git bundle" command > itself. Why isn't it a new option to it? > I have implemented (in script form) a different approach: basically, I just keep a local copy of the refs pushed out via bundle in refs/remotes/*, just as for any other remote, and then use those as the basis for later bundles. My longer term goal is to integrate this into git push, so that with a properly configured remote "git push foo" will create a bundle based upon the local knowledge of the remote's basis and update the local copy of the refs. For reference, this is the script I currently use ... #!/bin/sh # usage if test $# -lt 4 then echo "usage: $0 repoDirectory bundleName remote [git-for-each-ref args]" exit 1 fi # must be at toplevel cd $1 || exit 1 cd ./$(git rev-parse --show-cdup) || exit 1 bundleName=$2 remote=$3 shift 3 # get list of what we want to bundle up newrefs=$(git for-each-ref --format="%(refname)" $*) # get list of the current bundle basis=$(git for-each-ref --format="^%(objectname)" refs/remotes/$remote) # create the bundle if git bundle create "$bundleName" $newrefs $basis then # update our record of basis from the bundle git bundle list-heads "$bundleName" | \ while read sha1 refname do git update-ref refs/remotes/"$remote"/"${refname##refs/}" $sha1 done else rm -f "$bundleName" fi Mark