[PATCH 0/8] builtin-clone

DORMANTno replies

4 messages, 2 authors, 2016-06-15 · open the first message on its own page

[PATCH 0/8] builtin-clone

From: Daniel Barkalow <hidden>
Date: 2016-06-15 22:44:29

This is my latest version, rebased approximately on current master (or 
recent maint, I guess). It's missing all of Johan's stuff, which is tests 
for stuff I've fixed and (after this series) a series to make the clone 
generate packed refs. I believe Johannes has a bunch of changes, and I 
haven't been working on this lately, and it needs review more than 
anything, so I'm sending it out.

Daniel Barkalow (8):
  Mark the list of refs to fetch as const
  Add a lockfile function to append to a file
  Add a library function to add an alternate to the alternates file
  Add a function to set a non-default work tree
  Have a constant extern refspec for "--tags"
  Allow for having for_each_ref() list extra refs
  Provide API access to init_db()
  Build in clone

 Makefile                      |    2 +-
 builtin-clone.c               |  546 +++++++++++++++++++++++++++++++++++++++++
 builtin-fetch.c               |   10 +-
 builtin-init-db.c             |  180 +++++++-------
 builtin.h                     |    1 +
 cache.h                       |    7 +
 contrib/examples/git-clone.sh |  522 +++++++++++++++++++++++++++++++++++++++
 environment.c                 |    6 +
 git-clone.sh                  |  522 ---------------------------------------
 git.c                         |    1 +
 lockfile.c                    |   17 ++
 refs.c                        |   18 ++
 refs.h                        |    9 +
 remote.c                      |    9 +
 remote.h                      |    2 +
 sha1_file.c                   |   12 +
 transport.c                   |   16 +-
 transport.h                   |    4 +-
 18 files changed, 1256 insertions(+), 628 deletions(-)
 create mode 100644 builtin-clone.c
 create mode 100755 contrib/examples/git-clone.sh
 delete mode 100755 git-clone.sh

Re: [PATCH 0/8] builtin-clone

From: Johan Herland <hidden>
Date: 2016-06-15 22:44:29

On Friday 18 April 2008, Daniel Barkalow wrote:
This is my latest version, rebased approximately on current master (or 
recent maint, I guess). It's missing all of Johan's stuff, which is tests 
for stuff I've fixed
Does this mean you no longer need the tests, or that you want me to resend?
and (after this series) a series to make the clone generate packed refs.
I'll resend the series once your work has settled down and landed in "next".

BTW, I noticed in your repo (at iabervon.org) that you put "if (0)" around
the code generating packed-refs (using the old one instead), and added the
following note to the commit message:

  I made this compile-time configurable because I'm not sure we want to
  pack unconditionally.

We should probably figure out the right thing to do here. AFAICS,
compile-time configurability is only a temporary measure, and we basically
have to choose between:

1. Add a command-line option (and config variable?) for controlling
   whether "git clone" generates packed refs.

2. Make "git clone" unconditionally generate packed refs.

Currently, I'm leaning towards (2), since I don't think there's enough
drawbacks with generating packed-refs to justify adding a command-line
option. AFAICS, the only drawback is that reflogs aren't
created/initialized on clone, but I got the feeling that this was not
particularly important. Quoting Junio from an earlier thread:

  Not writing reflogs is a _different_ behaviour from the previous, but I
  suspect it might even be an improvement.  When you have 1000 remote
  branches, probably most of them are not even active.

If there are good arguments for going with (1), I'd love to hear them.


Have fun, and thanks a lot for your hard work!

...Johan

-- 
Johan Herland, [off-list ref]
www.herland.net

Re: [PATCH 0/8] builtin-clone

From: Daniel Barkalow <hidden>
Date: 2016-06-15 22:44:29

On Fri, 18 Apr 2008, Johan Herland wrote:
On Friday 18 April 2008, Daniel Barkalow wrote:
quoted
This is my latest version, rebased approximately on current master (or 
recent maint, I guess). It's missing all of Johan's stuff, which is tests 
for stuff I've fixed
Does this mean you no longer need the tests, or that you want me to resend?
I have them, but my patch-sending process isn't set up for sending other 
people's patches without forging their email, and I wanted to get this 
series out, and they're not critical, so I skipped them for now.
quoted
and (after this series) a series to make the clone generate packed refs.
I'll resend the series once your work has settled down and landed in "next".

BTW, I noticed in your repo (at iabervon.org) that you put "if (0)" around
the code generating packed-refs (using the old one instead), and added the
following note to the commit message:
It was really mostly that the version I have in there doesn't pass the 
tests, due to not having the thing to filter packed refs.
  I made this compile-time configurable because I'm not sure we want to
  pack unconditionally.

We should probably figure out the right thing to do here. AFAICS,
compile-time configurability is only a temporary measure, and we basically
have to choose between:

1. Add a command-line option (and config variable?) for controlling
   whether "git clone" generates packed refs.

2. Make "git clone" unconditionally generate packed refs.

Currently, I'm leaning towards (2), since I don't think there's enough
drawbacks with generating packed-refs to justify adding a command-line
option. AFAICS, the only drawback is that reflogs aren't
created/initialized on clone, but I got the feeling that this was not
particularly important. Quoting Junio from an earlier thread:

  Not writing reflogs is a _different_ behaviour from the previous, but I
  suspect it might even be an improvement.  When you have 1000 remote
  branches, probably most of them are not even active.

If there are good arguments for going with (1), I'd love to hear them.
I think it's fine, actually (now that you've not test corrections that 
work for it); but I'd like to have builtin-clone land without any changes 
in behaviour, and then get this sort of improvement.

	-Daniel
*This .sig left intentionally blank*

Re: [PATCH 0/8] builtin-clone

From: Johan Herland <hidden>
Date: 2016-06-15 22:44:29

On Friday 18 April 2008, Daniel Barkalow wrote:
On Fri, 18 Apr 2008, Johan Herland wrote:
quoted
On Friday 18 April 2008, Daniel Barkalow wrote:
quoted
This is my latest version, rebased approximately on current master (or 
recent maint, I guess). It's missing all of Johan's stuff, which is tests 
for stuff I've fixed
Does this mean you no longer need the tests, or that you want me to resend?
I have them, but my patch-sending process isn't set up for sending other 
people's patches without forging their email, and I wanted to get this 
series out, and they're not critical, so I skipped them for now.
No problem. Feel free to do whatever you like with them. :)
quoted
1. Add a command-line option (and config variable?) for controlling
   whether "git clone" generates packed refs.

2. Make "git clone" unconditionally generate packed refs.

Currently, I'm leaning towards (2), [...]

If there are good arguments for going with (1), I'd love to hear them.
I think it's fine, actually (now that you've not test corrections that 
work for it); but I'd like to have builtin-clone land without any changes 
in behaviour, and then get this sort of improvement.
Yes, I agree that a pure rewrite (without changes in behaviour) should be
committed first.


Have fun :)

...Johan

-- 
Johan Herland, [off-list ref]
www.herland.net
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help