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 v3 09/12] Allow helpers to report in "list" command that the ref is unchanged
Date: Fri,  6 Nov 2009 23:52:43 +0100	[thread overview]
Message-ID: <1257547966-14603-10-git-send-email-srabbelier@gmail.com> (raw)
In-Reply-To: <1257547966-14603-9-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 e9aa67e..2c5130f 100644
--- a/Documentation/git-remote-helpers.txt
+++ b/Documentation/git-remote-helpers.txt
@@ -70,7 +70,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 c4ab84a..d38dedf 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -194,6 +194,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;
@@ -228,6 +244,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.2.158.g6dacb

  reply	other threads:[~2009-11-06 22:55 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-06 22:52 [PATCH v3 00/12] Reroll of the remote-vcs-helper series Sverre Rabbelier
2009-11-06 22:52 ` [PATCH v3 01/12] Fix memory leak in helper method for disconnect Sverre Rabbelier
2009-11-06 22:52   ` [PATCH v3 02/12] Allow programs to not depend on remotes having urls Sverre Rabbelier
2009-11-06 22:52     ` [PATCH v3 03/12] Use a function to determine whether a remote is valid Sverre Rabbelier
2009-11-06 22:52       ` [PATCH v3 04/12] Allow fetch to modify refs Sverre Rabbelier
2009-11-06 22:52         ` [PATCH v3 05/12] Add a config option for remotes to specify a foreign vcs Sverre Rabbelier
2009-11-06 22:52           ` [PATCH v3 06/12] Allow specifying the remote helper in the url Sverre Rabbelier
2009-11-06 22:52             ` [PATCH v3 07/12] Add support for "import" helper command Sverre Rabbelier
2009-11-06 22:52               ` [PATCH v3 08/12] Allow helper to map private ref names into normal names Sverre Rabbelier
2009-11-06 22:52                 ` Sverre Rabbelier [this message]
2009-11-06 22:52                   ` [PATCH v3 10/12] Allow helpers to request the path to the .git directory Sverre Rabbelier
2009-11-06 22:52                     ` [PATCH v3 11/12] Basic build infrastructure for Python scripts Sverre Rabbelier
2009-11-06 22:52                       ` [PATCH v3 12/12] Add Python support library for remote helpers Sverre Rabbelier
2009-11-06 23:23                       ` [PATCH v3 11/12] Basic build infrastructure for Python scripts Andrzej K. Haczewski
2009-11-06 23:25                         ` Sverre Rabbelier
2009-11-07 12:13                           ` Johannes Schindelin
2009-11-06 23:12                 ` [PATCH v3 08/12] Allow helper to map private ref names into normal names Daniel Barkalow
2009-11-06 23:19                   ` Sverre Rabbelier
2009-11-09  6:42                     ` Sverre Rabbelier
2009-11-09 16:44                       ` Junio C Hamano
2009-11-09 17:10                         ` Sverre Rabbelier
2009-11-09 20:32                           ` Junio C Hamano

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=1257547966-14603-10-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.