From: sean <seanlkml@sympatico.ca>
To: Linus Torvalds <torvalds@osdl.org>
Cc: junkio@cox.net, git@vger.kernel.org
Subject: Re: [PATCH] git builtin "push"
Date: Sun, 30 Apr 2006 05:40:49 -0400 [thread overview]
Message-ID: <BAYC1-PASMTP011ED54A1802BC6DF017AAAEB00@CEZ.ICE> (raw)
Message-ID: <20060430054049.7856f24c.seanlkml@sympatico.ca> (raw)
In-Reply-To: <Pine.LNX.4.64.0604292111570.9901@g5.osdl.org>
On Sat, 29 Apr 2006 21:22:49 -0700 (PDT)
Linus Torvalds <torvalds@osdl.org> wrote:
> Comments? I wrote it so that it _should_ be fairly easy to re-use at
> least the branches/remotes helper functions for a built-in "git fetch" as
> well. But I didn't have the multi-URI issue with anything but pushing.
> + if (strncmp(ref, "tags/", 5))
> + return 0;
[...]
> + for_each_ref(expand_one_ref);
How about a for_each_tag() function?
> + int i, n = get_uri(repo, uri);
[...]
> + n = get_uri(repo, uri);
> + if (n <= 0)
> + die("bad repository '%s'", repo);
get_uri() called twice.
The patch looks good and is easy to read, but wouldn't it be better
to require new c code to be thread safe and not leak memory? Assuming
run-once-and-exit is making it difficult to push into a library.
Sean
builtin-push.c | 11 +++--------
refs.c | 5 +++++
refs.h | 1 +
3 files changed, 9 insertions(+), 8 deletions(-)
0e0e3cff71d65ac4cdc560ae143aded03acb4ceb
diff --git a/builtin-push.c b/builtin-push.c
index a0c1caa..0d74ed1 100644
--- a/builtin-push.c
+++ b/builtin-push.c
@@ -31,10 +31,6 @@ static int expand_one_ref(const char *re
{
/* Ignore the "refs/" at the beginning of the refname */
ref += 5;
-
- if (strncmp(ref, "tags/", 5))
- return 0;
-
add_refspec(strdup(ref));
return 0;
}
@@ -51,9 +47,8 @@ static void expand_refspecs(void)
*/
return;
}
- if (!tags)
- return;
- for_each_ref(expand_one_ref);
+ if (tags)
+ for_each_tag(expand_one_ref);
}
static void set_refspecs(const char **refs, int nr)
@@ -156,7 +151,7 @@ static int get_uri(const char *repo, con
static int do_push(const char *repo)
{
const char *uri[MAX_URI];
- int i, n = get_uri(repo, uri);
+ int i, n;
int remote;
const char **argv;
int argc;
diff --git a/refs.c b/refs.c
index 03398cc..c5a2dd0 100644
--- a/refs.c
+++ b/refs.c
@@ -178,6 +178,11 @@ int head_ref(int (*fn)(const char *path,
return 0;
}
+int for_each_tag(int (*fn)(const char *path, const unsigned char *sha1))
+{
+ return do_for_each_ref("refs/tags", fn);
+}
+
int for_each_ref(int (*fn)(const char *path, const unsigned char *sha1))
{
return do_for_each_ref("refs", fn);
diff --git a/refs.h b/refs.h
index 2625596..b74cd4d 100644
--- a/refs.h
+++ b/refs.h
@@ -7,6 +7,7 @@ #define REFS_H
*/
extern int head_ref(int (*fn)(const char *path, const unsigned char *sha1));
extern int for_each_ref(int (*fn)(const char *path, const unsigned char *sha1));
+extern int for_each_tag(int (*fn)(const char *path, const unsigned char *sha1));
/** Reads the refs file specified into sha1 **/
extern int get_ref_sha1(const char *ref, unsigned char *sha1);
--
1.3.1.g9c203
next prev parent reply other threads:[~2006-04-30 9:45 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-30 4:22 [PATCH] git builtin "push" Linus Torvalds
2006-04-30 7:08 ` Junio C Hamano
[not found] ` <20060430054049.7856f24c.seanlkml@sympatico.ca>
2006-04-30 9:40 ` sean [this message]
2006-04-30 19:58 ` Jeff Garzik
2006-04-30 20:07 ` Linus Torvalds
[not found] ` <20060430165028.215d4fdf.seanlkml@sympatico.ca>
2006-04-30 20:50 ` sean
2006-04-30 21:05 ` Linus Torvalds
2006-04-30 21:47 ` Junio C Hamano
2006-04-30 21:30 ` Jeff Garzik
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=BAYC1-PASMTP011ED54A1802BC6DF017AAAEB00@CEZ.ICE \
--to=seanlkml@sympatico.ca \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=torvalds@osdl.org \
/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).