Re: [PATCH] git-bundle - bundle objects and references for disconnected transfer.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Wed, 14 Feb 2007, Mark Levedahl wrote:

> +bfile=bundle.zip
> +for arg in $myargs ; do
> +	case "$arg" in
> +		--bare)
> +			export GIT_DIR=.;;

This is not necessary. You should do this instead:

	. git-sh-setup

It should autodetect if you are running in a bare repo. Also, it gives you 
the nice die and help functions.

> +		-h|--h|--he|--hel|--help)
> +			echo "$USAGE"
> +			exit;;
> +		--output=*)
> +			bfile=${arg##--output=};;

Throughout git, we seem to do both "--output=<bla>" _and_ "--output <bla>" 
forms, or just the latter.

> +GIT_DIR=$(git-rev-parse --git-dir) || die "Not in a git directory"

Again, this is done by git-sh-setup

> +git-show-ref $refs > .gitBundleReferences

Would it not be better to say explicitely which refs are expected to be 
present already (they start with "^" in the output of `git-rev-parse`, but 
you would need to do a bit more work, since you cannot just take the 
symbolic names).

Some general remarks:

It would be so much nicer if you worked without temporary files (you could 
do that by starting the file with the refs, then have an empty line, and 
then just pipe the pack after that).

IMHO reliance on $(git fsck | grep ^missing) is not good. The file check 
might take very, very long, or use much memory. And you _can_ do better 
[*1*].

Also, your use of shallow is incorrect. If the boundary commits are 
present, you might just leave them as-are, but if they are not present, 
you have to mark them as shallow. Otherwise, you end up with a corrupt 
(not shallow) repository.

Ciao,
Dscho

[*1*] Instead of providing a list "<hash> <refname>" with just the refs to 
be updated, append a list "<hash> ^<refname>" with the refs which _have_ 
to be present in order to succeed. You get this list by

	gitrevnotargs=$(git-rev-parse --symbolic --revs-only --not $*)
	git show-ref $gitrevnotargs | sed 's/^\(.\{41\}\)/&^/'

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]