* [PATCH 2/7] .gitignore: add git-remote-cvs
2009-10-29 6:40 [PATCH 0/7] Prepare git-remote-helpers series for hg support Sverre Rabbelier
@ 2009-10-29 6:40 ` Sverre Rabbelier
2009-10-29 6:40 ` [PATCH 3/7] Add notify and warn to util.py Sverre Rabbelier
` (5 subsequent siblings)
6 siblings, 0 replies; 17+ messages in thread
From: Sverre Rabbelier @ 2009-10-29 6:40 UTC (permalink / raw)
To: Git List, Johannes Schindelin, Daniel Barkalow, Johan Herland
Cc: Sverre Rabbelier
Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
---
.gitignore | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
index 46c26cd..b8afdf4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -105,6 +105,7 @@ git-reflog
git-relink
git-remote
git-remote-curl
+git-remote-cvs
git-repack
git-repo-config
git-request-pull
--
1.6.5.2.291.gf76a3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 3/7] Add notify and warn to util.py
2009-10-29 6:40 [PATCH 0/7] Prepare git-remote-helpers series for hg support Sverre Rabbelier
2009-10-29 6:40 ` [PATCH 2/7] .gitignore: add git-remote-cvs Sverre Rabbelier
@ 2009-10-29 6:40 ` Sverre Rabbelier
2009-10-29 6:40 ` [PATCH 4/7] Allow both url and foreign vcs in remote config Sverre Rabbelier
` (4 subsequent siblings)
6 siblings, 0 replies; 17+ messages in thread
From: Sverre Rabbelier @ 2009-10-29 6:40 UTC (permalink / raw)
To: Git List, Johannes Schindelin, Daniel Barkalow, Johan Herland
Cc: Sverre Rabbelier
Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
---
These turned out to be quite useful for my git-remote-hg, if
desired this patch can move to later in the series, but I
figured that it might be useful to someone else already.
git_remote_helpers/util.py | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/git_remote_helpers/util.py b/git_remote_helpers/util.py
index 7d6adb4..d3ca487 100644
--- a/git_remote_helpers/util.py
+++ b/git_remote_helpers/util.py
@@ -15,6 +15,10 @@ import subprocess
# Whether or not to show debug messages
DEBUG = False
+def notify(msg, *args):
+ """Print a message to stderr."""
+ print >> sys.stderr, msg % args
+
def debug (msg, *args):
"""Print a debug message to stderr when DEBUG is enabled."""
if DEBUG:
@@ -24,6 +28,10 @@ def error (msg, *args):
"""Print an error message to stderr."""
print >> sys.stderr, "ERROR:", msg % args
+def warn(msg, *args):
+ """Print a warning message to stderr."""
+ print >> sys.stderr, "warning:", msg % args
+
def die (msg, *args):
"""Print as error message to stderr and exit the program."""
error(msg, *args)
--
1.6.5.2.291.gf76a3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 4/7] Allow both url and foreign vcs in remote config
2009-10-29 6:40 [PATCH 0/7] Prepare git-remote-helpers series for hg support Sverre Rabbelier
2009-10-29 6:40 ` [PATCH 2/7] .gitignore: add git-remote-cvs Sverre Rabbelier
2009-10-29 6:40 ` [PATCH 3/7] Add notify and warn to util.py Sverre Rabbelier
@ 2009-10-29 6:40 ` Sverre Rabbelier
2009-10-29 6:40 ` [PATCH 5/7] Finally make remote helper support useful Sverre Rabbelier
` (3 subsequent siblings)
6 siblings, 0 replies; 17+ messages in thread
From: Sverre Rabbelier @ 2009-10-29 6:40 UTC (permalink / raw)
To: Git List, Johannes Schindelin, Daniel Barkalow, Johan Herland
Cc: Sverre Rabbelier
The current logic prevents both 'remote.url' and 'remote.vcs' from
being set, while that might be useful.
Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
---
This way I can do:
remote.hgremote.url = /path/to/hg/repo
remote.hgremote.vcs = hg
As well as:
remote.hgremote.url = hg::/path/to/hg/repo
remote.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/remote.c b/remote.c
index f0441c4..29365de 100644
--- a/remote.c
+++ b/remote.c
@@ -50,7 +50,7 @@ static char buffer[BUF_SIZE];
static int valid_remote(const struct remote *remote)
{
- return !remote->url != !remote->foreign_vcs;
+ return (!!remote->url) || (!!remote->foreign_vcs);
}
static const char *alias_url(const char *url)
--
1.6.5.2.291.gf76a3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 5/7] Finally make remote helper support useful
2009-10-29 6:40 [PATCH 0/7] Prepare git-remote-helpers series for hg support Sverre Rabbelier
` (2 preceding siblings ...)
2009-10-29 6:40 ` [PATCH 4/7] Allow both url and foreign vcs in remote config Sverre Rabbelier
@ 2009-10-29 6:40 ` Sverre Rabbelier
2009-10-29 6:40 ` [PATCH 6/7] When updating refs after a fetch, resolve the symref if set Sverre Rabbelier
` (2 subsequent siblings)
6 siblings, 0 replies; 17+ messages in thread
From: Sverre Rabbelier @ 2009-10-29 6:40 UTC (permalink / raw)
To: Git List, Johannes Schindelin, Daniel Barkalow, Johan Herland
Cc: Johannes Schindelin, Sverre Rabbelier
From: Johannes Schindelin <johannes.schindelin@gmx.de>
The common case for remote helpers will be to import some repository which
can be specified by a single URL. Rather than supporting those who say
that Git is really complicated, let's be nice to users so that they will
be able to say:
git clone hg::https://soc.googlecode.com/hg/ soc
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
--
Dscho wrote this a while back and it really does make the
series so much more useful.
transport.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/transport.c b/transport.c
index ef33404..a682c75 100644
--- a/transport.c
+++ b/transport.c
@@ -813,6 +813,16 @@ struct transport *transport_get(struct remote *remote, const char *url)
url = remote->url[0];
ret->url = url;
+ /* maybe it is a foreign URL? */
+ if (url) {
+ const char *p = url;
+
+ while (isalnum(*p))
+ p++;
+ if (!prefixcmp(p, "::"))
+ remote->foreign_vcs = xstrndup(url, p - url);
+ }
+
if (remote && remote->foreign_vcs) {
transport_helper_init(ret, remote->foreign_vcs);
return ret;
--
1.6.5.2.291.gf76a3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 6/7] When updating refs after a fetch, resolve the symref if set
2009-10-29 6:40 [PATCH 0/7] Prepare git-remote-helpers series for hg support Sverre Rabbelier
` (3 preceding siblings ...)
2009-10-29 6:40 ` [PATCH 5/7] Finally make remote helper support useful Sverre Rabbelier
@ 2009-10-29 6:40 ` Sverre Rabbelier
2009-10-29 6:40 ` [PATCH 7/7] Factor ref updating out of fetch_with_import Sverre Rabbelier
[not found] ` <1256798426-21816-2-git-send-email-srabbelier@gmail.com>
6 siblings, 0 replies; 17+ messages in thread
From: Sverre Rabbelier @ 2009-10-29 6:40 UTC (permalink / raw)
To: Git List, Johannes Schindelin, Daniel Barkalow, Johan Herland
Cc: Sverre Rabbelier
This makes it possible to return in response to 'list':
@refs/hg/origin/tip refs/heads/tip
And have HEAD resolve properly after the import completes.
Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
---
Without this it is very hard to support 'git clone' on a
non-git repository, which I think is a very important thing
to have.
transport-helper.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/transport-helper.c b/transport-helper.c
index 639f08c..a361366 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -159,7 +159,7 @@ static int fetch_with_import(struct transport *transport,
posn = to_fetch[i];
if (posn->status & REF_STATUS_UPTODATE)
continue;
- read_ref(posn->name, posn->old_sha1);
+ read_ref(posn->symref ? posn->symref : posn->name, posn->old_sha1);
}
return 0;
}
--
1.6.5.2.291.gf76a3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 7/7] Factor ref updating out of fetch_with_import
2009-10-29 6:40 [PATCH 0/7] Prepare git-remote-helpers series for hg support Sverre Rabbelier
` (4 preceding siblings ...)
2009-10-29 6:40 ` [PATCH 6/7] When updating refs after a fetch, resolve the symref if set Sverre Rabbelier
@ 2009-10-29 6:40 ` Sverre Rabbelier
2009-10-29 14:22 ` Shawn O. Pearce
[not found] ` <1256798426-21816-2-git-send-email-srabbelier@gmail.com>
6 siblings, 1 reply; 17+ messages in thread
From: Sverre Rabbelier @ 2009-10-29 6:40 UTC (permalink / raw)
To: Git List, Johannes Schindelin, Daniel Barkalow, Johan Herland
Cc: Sverre Rabbelier
Also allow the new update_refs to actually update the refs set, this
way the remote helper can set the value of previously unknown refs.
Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
---
This is the most important patch of the series, without it it
is truly impossible to 'git clone hg::/path/to/hg/repo' since
when we try to guess remote_head, we use
find_ref_by_name(refs, "HEAD"), which will not find anything
unless we set refs to the updated refs _after_ doing the
import. This is a result of the fact that we do not know the
value of the remote HEAD until after the import is complete.
builtin-clone.c | 7 +++++++
builtin-fetch.c | 4 ++++
transport-helper.c | 22 +++++++++++++++-------
transport.h | 7 +++++--
4 files changed, 31 insertions(+), 9 deletions(-)
diff --git a/builtin-clone.c b/builtin-clone.c
index f281756..768668d 100644
--- a/builtin-clone.c
+++ b/builtin-clone.c
@@ -512,6 +512,13 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
if (refs) {
struct ref *ref_cpy = copy_ref_list(refs);
transport_fetch_refs(transport, ref_cpy);
+ if (transport->update_refs)
+ {
+ ref_cpy = copy_ref_list(refs);
+ transport->update_refs(transport, ref_cpy);
+ refs = ref_cpy;
+ mapped_refs = wanted_peer_refs(refs, refspec);
+ }
}
}
diff --git a/builtin-fetch.c b/builtin-fetch.c
index 63a4ff0..3aaac47 100644
--- a/builtin-fetch.c
+++ b/builtin-fetch.c
@@ -479,7 +479,11 @@ static int fetch_refs(struct transport *transport, struct ref *ref_map)
{
int ret = quickfetch(ref_map);
if (ret)
+ {
ret = transport_fetch_refs(transport, ref_map);
+ if (transport->update_refs)
+ transport->update_refs(transport, ref_map);
+ }
if (!ret)
ret |= store_updated_refs(transport->url,
transport->remote->name,
diff --git a/transport-helper.c b/transport-helper.c
index a361366..9a98fae 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -154,13 +154,6 @@ static int fetch_with_import(struct transport *transport,
finish_command(&fastimport);
free((char *) fastimport.argv[2]);
free((char *) fastimport.argv[3]);
-
- for (i = 0; i < nr_heads; i++) {
- posn = to_fetch[i];
- if (posn->status & REF_STATUS_UPTODATE)
- continue;
- read_ref(posn->symref ? posn->symref : posn->name, posn->old_sha1);
- }
return 0;
}
@@ -255,6 +248,20 @@ static struct ref *get_refs_list(struct transport *transport, int for_push)
return ret;
}
+static int update_refs(struct transport *transport, struct ref *refs)
+{
+ struct ref *ref = refs;
+
+ while (ref) {
+ if (ref->status & REF_STATUS_UPTODATE)
+ continue;
+ read_ref(ref->symref ? ref->symref : ref->name, ref->old_sha1);
+ ref = ref->next;
+ }
+
+ return 0;
+}
+
int transport_helper_init(struct transport *transport, const char *name)
{
struct helper_data *data = xcalloc(sizeof(*data), 1);
@@ -264,5 +271,6 @@ int transport_helper_init(struct transport *transport, const char *name)
transport->get_refs_list = get_refs_list;
transport->fetch = fetch;
transport->disconnect = release_helper;
+ transport->update_refs = update_refs;
return 0;
}
diff --git a/transport.h b/transport.h
index 40dfe64..6d31df3 100644
--- a/transport.h
+++ b/transport.h
@@ -32,12 +32,15 @@ struct transport {
/**
* Fetch the objects for the given refs. Note that this gets
* an array, and should ignore the list structure.
- *
+ **/
+ int (*fetch)(struct transport *transport, int refs_nr, struct ref **refs);
+
+ /**
* If the transport did not get hashes for refs in
* get_refs_list(), it should set the old_sha1 fields in the
* provided refs now.
**/
- int (*fetch)(struct transport *transport, int refs_nr, struct ref **refs);
+ int (*update_refs)(struct transport *transport, struct ref *refs);
/**
* Push the objects and refs. Send the necessary objects, and
--
1.6.5.2.291.gf76a3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 7/7] Factor ref updating out of fetch_with_import
2009-10-29 6:40 ` [PATCH 7/7] Factor ref updating out of fetch_with_import Sverre Rabbelier
@ 2009-10-29 14:22 ` Shawn O. Pearce
2009-10-29 15:53 ` Sverre Rabbelier
0 siblings, 1 reply; 17+ messages in thread
From: Shawn O. Pearce @ 2009-10-29 14:22 UTC (permalink / raw)
To: Sverre Rabbelier
Cc: Git List, Johannes Schindelin, Daniel Barkalow, Johan Herland
Sverre Rabbelier <srabbelier@gmail.com> wrote:
> Also allow the new update_refs to actually update the refs set, this
> way the remote helper can set the value of previously unknown refs.
...
> diff --git a/builtin-clone.c b/builtin-clone.c
> index f281756..768668d 100644
> --- a/builtin-clone.c
> +++ b/builtin-clone.c
> @@ -512,6 +512,13 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
> if (refs) {
> struct ref *ref_cpy = copy_ref_list(refs);
> transport_fetch_refs(transport, ref_cpy);
> + if (transport->update_refs)
> + {
> + ref_cpy = copy_ref_list(refs);
> + transport->update_refs(transport, ref_cpy);
Please define a transport_update_refs wrapper function to implement
this method invocation on the transport instance. Callers should
not be reaching into the struct transport directly.
> diff --git a/builtin-fetch.c b/builtin-fetch.c
> index 63a4ff0..3aaac47 100644
> --- a/builtin-fetch.c
> +++ b/builtin-fetch.c
> @@ -479,7 +479,11 @@ static int fetch_refs(struct transport *transport, struct ref *ref_map)
> {
> int ret = quickfetch(ref_map);
> if (ret)
> + {
> ret = transport_fetch_refs(transport, ref_map);
> + if (transport->update_refs)
> + transport->update_refs(transport, ref_map);
I certainly have to wonder... if this is done in both fetch and
clone, why isn't it just part of fetch_refs?
> diff --git a/transport-helper.c b/transport-helper.c
> index a361366..9a98fae 100644
> --- a/transport-helper.c
> +++ b/transport-helper.c
> @@ -264,5 +271,6 @@ int transport_helper_init(struct transport *transport, const char *name)
> transport->get_refs_list = get_refs_list;
> transport->fetch = fetch;
> transport->disconnect = release_helper;
> + transport->update_refs = update_refs;
Please set this before the disconnect method (move it up one line).
--
Shawn.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 7/7] Factor ref updating out of fetch_with_import
2009-10-29 14:22 ` Shawn O. Pearce
@ 2009-10-29 15:53 ` Sverre Rabbelier
2009-10-29 15:56 ` Shawn O. Pearce
0 siblings, 1 reply; 17+ messages in thread
From: Sverre Rabbelier @ 2009-10-29 15:53 UTC (permalink / raw)
To: Shawn O. Pearce
Cc: Git List, Johannes Schindelin, Daniel Barkalow, Johan Herland
Heya,
On Thu, Oct 29, 2009 at 07:22, Shawn O. Pearce <spearce@spearce.org> wrote:
> Please define a transport_update_refs wrapper function to implement
> this method invocation on the transport instance. Callers should
> not be reaching into the struct transport directly.
With pleasure, should the transport_update_refs wrapper simply 'return
1' without doing anything if transport->update_refs is not set?
> I certainly have to wonder... if this is done in both fetch and
> clone, why isn't it just part of fetch_refs?
Because clone does not use fetch_refs, or am I missing something?
> Please set this before the disconnect method (move it up one line).
Will do.
--
Cheers,
Sverre Rabbelier
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 7/7] Factor ref updating out of fetch_with_import
2009-10-29 15:53 ` Sverre Rabbelier
@ 2009-10-29 15:56 ` Shawn O. Pearce
2009-10-29 16:32 ` Sverre Rabbelier
0 siblings, 1 reply; 17+ messages in thread
From: Shawn O. Pearce @ 2009-10-29 15:56 UTC (permalink / raw)
To: Sverre Rabbelier
Cc: Git List, Johannes Schindelin, Daniel Barkalow, Johan Herland
Sverre Rabbelier <srabbelier@gmail.com> wrote:
> On Thu, Oct 29, 2009 at 07:22, Shawn O. Pearce <spearce@spearce.org> wrote:
> > Please define a transport_update_refs wrapper function to implement
> > this method invocation on the transport instance. ?Callers should
> > not be reaching into the struct transport directly.
>
> With pleasure, should the transport_update_refs wrapper simply 'return
> 1' without doing anything if transport->update_refs is not set?
If the function isn't defined, it should behave as though it were
defined and successfully completed.
> > I certainly have to wonder... if this is done in both fetch and
> > clone, why isn't it just part of fetch_refs?
>
> Because clone does not use fetch_refs, or am I missing something?
Hmmph. Weird. Its been a while since I last looked at this code,
maybe I misunderstood it.
--
Shawn.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 7/7] Factor ref updating out of fetch_with_import
2009-10-29 15:56 ` Shawn O. Pearce
@ 2009-10-29 16:32 ` Sverre Rabbelier
2009-10-29 17:22 ` Daniel Barkalow
0 siblings, 1 reply; 17+ messages in thread
From: Sverre Rabbelier @ 2009-10-29 16:32 UTC (permalink / raw)
To: Shawn O. Pearce
Cc: Git List, Johannes Schindelin, Daniel Barkalow, Johan Herland
Heya,
On Thu, Oct 29, 2009 at 08:56, Shawn O. Pearce <spearce@spearce.org> wrote:
>> > I certainly have to wonder... if this is done in both fetch and
>> > clone, why isn't it just part of fetch_refs?
>>
>> Because clone does not use fetch_refs, or am I missing something?
>
> Hmmph. Weird. Its been a while since I last looked at this code,
> maybe I misunderstood it.
Unless you mean transport_fetch_refs? It can't be done in
transport_fetch_refs because the foreign helper transport needs to
update all refs, including those that wanted_peer_refs decided not to
fetch. Otherwise the 'HEAD' ref will not be updated, and it is left at
all zeros. It is not as obvious that that is a problem in this patch,
but when Junio merges with Nico's [5bdc32d3e "make 'git clone' ask the
remote only for objects it cares about"] the code looks like this:
if (refs) {
struct ref *ref_cpy;
mapped_refs = wanted_peer_refs(refs, refspec);
ref_cpy = copy_ref_list(mapped_refs);
transport_fetch_refs(transport, ref_cpy);
if (transport->update_refs)
{
ref_cpy = copy_ref_list(refs);
transport->update_refs(transport, ref_cpy);
refs = ref_cpy;
mapped_refs = wanted_peer_refs(refs, refspec);
}
}
Does it make more sense now? transport_fetch_refs gets only a limited
view of the refs, so it cannot pass all the refs to
transport_update_refs as needed.
--
Cheers,
Sverre Rabbelier
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 7/7] Factor ref updating out of fetch_with_import
2009-10-29 16:32 ` Sverre Rabbelier
@ 2009-10-29 17:22 ` Daniel Barkalow
2009-10-29 17:39 ` Sverre Rabbelier
0 siblings, 1 reply; 17+ messages in thread
From: Daniel Barkalow @ 2009-10-29 17:22 UTC (permalink / raw)
To: Sverre Rabbelier
Cc: Shawn O. Pearce, Git List, Johannes Schindelin, Johan Herland
[-- Attachment #1: Type: TEXT/PLAIN, Size: 2196 bytes --]
On Thu, 29 Oct 2009, Sverre Rabbelier wrote:
> Heya,
>
> On Thu, Oct 29, 2009 at 08:56, Shawn O. Pearce <spearce@spearce.org> wrote:
> >> > I certainly have to wonder... if this is done in both fetch and
> >> > clone, why isn't it just part of fetch_refs?
> >>
> >> Because clone does not use fetch_refs, or am I missing something?
> >
> > Hmmph. Weird. Its been a while since I last looked at this code,
> > maybe I misunderstood it.
>
> Unless you mean transport_fetch_refs? It can't be done in
> transport_fetch_refs because the foreign helper transport needs to
> update all refs, including those that wanted_peer_refs decided not to
> fetch. Otherwise the 'HEAD' ref will not be updated, and it is left at
> all zeros. It is not as obvious that that is a problem in this patch,
> but when Junio merges with Nico's [5bdc32d3e "make 'git clone' ask the
> remote only for objects it cares about"] the code looks like this:
>
> if (refs) {
> struct ref *ref_cpy;
> mapped_refs = wanted_peer_refs(refs, refspec);
> ref_cpy = copy_ref_list(mapped_refs);
> transport_fetch_refs(transport, ref_cpy);
> if (transport->update_refs)
> {
> ref_cpy = copy_ref_list(refs);
> transport->update_refs(transport, ref_cpy);
> refs = ref_cpy;
> mapped_refs = wanted_peer_refs(refs, refspec);
> }
> }
>
> Does it make more sense now? transport_fetch_refs gets only a limited
> view of the refs, so it cannot pass all the refs to
> transport_update_refs as needed.
I think there are a bunch of bugs that you're working around:
(a) if HEAD is determined to be a symref, and we care about HEAD, we care
about whatever HEAD is a symref to; wanted_peer_refs() shouldn't be
filtering such things out.
(b) we don't want to make a whole bunch of copies of the ref list to avoid
updating the mutable ref list that we will look for updated values in; the
merge of my series with Nico's should replace my copy_ref_list with his
wanted_peer_refs, not include the copy afterwards. Correcting this should
lead to the value that matters in the list that will be used having been
updated directly by transport_fetch_refs().
-Daniel
*This .sig left intentionally blank*
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 7/7] Factor ref updating out of fetch_with_import
2009-10-29 17:22 ` Daniel Barkalow
@ 2009-10-29 17:39 ` Sverre Rabbelier
2009-10-29 18:43 ` Daniel Barkalow
0 siblings, 1 reply; 17+ messages in thread
From: Sverre Rabbelier @ 2009-10-29 17:39 UTC (permalink / raw)
To: Daniel Barkalow
Cc: Shawn O. Pearce, Git List, Johannes Schindelin, Johan Herland
Heya,
On Thu, Oct 29, 2009 at 10:22, Daniel Barkalow <barkalow@iabervon.org> wrote:
> (a) if HEAD is determined to be a symref, and we care about HEAD, we care
> about whatever HEAD is a symref to; wanted_peer_refs() shouldn't be
> filtering such things out.
It seems that wanted_peer_refs filters out HEAD no matter what though?
> (b) we don't want to make a whole bunch of copies of the ref list to avoid
> updating the mutable ref list that we will look for updated values in; the
> merge of my series with Nico's should replace my copy_ref_list with his
> wanted_peer_refs, not include the copy afterwards. Correcting this should
> lead to the value that matters in the list that will be used having been
> updated directly by transport_fetch_refs().
This I can and will fix. Patch-bomb incoming.
--
Cheers,
Sverre Rabbelier
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 7/7] Factor ref updating out of fetch_with_import
2009-10-29 17:39 ` Sverre Rabbelier
@ 2009-10-29 18:43 ` Daniel Barkalow
2009-10-29 18:47 ` Sverre Rabbelier
0 siblings, 1 reply; 17+ messages in thread
From: Daniel Barkalow @ 2009-10-29 18:43 UTC (permalink / raw)
To: Sverre Rabbelier
Cc: Shawn O. Pearce, Git List, Johannes Schindelin, Johan Herland
On Thu, 29 Oct 2009, Sverre Rabbelier wrote:
> Heya,
>
> On Thu, Oct 29, 2009 at 10:22, Daniel Barkalow <barkalow@iabervon.org> wrote:
> > (a) if HEAD is determined to be a symref, and we care about HEAD, we care
> > about whatever HEAD is a symref to; wanted_peer_refs() shouldn't be
> > filtering such things out.
>
> It seems that wanted_peer_refs filters out HEAD no matter what though?
It probably shouldn't. Actually, I bet Nico's clone will get extremely
confused if the remote's HEAD isn't the same as any of its branches. I'll
try to take a look tonight.
> > (b) we don't want to make a whole bunch of copies of the ref list to avoid
> > updating the mutable ref list that we will look for updated values in; the
> > merge of my series with Nico's should replace my copy_ref_list with his
> > wanted_peer_refs, not include the copy afterwards. Correcting this should
> > lead to the value that matters in the list that will be used having been
> > updated directly by transport_fetch_refs().
>
> This I can and will fix. Patch-bomb incoming.
I'll look over it later, thanks.
-Daniel
*This .sig left intentionally blank*
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 7/7] Factor ref updating out of fetch_with_import
2009-10-29 18:43 ` Daniel Barkalow
@ 2009-10-29 18:47 ` Sverre Rabbelier
0 siblings, 0 replies; 17+ messages in thread
From: Sverre Rabbelier @ 2009-10-29 18:47 UTC (permalink / raw)
To: Daniel Barkalow
Cc: Shawn O. Pearce, Git List, Johannes Schindelin, Johan Herland
Heya,
On Thu, Oct 29, 2009 at 11:43, Daniel Barkalow <barkalow@iabervon.org> wrote:
> It probably shouldn't. Actually, I bet Nico's clone will get extremely
> confused if the remote's HEAD isn't the same as any of its branches. I'll
> try to take a look tonight.
>
> I'll look over it later, thanks.
Thanks!
--
Cheers,
Sverre Rabbelier
^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <1256798426-21816-2-git-send-email-srabbelier@gmail.com>]
* Re: [PATCH 1/7] Refactor git_remote_cvs to a more generic git_remote_helpers
[not found] ` <1256798426-21816-2-git-send-email-srabbelier@gmail.com>
@ 2009-10-29 12:05 ` Johan Herland
2009-10-29 15:48 ` Sverre Rabbelier
0 siblings, 1 reply; 17+ messages in thread
From: Johan Herland @ 2009-10-29 12:05 UTC (permalink / raw)
To: Sverre Rabbelier; +Cc: Git List, Johannes Schindelin, Daniel Barkalow
On Thursday 29 October 2009, Sverre Rabbelier wrote:
> This in an effort to allow future remote helpers written in python to
> re-use the non-cvs-specific code.
>
> Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
> CC: Johan Herland <johan@herland.net>
> ---
>
> As discussed with Johan Herland, refactored git_remote_cvs into a
> more reusable git_remote_helpers module.
It's hard to review this patch for a couple of reasons:
1. It's over 200K large, which causes it to be blocked by the Git mailing
list (100K limit, I believe).
2. The patch renames some files, but instead of simply stating the rename,
the patch lists the entire file twice (deletion + creation)
Fortunately, you can easily solve both problems by rerolling the patch with
the -M flag to git-format-patch.
...Johan
--
Johan Herland, <johan@herland.net>
www.herland.net
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/7] Refactor git_remote_cvs to a more generic git_remote_helpers
2009-10-29 12:05 ` [PATCH 1/7] Refactor git_remote_cvs to a more generic git_remote_helpers Johan Herland
@ 2009-10-29 15:48 ` Sverre Rabbelier
0 siblings, 0 replies; 17+ messages in thread
From: Sverre Rabbelier @ 2009-10-29 15:48 UTC (permalink / raw)
To: Johan Herland; +Cc: Git List, Johannes Schindelin, Daniel Barkalow
Heya,
On Thu, Oct 29, 2009 at 05:05, Johan Herland <johan@herland.net> wrote:
> Fortunately, you can easily solve both problems by rerolling the patch with
> the -M flag to git-format-patch.
Whow, I feel really silly now, thanks for pointing that out, proper patch sent!
--
Cheers,
Sverre Rabbelier
^ permalink raw reply [flat|nested] 17+ messages in thread