From: Johan Herland <johan@herland.net>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: git@vger.kernel.org, "Daniel Barkalow" <barkalow@iabervon.org>,
"Kristian Høgsberg" <krh@redhat.com>,
"Santi Béjar" <sbejar@gmail.com>
Subject: Re: [RFC] Build in clone
Date: Tue, 26 Feb 2008 13:19:41 +0100 [thread overview]
Message-ID: <200802261319.41862.johan@herland.net> (raw)
In-Reply-To: <alpine.LSU.1.00.0802261111460.17164@racer.site>
On Tuesday 26 February 2008, Johannes Schindelin wrote:
> Hi,
>
> On Tue, 26 Feb 2008, Johan Herland wrote:
>
> > On Monday 25 February 2008, Daniel Barkalow wrote:
> > > This version is still a mess, but it passes all of the tests.
> >
> > Not for me:
> > *** t5700-clone-reference.sh ***
> > * ok 1: preparing first repository
> > * ok 2: preparing second repository
> > * FAIL 3: cloning with reference (-l -s)
> > git clone -l -s --reference B A C
>
> Which machine? What is your base (next or master)? What does the verbose
> output look like?
I'm at work now (with a different machine), and when I try to reproduce
I get either 4 errors (with "make test") or 7 errors (with
"sh ./t5700-clone-reference.sh"). See [1] for verbose output.
This is with next (v1.5.4.3-342-g99e8cb6) + Daniel's patch on a 64-bit
Gentoo Linux on top of Intel Core 2 Duo with 4GB RAM. My home box is
similar (Quad instead of Duo). Without Daniel's patch, the entire test
suite passes.
> > diff --git a/builtin-clone.c b/builtin-clone.c
> > index 5aa75e1..7eed340 100644
> > --- a/builtin-clone.c
> > +++ b/builtin-clone.c
> > @@ -1,7 +1,7 @@
> > /*
> > * Builtin "git clone"
> > *
> > - * Copyright (c) 2007 Kristian Høgsberg <krh@redhat.com>
> > + * Copyright (c) 2007 Kristian Høgsberg <krh@redhat.com>
>
> This is almost certainly wrong.
Yes. But the intent is valid: His name should be in UTF-8; not i latin-1.
> > @@ -79,7 +79,7 @@ static char *get_repo_path(const char *repo)
> >
> > if (!stat(repo, &buf) && S_ISDIR(buf.st_mode))
> > return xstrdup(make_absolute_path(repo));
> > -
> > +
>
> Trailing whitespace. Okay.
>
> > @@ -347,6 +347,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
> > char *path, *dir, *head, *ref_temp;
> > struct ref *refs, *r, *remote_head, *head_points_at, *remote_master;
> > char branch_top[256], key[256], refname[256], value[256];
> > + struct strbuf reflog_msg;
> > +
> > + git_config(git_default_config);
>
> Good catch.
Thanks.
> > @@ -495,7 +501,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
> > if (!remote_head) {
> > /* If there isn't one, oh well. */
> > } else if (remote_master && !hashcmp(remote_master->old_sha1,
> > - remote_head->old_sha1)) {
> > + remote_head->old_sha1)) {
>
> I am not so sure about this change. It is unneeded, and distracts from
> the rest.
Yes, if this were meant for inclusion, I'd agree. However, as I originally
stated above the patch, this was pretty much a verbatim dump of my buffers
with the immediate issues I found. It was meant as (hopefully useful)
feedback to Daniel, and not for any kind of consumption by git proper.
Still, I should probably have taken the extra minute to filter out unneeded
whitespace churn.
Have fun! :)
...Johan
[1] Verbose output from t5700-clone-reference.sh:
$ ./t5700-clone-reference.sh --verbose
* expecting success: test_create_repo A && cd A &&
echo first > file1 &&
git add file1 &&
git commit -m initial
Created initial commit 8c40535: initial
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 file1
* ok 1: preparing first repository
* expecting success: git clone A B && cd B &&
echo second > file2 &&
git add file2 &&
git commit -m addition &&
git repack -a -d &&
git prune
Initialize B/.git
Initialized empty Git repository in B/.git/
Okay
Get for /home/johanh/git-test/git/t/trash/A/.git
0x714f50
HEAD
refs/heads/master
work tree now /home/johanh/git-test/git/t/trash/B
Created commit 4f5d964: addition
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 file2
Counting objects: 6, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), done.
Total 6 (delta 0), reused 0 (delta 0)
* ok 2: preparing second repository
* expecting success: git clone -l -s --reference B A C
Initialize C/.git
Initialized empty Git repository in C/.git/
Okay
Wrote /home/johanh/git-test/git/t/trash/B/.git/objects
to C/.git/objects/info/alternates
4f5d96490c0371a2814efb3203ed699ef4814fda -> C/.git/refs/reference-tmp/4f5d96490c0371a2814efb3203ed699ef4814fda
error: refs/remotes/origin/HEAD does not point to a valid object!
error: Z;n�+ does not point to a valid object!
error: Z;n�+ does not point to a valid object!
error: �p does not point to a valid object!
error: Z;n�+ does not point to a valid object!
error: Z;n�+ does not point to a valid object!
error: Y;n�+ does not point to a valid object!
error: q does not point to a valid object!
./test-lib.sh: line 193: 32376 Segmentation fault git clone -l -s --reference B A C
* FAIL 3: cloning with reference (-l -s)
git clone -l -s --reference B A C
* expecting success: test `wc -l <C/.git/objects/info/alternates` = 2
* FAIL 4: existence of info/alternates
test `wc -l <C/.git/objects/info/alternates` = 2
* expecting success: cd C &&
git pull ../B master
* ok 5: pulling from reference
* expecting success: cd C &&
echo "0 objects, 0 kilobytes" > expected &&
git count-objects > current &&
diff expected current
* ok 6: that reference gets used
* expecting success: git clone --reference B file://`pwd`/A D
Initialize D/.git
Initialized empty Git repository in D/.git/
Okay
Wrote /home/johanh/git-test/git/t/trash/B/.git/objects
to D/.git/objects/info/alternates
4f5d96490c0371a2814efb3203ed699ef4814fda -> D/.git/refs/reference-tmp/4f5d96490c0371a2814efb3203ed699ef4814fda
error: refs/remotes/origin/HEAD does not point to a valid object!
�+ does not point to a valid object!
�+ does not point to a valid object!
error: �p does not point to a valid object!
�+ does not point to a valid object!
�+ does not point to a valid object!
error: does not point to a valid object!
./test-lib.sh: line 193: 32440 Segmentation fault git clone --reference B file://`pwd`/A D
* FAIL 7: cloning with reference (no -l -s)
git clone --reference B file://`pwd`/A D
* expecting success: test `wc -l <D/.git/objects/info/alternates` = 1
* ok 8: existence of info/alternates
* expecting success: cd D && git pull ../B master
* ok 9: pulling from reference
* expecting success: cd D && echo "0 objects, 0 kilobytes" > expected &&
git count-objects > current &&
diff expected current
* ok 10: that reference gets used
* expecting success: cd A &&
echo third > file3 &&
git add file3 &&
git commit -m update &&
git repack -a -d &&
git prune
Created commit 20c3827: update
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 file3
Counting objects: 6, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), done.
Total 6 (delta 0), reused 0 (delta 0)
* ok 11: updating origin
* expecting success: cd C &&
git pull origin
fatal: 'origin': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
* FAIL 12: pulling changes from origin
cd C &&
git pull origin
* expecting success: cd C &&
echo "2 objects" > expected &&
git count-objects | cut -d, -f1 > current &&
diff expected current
1c1
< 2 objects
---
> 0 objects
* FAIL 13: that alternate to origin gets used
cd C &&
echo "2 objects" > expected &&
git count-objects | cut -d, -f1 > current &&
diff expected current
* expecting success: cd D &&
git pull origin
fatal: 'origin': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
* FAIL 14: pulling changes from origin
cd D &&
git pull origin
* expecting success: cd D &&
echo "5 objects" > expected &&
git count-objects | cut -d, -f1 > current &&
diff expected current
1c1
< 5 objects
---
> 0 objects
* FAIL 15: check objects expected to exist locally
cd D &&
echo "5 objects" > expected &&
git count-objects | cut -d, -f1 > current &&
diff expected current
* failed 7 among 15 test(s)
--
Johan Herland, <johan@herland.net>
www.herland.net
next prev parent reply other threads:[~2008-02-26 12:21 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-25 21:12 [RFC] Build in clone Daniel Barkalow
2008-02-26 2:21 ` Johan Herland
2008-02-26 11:14 ` Johannes Schindelin
2008-02-26 12:19 ` Johan Herland [this message]
2008-02-26 12:58 ` Johan Herland
2008-02-26 13:37 ` Johan Herland
2008-02-26 15:35 ` [PATCH] Fix premature free of ref_lists while writing temporary refs to file Johan Herland
2008-02-26 15:42 ` Johannes Schindelin
2008-02-26 17:17 ` Johan Herland
2008-02-26 23:07 ` Daniel Barkalow
2008-02-26 23:11 ` Johan Herland
2008-02-26 15:40 ` [PATCH] Fix premature call to git_config() causing t1020-subdirectory to fail Johan Herland
2008-02-26 15:47 ` Johannes Schindelin
2008-02-26 22:12 ` Daniel Barkalow
2008-02-26 22:40 ` Johannes Schindelin
2008-02-26 22:49 ` Daniel Barkalow
2008-02-27 0:20 ` Junio C Hamano
2008-02-27 0:53 ` Daniel Barkalow
2008-02-27 1:34 ` Junio C Hamano
2008-02-27 19:47 ` Daniel Barkalow
2008-02-27 20:09 ` Junio C Hamano
2008-02-27 20:31 ` Daniel Barkalow
2008-02-26 17:36 ` [RFC] Build in clone Daniel Barkalow
2008-02-26 18:53 ` Kristian Høgsberg
2008-03-02 5:57 ` [PATCH] builtin-clone: create remotes/origin/HEAD symref, if guessed Johannes Schindelin
2008-03-02 6:25 ` [PATCH, fixed] " Johannes Schindelin
2008-03-02 7:46 ` [PATCH] builtin clone: support bundles Johannes Schindelin
2008-03-02 16:19 ` Daniel Barkalow
2008-03-03 0:04 ` Santi Béjar
2008-03-02 16:48 ` Daniel Barkalow
2008-03-02 17:34 ` Johannes Schindelin
2008-03-02 17:50 ` Junio C Hamano
2008-03-02 17:54 ` Junio C Hamano
2008-03-03 9:04 ` [PATCH] Add test for cloning with "--reference" repo being a subset of source repo Johan Herland
2008-03-03 16:36 ` Daniel Barkalow
2008-03-03 18:21 ` Daniel Barkalow
2008-03-04 3:02 ` Johan Herland
2008-03-04 3:04 ` [PATCH 1/2] Add test illustrating issues with sha1_file_name() and switching repos Johan Herland
2008-03-04 3:05 ` [PATCH 2/2] Overly simplistic fix for issue " Johan Herland
2008-03-04 23:10 ` [PATCH] Add test for cloning with "--reference" repo being a subset of source repo Daniel Barkalow
2008-03-05 0:24 ` Daniel Barkalow
2008-03-05 23:56 ` Johan Herland
2008-03-03 17:05 ` [PATCH, fixed] builtin-clone: create remotes/origin/HEAD symref, if guessed Kristian Høgsberg
2008-03-03 17:09 ` Pierre Habouzit
2008-03-03 19:55 ` Johannes Schindelin
2008-03-03 17:10 ` Johannes Schindelin
2008-03-03 17:41 ` Johan Herland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200802261319.41862.johan@herland.net \
--to=johan@herland.net \
--cc=Johannes.Schindelin@gmx.de \
--cc=barkalow@iabervon.org \
--cc=git@vger.kernel.org \
--cc=krh@redhat.com \
--cc=sbejar@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.