git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Add git-bundle - pack objects and references for disconnected transfer
  2007-02-16  0:19 Respun - Scripts to use bundles to move data between repos Mark Levedahl
@ 2007-02-16  0:19 ` Mark Levedahl
  2007-02-16  2:11   ` Junio C Hamano
  0 siblings, 1 reply; 11+ messages in thread
From: Mark Levedahl @ 2007-02-16  0:19 UTC (permalink / raw)
  To: git; +Cc: Mark Levedahl

Some workflows require coordinated development between repositories on
machines that can never be connected. This utility creates a bundle
containing a pack of objects and associated references (heads or tags)
that can be independently transferred to another machine, effectively
supporting git-push like operations between disconnected systems.

Signed-off-by: Mark Levedahl <mdl123@verizon.net>
---
 git-bundle.sh |  103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 103 insertions(+), 0 deletions(-)
 create mode 100755 git-bundle.sh

diff --git a/git-bundle.sh b/git-bundle.sh
new file mode 100755
index 0000000..c431b52
--- /dev/null
+++ b/git-bundle.sh
@@ -0,0 +1,103 @@
+#!/bin/sh
+# Create a bundle to carry from one git repo to another
+# (e.g., "sneaker-net" based push)
+# git-bundle <git-rev-list args>
+# git-bundle --bare <git-rev-list args>
+# creates bundle.tar in current directory (can rename of course)
+#
+# The bundle includes all refs given (--all selects every ref in the repo).
+# and all of the commit objects needed subject to the list given.
+#
+# Objects to be packed are limited by specifying one or more of
+#   ^commit-ish    - indicated commits already at the target
+#                    (can have more than one ^commit-ish)
+#   --since=xxx    - Assume target repo has all relevant commits
+#                    earlier than xxx
+
+USAGE='git-bundle [--output=file] <git-rev-list arguments>'
+SUBDIRECTORY_OK=1
+. git-sh-setup
+
+# pull out rev-list args vs program args, parse the latter
+gitrevargs=$(git-rev-parse --symbolic --revs-only $*) || exit 1
+myargs=$(git-rev-parse --no-revs $*) || exit 1
+
+bfile=bundle.tar
+nextisoutput=
+for arg in $myargs ; do
+	case "$arg" in
+		-h|--h|--he|--hel|--help)
+			echo "$USAGE"
+			exit;;
+		--output=*)
+			bfile=${arg##--output=};;
+		*)
+			die "unknown option: $arg";;
+	esac
+done
+
+# find the refs to carry along and get sha1s for each.
+refs=
+fullrevargs=
+for arg in $gitrevargs ; do
+	#ignore options and basis refs, get unambiguous ref name for things
+	# we will transport (e.g., user gives master, have heads/master and
+	# remotes/origin/master, we keep the former).
+	case "$arg" in
+		-*) fullrevargs="$fullrevargs $arg";;
+		^*) fullrevargs="$fullrevargs $arg";;
+		*)	ref=$(git-show-ref "$arg" | head -n1)
+			[ -z "$ref" ] && die "unknown reference: $arg"
+			fullrevargs="$fullrevargs ${ref#* }"
+			refs="$refs $ref"
+			;;
+	esac
+done
+[ -z "$refs" ] && die "No references specified, I don't know what to bundle."
+
+# git-rev-list cannot determine edge objects if a date restriction is given...
+# we do things a slow way if max-age or min-age are given
+fast=
+[ "${fullrevargs##*--max-age}" == "$fullrevargs" ] && \
+[ "${fullrevargs##*--min-age}" == "$fullrevargs" ] && fast=1
+
+if [ -z "$fast" ] ; then
+	# get a list of all commits that will be packed along with parents of each.
+	# A fixed git-rev-list --boundary should replace all of this.
+	echo "Finding prerequisites and commits to bundle..."
+	commits=$(git-rev-list $fullrevargs)
+	
+	# get immediate parents of each commit to include
+	parents=
+	for c in $commits ; do
+		parents="$parents $(git-rev-list --parents $c | head -1 | cut -b42-)"
+	done
+	parents=$(printf "%s\n" $parents | sort | uniq)
+	
+	# factor out what will be in this bundle, the remainder are the bundle's pre-requisites.
+	# double up commits in this as we only want things that are only in parents to appear once
+	prereqs=$(printf "%s\n" $parents $commits $commits | \
+		sort | \
+		uniq -c | \
+		grep ' 1 ' \
+		| sed 's/ *1 //')
+else
+	prereqs=$(git-rev-list --objects-edge $fullrevargs | \
+		grep '^-' | sed 's/-//')
+fi
+
+# create refs and pack
+[ -e "$bfile" ] && rm -f "$bfile" 2>/dev/null
+printf "%s\n" $prereqs > .gitBundleReferences
+echo "-" >> .gitBundleReferences
+git-show-ref $refs >> .gitBundleReferences
+(git-rev-list --objects $fullrevargs | \
+	cut -b-40 | \
+	git pack-objects --all-progress --stdout >.gitBundlePack) \
+	|| (rm -f "$bfile" ; exit)
+tar cf "$bfile"  .gitBundleReferences .gitBundlePack
+tar cf "$bfile"  .gitBundleReferences .gitBundlePack
+rm .gitBundleReferences .gitBundlePack
+
+# done
+echo "Created $bfile"
-- 
1.5.0.34.g6afaa

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer
  2007-02-16  0:19 ` [PATCH] Add git-bundle - pack objects and references for disconnected transfer Mark Levedahl
@ 2007-02-16  2:11   ` Junio C Hamano
  2007-02-16  4:41     ` Shawn O. Pearce
  2007-02-16  6:39     ` Mark Levedahl
  0 siblings, 2 replies; 11+ messages in thread
From: Junio C Hamano @ 2007-02-16  2:11 UTC (permalink / raw)
  To: Mark Levedahl; +Cc: git

Mark Levedahl <mdl123@verizon.net> writes:

> +# find the refs to carry along and get sha1s for each.
> +refs=
> +fullrevargs=
> +for arg in $gitrevargs ; do
> +	#ignore options and basis refs, get unambiguous ref name for things
> +	# we will transport (e.g., user gives master, have heads/master and
> +	# remotes/origin/master, we keep the former).

I am not sure if that is a good behaviour.  What if user gives
xyzzy and there are tags/xyzzy and remotes/origin/xyzzy?

I suspect it would be much safer to error out in ambiguous cases.

> +# we do things a slow way if max-age or min-age are given
> +fast=
> +[ "${fullrevargs##*--max-age}" == "$fullrevargs" ] && \
> +[ "${fullrevargs##*--min-age}" == "$fullrevargs" ] && fast=1

Style.

Our scripts tend to spell the test command "test" and equality test
operator as single '='.  Also they tend to say:

        case "$fullrevargs" in
        *--max-age* | *--min-age*) ... 
        esac

> +	# get immediate parents of each commit to include
> +	parents=
> +	for c in $commits ; do
> +		parents="$parents $(git-rev-list --parents $c | head -1 | cut -b42-)"
> +	done

Nicely done, but you seemed to have used "head -n 1" elsewhere,
which is more portable.

> +	# factor out what will be in this bundle, the remainder are the bundle's pre-requisites.
> +	# double up commits in this as we only want things that are only in parents to appear once
> +	prereqs=$(printf "%s\n" $parents $commits $commits | \
> +		sort | \
> +		uniq -c | \
> +		grep ' 1 ' \
> +		| sed 's/ *1 //')

Don't pipe output of grep to sed ;-).

> +else
> +	prereqs=$(git-rev-list --objects-edge $fullrevargs | \
> +		grep '^-' | sed 's/-//')
> +fi

Likewise.  The latter is:

	... | sed -ne 's/^-//p'

> +# create refs and pack
> +[ -e "$bfile" ] && rm -f "$bfile" 2>/dev/null
> +printf "%s\n" $prereqs > .gitBundleReferences

Our scripts assume $GIT_DIR/ is writable but not necessarily the
working directory when they have to use temporary files.  Also
please clean temporaries even when you error out with traps.

	tmp=$GIT_DIR/bundle_tmp$$
	references="$tmp-references"
        pack="$tmp-pack"
        trap 'rm -f "$tmp-*"' 0 1 2 3 15

        echo "-" >>"$references" &&
        git-show-ref $refs >>"$references" &&
        (git-rev-list ... >"$pack") || exit

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer
  2007-02-16  2:11   ` Junio C Hamano
@ 2007-02-16  4:41     ` Shawn O. Pearce
  2007-02-16  7:28       ` Junio C Hamano
  2007-02-16  6:39     ` Mark Levedahl
  1 sibling, 1 reply; 11+ messages in thread
From: Shawn O. Pearce @ 2007-02-16  4:41 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Mark Levedahl, git

Junio C Hamano <junkio@cox.net> wrote:
> Mark Levedahl <mdl123@verizon.net> writes:
> > +# we do things a slow way if max-age or min-age are given
> > +fast=
> > +[ "${fullrevargs##*--max-age}" == "$fullrevargs" ] && \
> > +[ "${fullrevargs##*--min-age}" == "$fullrevargs" ] && fast=1
> 
> Style.
> 
> Our scripts tend to spell the test command "test" and equality test
> operator as single '='.

Using "test" is a style thing, but using "=" rather than "==" is
a portability issue.  "==" is accepted by bash as a synonym for
"=", but its not valid elsewhere.

I've made my fair share of patches with "==" in them, only to have
someone else have a problem on their system and then submit a fix to
change them to "=".  Just say no to "==" in Git shell scripts.  ;-)
 
> > +	# get immediate parents of each commit to include
> > +	parents=
> > +	for c in $commits ; do
> > +		parents="$parents $(git-rev-list --parents $c | head -1 | cut -b42-)"
> > +	done
> 
> Nicely done, but you seemed to have used "head -n 1" elsewhere,
> which is more portable.

What about:

	parents="$parents $(git-rev-list --max-count=1 --parents $c | cut -b42-)"

?

I just used that trick recently.  Oh yea it was in git-gui's
GIT-VERSION-GEN script.  Though I did not know about using cut
like that...
 
-- 
Shawn.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH] Add git-bundle - pack objects and references for disconnected transfer
  2007-02-16  2:11   ` Junio C Hamano
  2007-02-16  4:41     ` Shawn O. Pearce
@ 2007-02-16  6:39     ` Mark Levedahl
  2007-02-16  6:54       ` Shawn O. Pearce
  1 sibling, 1 reply; 11+ messages in thread
From: Mark Levedahl @ 2007-02-16  6:39 UTC (permalink / raw)
  To: git; +Cc: Mark Levedahl

Some workflows require coordinated development between repositories on
machines that can never be connected. This utility creates a bundle
containing a pack of objects and associated references (heads or tags)
that can be independently transferred to another machine, effectively
supporting git-push like operations between disconnected systems.

Signed-off-by: Mark Levedahl <mdl123@verizon.net>
---
 git-bundle.sh |  112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 112 insertions(+), 0 deletions(-)
 create mode 100755 git-bundle.sh

diff --git a/git-bundle.sh b/git-bundle.sh
new file mode 100755
index 0000000..f56f499
--- /dev/null
+++ b/git-bundle.sh
@@ -0,0 +1,112 @@
+#!/bin/sh
+# Create a bundle to carry from one git repo to another
+# (e.g., "sneaker-net" based push)
+# git-bundle <git-rev-list args>
+# git-bundle --bare <git-rev-list args>
+# creates bundle.tar in current directory (can rename of course)
+#
+# The bundle includes all refs given (--all selects every ref in the repo).
+# and all of the commit objects needed subject to the list given.
+#
+# Objects to be packed are limited by specifying one or more of
+#   ^commit-ish    - indicated commits already at the target
+#                    (can have more than one ^commit-ish)
+#   --since=xxx    - Assume target repo has all relevant commits
+#                    earlier than xxx
+
+USAGE='git-bundle [-o file | --output=file] <git-rev-list arguments>'
+SUBDIRECTORY_OK=1
+. git-sh-setup
+
+bfile=bundle.tar
+args=
+while test -n "$1" ; do
+    case $1 in
+        -h|--h|--he|--hel|--help)
+            echo "$USAGE"
+            exit;;
+        --output=*)
+            bfile=${1##--output=};;
+        -o|--output)
+            shift
+            bfile=$1;;
+        *)
+            args="$args $1"
+    esac
+    shift
+done
+
+unknown=$(git-rev-parse --no-revs $args)
+test -z "$unknown" || die "unknown option: $unknown"
+gitrevargs=$(git-rev-parse --symbolic --revs-only $args) || exit 1
+
+# find the refs to carry along and get sha1s for each.
+refs=
+fullrevargs=
+for arg in $gitrevargs ; do
+    #ignore options and basis refs, get unambiguous ref name for things
+    # we will transport (e.g., user gives master, have heads/master and
+    # remotes/origin/master, we keep the former).
+    case "$arg" in
+        -*) fullrevargs="$fullrevargs $arg";;
+        ^*) fullrevargs="$fullrevargs $arg";;
+        *)  ref=$(git-show-ref "$arg")
+            test "$(echo $ref | wc -w)" = "2" || die "Ambigous reference: $arg
+$ref"
+            fullrevargs="$fullrevargs ${ref#* }"
+            refs="$refs $ref"
+            ;;
+    esac
+done
+test -z "$refs" && die "No references specified, I don't know what to bundle."
+
+# git-rev-list cannot determine edge objects if a date restriction is
+# given...  we do things a slow way if max-age or min-age are given
+case "$fullrevargs" in
+    *--max-age* | *--min-age*)
+    # get a list of all commits that will be packed along with
+    # parents of each.  A fixed git-rev-list --boundary should
+    # replace all of this.
+    echo "Finding prerequisites and commits to bundle..."
+    commits=$(git-rev-list $fullrevargs)
+
+    # get immediate parents of each commit to include
+    parents=
+    for c in $commits ; do
+        parents="$parents $(git-rev-list --parents --max-count=1 $c | cut -b42-)"
+    done
+    parents=$(printf "%s\n" $parents | sort | uniq)
+
+    # factor out what will be in this bundle, the remainder are the
+    # bundle's prerequisites.  double up commits in this as we only
+    # want things that are only in parents to appear once
+    prereqs=$(printf "%s\n" $parents $commits $commits | \
+        sort | uniq -c | sed -ne 's/^ *1 //p');;
+    *)
+        prereqs=$(git-rev-list --objects-edge $fullrevargs | sed -ne 's/^-//p');;
+esac
+
+# create refs and pack
+tmp=$GIT_DIR/bundle_tmp$$
+references="$tmp-references"
+pack="$tmp-pack"
+trap 'rm -f "$references" "$pack"' 0 1 2 3 15
+
+echo "v1" > "$references" &&
+echo "prerequisites" >> "$references" &&
+printf "%s\n" $prereqs >> "$references" &&
+echo "references" >> "$references" &&
+git-show-ref $refs >> "$references" &&
+(git-rev-list --objects $fullrevargs | \
+    cut -b-40 | \
+    git pack-objects --all-progress --stdout >> "$pack" ) \
+    || exit
+
+# create the tar file, clean up
+tar cf "$bfile" --absolute-names --transform="s,$tmp-,," \
+    --verbose --show-transformed-names \
+    "$references" "$pack"
+rm -f "$pack" "$references"
+
+# done
+echo "Created $bfile"
-- 
1.5.0.rc4.375.gd0938-dirty

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer
  2007-02-16  6:39     ` Mark Levedahl
@ 2007-02-16  6:54       ` Shawn O. Pearce
  2007-02-16 11:57         ` Simon 'corecode' Schubert
  0 siblings, 1 reply; 11+ messages in thread
From: Shawn O. Pearce @ 2007-02-16  6:54 UTC (permalink / raw)
  To: Mark Levedahl; +Cc: git

Mark Levedahl <mdl123@verizon.net> wrote:
> +# create the tar file, clean up
> +tar cf "$bfile" --absolute-names --transform="s,$tmp-,," \
> +    --verbose --show-transformed-names \
> +    "$references" "$pack"

I'm not sure this will work on FreeBSD.  Both 5.1 and 6.1 use tar
that does not know about --absolute-names, --transform, --verbose,
or --show-transformed-names.

-- 
Shawn.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer
  2007-02-16  4:41     ` Shawn O. Pearce
@ 2007-02-16  7:28       ` Junio C Hamano
  0 siblings, 0 replies; 11+ messages in thread
From: Junio C Hamano @ 2007-02-16  7:28 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: Mark Levedahl, git

"Shawn O. Pearce" <spearce@spearce.org> writes:

> Using "test" is a style thing, but using "=" rather than "==" is
> a portability issue.  "==" is accepted by bash as a synonym for
> "=", but its not valid elsewhere.

True, I should have stressed that.  Thanks.  Also in the same
sense (but to a lessor degree), "test" vs "[" is also
portability issue.

> What about:
>
> 	parents="$parents $(git-rev-list --max-count=1 --parents $c | cut -b42-)"
>
> I just used that trick recently.  Oh yea it was in git-gui's
> GIT-VERSION-GEN script.  Though I did not know about using cut
> like that...

I used to stay away from 'cut' myself, although it is not too
bad for portability these days.  I would probably have done the
above with a single sed process, though.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer
  2007-02-16  6:54       ` Shawn O. Pearce
@ 2007-02-16 11:57         ` Simon 'corecode' Schubert
  0 siblings, 0 replies; 11+ messages in thread
From: Simon 'corecode' Schubert @ 2007-02-16 11:57 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: Mark Levedahl, git

[-- Attachment #1: Type: text/plain, Size: 1079 bytes --]

Shawn O. Pearce wrote:
> Mark Levedahl <mdl123@verizon.net> wrote:
>> +# create the tar file, clean up
>> +tar cf "$bfile" --absolute-names --transform="s,$tmp-,," \
>> +    --verbose --show-transformed-names \
>> +    "$references" "$pack"
> 
> I'm not sure this will work on FreeBSD.  Both 5.1 and 6.1 use tar
> that does not know about --absolute-names, --transform, --verbose,
> or --show-transformed-names.

for portability, pax is the official choice :)  and it can even do path name modifications with -s.  but why again are we using tar there?  this data could easiliy be put in one mixed text/binary file, starting out with

#!/bin/sh
echo "This is a git bundle.  Use git-unbundle to process me." >&1
exit
### DATA ###

or so

cheers
  simon

-- 
Serve - BSD     +++  RENT this banner advert  +++    ASCII Ribbon   /"\
Work - Mac      +++  space for low €€€ NOW!1  +++      Campaign     \ /
Party Enjoy Relax   |   http://dragonflybsd.org      Against  HTML   \
Dude 2c 2 the max   !   http://golden-apple.biz       Mail + News   / \


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 252 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer
@ 2007-02-16 12:45 Mark Levedahl
  2007-02-16 13:25 ` Simon 'corecode' Schubert
  2007-02-16 13:44 ` Johannes Schindelin
  0 siblings, 2 replies; 11+ messages in thread
From: Mark Levedahl @ 2007-02-16 12:45 UTC (permalink / raw)
  To: Simon 'corecode' Schubert, Shawn O. Pearce; +Cc: Mark Levedahl, git

>From: Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
>Date: 2007/02/16 Fri AM 05:57:20 CST
>To: "Shawn O. Pearce" <spearce@spearce.org>
>Cc: Mark Levedahl <mdl123@verizon.net>, git@vger.kernel.org
>Subject: Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer

>Shawn O. Pearce wrote:
>> Mark Levedahl <mdl123@verizon.net> wrote:
>>> +# create the tar file, clean up
>>> +tar cf "$bfile" --absolute-names --transform="s,$tmp-,," \
>>> +    --verbose --show-transformed-names \
>>> +    "$references" "$pack"
>> 
>> I'm not sure this will work on FreeBSD.  Both 5.1 and 6.1 use tar
>> that does not know about --absolute-names, --transform, --verbose,
>> or --show-transformed-names.
>
>for portability, pax is the official choice :)  and it can even do path name modifications with -s.  but why again are we using tar there?  this data could easiliy be put in one mixed text/binary file, starting out with
>
>#!/bin/sh
>echo "This is a git bundle.  Use git-unbundle to process me." >&1
>exit
>### DATA ###
>
>or so
>
>cheers
>  simon

... I *tried* that, and it fails under Cygwin. Apparently cygwin's bash (or something) mangles data in the pipe (99% certain it will turn out to be a latent crlf issue)...


cat "$bfile" (
    read refs...
    git index-pack --stdin
)

worked several times, it only failed twice out of 8 bundles I tried. That's just a trifle bit too high a failure rate for my taste. ;^)

Mark

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer
  2007-02-16 12:45 Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer Mark Levedahl
@ 2007-02-16 13:25 ` Simon 'corecode' Schubert
  2007-02-16 13:44 ` Johannes Schindelin
  1 sibling, 0 replies; 11+ messages in thread
From: Simon 'corecode' Schubert @ 2007-02-16 13:25 UTC (permalink / raw)
  To: Mark Levedahl; +Cc: Shawn O. Pearce, git

[-- Attachment #1: Type: text/plain, Size: 879 bytes --]

Mark Levedahl wrote:
>> #!/bin/sh
>> echo "This is a git bundle.  Use git-unbundle to process me." >&1
>> exit
>> ### DATA ###
>>
>> or so
>>
>> cheers
>>  simon
> 
> ... I *tried* that, and it fails under Cygwin. Apparently cygwin's
> bash (or something) mangles data in the pipe (99% certain it will
> turn out to be a latent crlf issue)...

you can try something like:

sed -e '1,/^##DATA##$/d' "$bundle" | git-index-pack --stdin

and see if it works better.  no need to stream the bundle completely, it can be read several times.

cheers
  simon

-- 
Serve - BSD     +++  RENT this banner advert  +++    ASCII Ribbon   /"\
Work - Mac      +++  space for low €€€ NOW!1  +++      Campaign     \ /
Party Enjoy Relax   |   http://dragonflybsd.org      Against  HTML   \
Dude 2c 2 the max   !   http://golden-apple.biz       Mail + News   / \


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 252 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer
  2007-02-16 12:45 Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer Mark Levedahl
  2007-02-16 13:25 ` Simon 'corecode' Schubert
@ 2007-02-16 13:44 ` Johannes Schindelin
  2007-02-16 23:25   ` Mark Levedahl
  1 sibling, 1 reply; 11+ messages in thread
From: Johannes Schindelin @ 2007-02-16 13:44 UTC (permalink / raw)
  To: Mark Levedahl; +Cc: Simon 'corecode' Schubert, Shawn O. Pearce, git

Hi,

On Fri, 16 Feb 2007, Mark Levedahl wrote:

> ... I *tried* that, and it fails under Cygwin. Apparently cygwin's bash 
> (or something) mangles data in the pipe (99% certain it will turn out to 
> be a latent crlf issue)...

Have you tried

	export CYGWIN=binmode

before that? (If it works, you have to make sure that other settings as 
"ntsec" are retained in that environment variable, but not "nobinmode").

Hth,
Dscho

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer
  2007-02-16 13:44 ` Johannes Schindelin
@ 2007-02-16 23:25   ` Mark Levedahl
  0 siblings, 0 replies; 11+ messages in thread
From: Mark Levedahl @ 2007-02-16 23:25 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Simon 'corecode' Schubert, Shawn O. Pearce, git

Johannes Schindelin wrote:
> Hi,
>
> On Fri, 16 Feb 2007, Mark Levedahl wrote:
>
>   
>> ... I *tried* that, and it fails under Cygwin. Apparently cygwin's bash 
>> (or something) mangles data in the pipe (99% certain it will turn out to 
>> be a latent crlf issue)...
>>     
>
> Have you tried
>
> 	export CYGWIN=binmode
>
> before that? (If it works, you have to make sure that other settings as 
> "ntsec" are retained in that environment variable, but not "nobinmode").
>
> Hth,
> Dscho
In a word, yes. I tried many things with mount and CYGWIN, none fixed 
the problem. What I don't have is a simple test case I can push upstream 
to demonstrate the failure mode. However, if this is a crlf issue I 
suspect this would not work in msys either, regardless of being able to 
find the issue in Cygwin.

Mark

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2007-02-16 23:34 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-02-16 12:45 Re: [PATCH] Add git-bundle - pack objects and references for disconnected transfer Mark Levedahl
2007-02-16 13:25 ` Simon 'corecode' Schubert
2007-02-16 13:44 ` Johannes Schindelin
2007-02-16 23:25   ` Mark Levedahl
  -- strict thread matches above, loose matches on Subject: below --
2007-02-16  0:19 Respun - Scripts to use bundles to move data between repos Mark Levedahl
2007-02-16  0:19 ` [PATCH] Add git-bundle - pack objects and references for disconnected transfer Mark Levedahl
2007-02-16  2:11   ` Junio C Hamano
2007-02-16  4:41     ` Shawn O. Pearce
2007-02-16  7:28       ` Junio C Hamano
2007-02-16  6:39     ` Mark Levedahl
2007-02-16  6:54       ` Shawn O. Pearce
2007-02-16 11:57         ` Simon 'corecode' Schubert

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).