git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Felipe Contreras <felipe.contreras@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Jeff King <peff@peff.net>,
	Ilari Liusvaara <ilari.liusvaara@elisanet.fi>,
	Sverre Rabbelier <srabbelier@gmail.com>,
	Felipe Contreras <felipe.contreras@gmail.com>,
	Elijah Newren <newren@gmail.com>,
	Thiago Farina <tfransosi@gmail.com>
Subject: [PATCH v6 p2 1/9] transport-helper: update remote helper namespace
Date: Sat, 24 Nov 2012 04:25:12 +0100	[thread overview]
Message-ID: <1353727520-26039-2-git-send-email-felipe.contreras@gmail.com> (raw)
In-Reply-To: <1353727520-26039-1-git-send-email-felipe.contreras@gmail.com>

When pushing, the remote namespace is updated correctly
(e.g. refs/origin/master), but not the remote helper's
(e.g. refs/testgit/origin/master).

This alone should not cause any regressions, but combined with other
patches to handle negative refs correctly (upcoming patch), it might.
However, that's a good thing;  otherwise those issues would go
unnoticed.

For the moment though, this patch alone shouldn't cause any issues, in
fact the rest of the code seems to rely on this happening.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 transport-helper.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/transport-helper.c b/transport-helper.c
index cfe0988..32ad877 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -10,6 +10,7 @@
 #include "string-list.h"
 #include "thread-utils.h"
 #include "sigchain.h"
+#include "refs.h"
 
 static int debug;
 
@@ -600,7 +601,7 @@ static int fetch(struct transport *transport,
 	return -1;
 }
 
-static void push_update_ref_status(struct strbuf *buf,
+static int push_update_ref_status(struct strbuf *buf,
 				   struct ref **ref,
 				   struct ref *remote_refs)
 {
@@ -651,7 +652,7 @@ static void push_update_ref_status(struct strbuf *buf,
 		*ref = find_ref_by_name(remote_refs, refname);
 	if (!*ref) {
 		warning("helper reported unexpected status of %s", refname);
-		return;
+		return 1;
 	}
 
 	if ((*ref)->status != REF_STATUS_NONE) {
@@ -660,11 +661,12 @@ static void push_update_ref_status(struct strbuf *buf,
 		 * status reported by the remote helper if the latter is 'no match'.
 		 */
 		if (status == REF_STATUS_NONE)
-			return;
+			return 1;
 	}
 
 	(*ref)->status = status;
 	(*ref)->remote_status = msg;
+	return 0;
 }
 
 static void push_update_refs_status(struct helper_data *data,
@@ -673,11 +675,23 @@ static void push_update_refs_status(struct helper_data *data,
 	struct strbuf buf = STRBUF_INIT;
 	struct ref *ref = remote_refs;
 	for (;;) {
+		char *private;
+
 		recvline(data, &buf);
 		if (!buf.len)
 			break;
 
-		push_update_ref_status(&buf, &ref, remote_refs);
+		if (push_update_ref_status(&buf, &ref, remote_refs))
+			continue;
+
+		if (!data->refspecs)
+			continue;
+
+		/* propagate back the update to the remote namespace */
+		private = apply_refspecs(data->refspecs, data->refspec_nr, ref->name);
+		if (!private)
+			continue;
+		update_ref("update by helper", private, ref->new_sha1, NULL, 0, 0);
 	}
 	strbuf_release(&buf);
 }
-- 
1.8.0

  reply	other threads:[~2012-11-24  3:25 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-24  3:25 [PATCH v6 p2 0/9] transport-helper and fast-export fixes Felipe Contreras
2012-11-24  3:25 ` Felipe Contreras [this message]
2012-11-24  3:28   ` [PATCH v6 p2 1/9] transport-helper: update remote helper namespace Felipe Contreras
2012-11-24  3:25 ` [PATCH v6 p2 2/9] fast-export: don't handle uninteresting refs Felipe Contreras
2012-11-24  3:27   ` Felipe Contreras
2012-11-24  3:25 ` [PATCH v6 p2 3/9] transport-helper: trivial code shuffle Felipe Contreras
2012-11-27 17:00   ` Junio C Hamano
2012-11-28  0:05     ` Felipe Contreras
2012-11-28  1:54       ` Junio C Hamano
2012-11-28  2:15         ` Felipe Contreras
2012-11-24  3:25 ` [PATCH v6 p2 4/9] transport-helper: fix push without refspec Felipe Contreras
2012-11-24  3:25 ` [PATCH v6 p2 5/9] transport-helper: fix pushing with straight refspec Felipe Contreras
2012-11-24  3:25 ` [PATCH v6 p2 6/9] transport-helper: fix push without marks Felipe Contreras
2012-11-24  3:25 ` [PATCH v6 p2 7/9] fast-export: make extra_refs global Felipe Contreras
2012-11-24  3:25 ` [PATCH v6 p2 8/9] fast-export: refactor get_tags_and_duplicates() Felipe Contreras
2012-11-24  3:25 ` [PATCH v6 p2 9/9] fast-export: trivial cleanups Felipe Contreras

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1353727520-26039-2-git-send-email-felipe.contreras@gmail.com \
    --to=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=ilari.liusvaara@elisanet.fi \
    --cc=newren@gmail.com \
    --cc=peff@peff.net \
    --cc=srabbelier@gmail.com \
    --cc=tfransosi@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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).