All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sverre Rabbelier <srabbelier@gmail.com>
To: Git List <git@vger.kernel.org>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	Daniel Barkalow <barkalow@iabervon.org>,
	Johan Herland <johan@herland.net>
Cc: Daniel Barkalow <barkalow@iabervon.org>
Subject: [PATCH v4 10/12] Allow helpers to report in "list" command that the ref is unchanged
Date: Wed, 18 Nov 2009 02:42:30 +0100	[thread overview]
Message-ID: <1258508552-20752-11-git-send-email-srabbelier@gmail.com> (raw)
In-Reply-To: <1258508552-20752-10-git-send-email-srabbelier@gmail.com>

From: Daniel Barkalow <barkalow@iabervon.org>

Helpers may use a line like "? name unchanged" to specify that there
is nothing new at that name, without any git-specific code to
determine the correct response.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
---

	Unchanged.

 Documentation/git-remote-helpers.txt |    4 +++-
 transport-helper.c                   |   22 ++++++++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletions(-)

diff --git a/Documentation/git-remote-helpers.txt b/Documentation/git-remote-helpers.txt
index d6c5268..f4b6a5a 100644
--- a/Documentation/git-remote-helpers.txt
+++ b/Documentation/git-remote-helpers.txt
@@ -84,7 +84,9 @@ CAPABILITIES
 REF LIST ATTRIBUTES
 -------------------
 
-None are defined yet, but the caller must accept any which are supplied.
+'unchanged'::
+	This ref is unchanged since the last import or fetch, although
+	the helper cannot necessarily determine what value that produced.
 
 Documentation
 -------------
diff --git a/transport-helper.c b/transport-helper.c
index 628a5ca..c87530e 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -206,6 +206,22 @@ static int fetch(struct transport *transport,
 	return -1;
 }
 
+static int has_attribute(const char *attrs, const char *attr) {
+	int len;
+	if (!attrs)
+		return 0;
+
+	len = strlen(attr);
+	for (;;) {
+		const char *space = strchrnul(attrs, ' ');
+		if (len == space - attrs && !strncmp(attrs, attr, len))
+			return 1;
+		if (!*space)
+			return 0;
+		attrs = space + 1;
+	}
+}
+
 static struct ref *get_refs_list(struct transport *transport, int for_push)
 {
 	struct child_process *helper;
@@ -240,6 +256,12 @@ static struct ref *get_refs_list(struct transport *transport, int for_push)
 			(*tail)->symref = xstrdup(buf.buf + 1);
 		else if (buf.buf[0] != '?')
 			get_sha1_hex(buf.buf, (*tail)->old_sha1);
+		if (eon) {
+			if (has_attribute(eon + 1, "unchanged")) {
+				(*tail)->status |= REF_STATUS_UPTODATE;
+				read_ref((*tail)->name, (*tail)->old_sha1);
+			}
+		}
 		tail = &((*tail)->next);
 	}
 	strbuf_release(&buf);
-- 
1.6.5.3.164.g07b0c

  reply	other threads:[~2009-11-18  1:44 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-18  1:42 [PATCH v4 00/12] Reroll of the remote-vcs-helper series Sverre Rabbelier
2009-11-18  1:42 ` [PATCH v4 01/12] Fix memory leak in helper method for disconnect Sverre Rabbelier
2009-11-18  1:42   ` [PATCH v4 02/12] Allow programs to not depend on remotes having urls Sverre Rabbelier
2009-11-18  1:42     ` [PATCH v4 03/12] Use a function to determine whether a remote is valid Sverre Rabbelier
2009-11-18  1:42       ` [PATCH v4 04/12] Allow fetch to modify refs Sverre Rabbelier
2009-11-18  1:42         ` [PATCH v4 05/12] Add a config option for remotes to specify a foreign vcs Sverre Rabbelier
2009-11-18  1:42           ` [PATCH v4 06/12] Allow specifying the remote helper in the url Sverre Rabbelier
2009-11-18  1:42             ` [PATCH v4 07/12] Add support for "import" helper command Sverre Rabbelier
2009-11-18  1:42               ` [PATCH v4 08/12] Allow helper to map private ref names into normal names Sverre Rabbelier
2009-11-18  1:42                 ` [PATCH v4 09/12] Fix various memory leaks in transport-helper.c Sverre Rabbelier
2009-11-18  1:42                   ` Sverre Rabbelier [this message]
2009-11-18  1:42                     ` [PATCH v4 11/12] Basic build infrastructure for Python scripts Sverre Rabbelier
2009-11-18  1:42                       ` [PATCH v4 12/12] Add Python support library for remote helpers Sverre Rabbelier

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=1258508552-20752-11-git-send-email-srabbelier@gmail.com \
    --to=srabbelier@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=barkalow@iabervon.org \
    --cc=git@vger.kernel.org \
    --cc=johan@herland.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.