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 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).