git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] Add a --dry-run option to git-send-pack.
@ 2007-10-10 23:34 Brian Ewins
  0 siblings, 0 replies; only message in thread
From: Brian Ewins @ 2007-10-10 23:34 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano

Signed-off-by: Brian Ewins <brian.ewins@gmail.com>
---
  Documentation/git-send-pack.txt |    5 ++++-
  send-pack.c                     |   31 +++++++++++++++++++------------
  2 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/Documentation/git-send-pack.txt b/Documentation/git-send- 
pack.txt
index 3271e88..9e2783c 100644
--- a/Documentation/git-send-pack.txt
+++ b/Documentation/git-send-pack.txt
@@ -8,7 +8,7 @@ git-send-pack - Push objects over git protocol to  
another repository

  SYNOPSIS
  --------
-'git-send-pack' [--all] [--force] [--receive-pack=<git-receive- 
pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...]
+'git-send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git- 
receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...]

  DESCRIPTION
  -----------
@@ -34,6 +34,9 @@ OPTIONS
  	Instead of explicitly specifying which refs to update,
  	update all heads that locally exist.

+\--dry-run::
+	Show what would have been updated, but do not send any updates.
+
  \--force::
  	Usually, the command refuses to update a remote ref that
  	is not an ancestor of the local ref used to overwrite it.
diff --git a/send-pack.c b/send-pack.c
index f74e66a..e8bef4f 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -7,13 +7,14 @@
  #include "remote.h"

  static const char send_pack_usage[] =
-"git-send-pack [--all] [--force] [--receive-pack=<git-receive-pack>]  
[--verbose] [--thin] [<host>:]<directory> [<ref>...]\n"
+"git-send-pack [--all] [--dry-run] [--force] [--receive-pack=<git- 
receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...]\n"
  "  --all and explicit <ref> specification are mutually exclusive.";
  static const char *receivepack = "git-receive-pack";
  static int verbose;
  static int send_all;
  static int force_update;
  static int use_thin_pack;
+static int dry_run;

  /*
   * Make a pack stream and spit it out into file descriptor fd
@@ -282,16 +283,18 @@ static int send_pack(int in, int out, struct  
remote *remote, int nr_refspec, cha
  		strcpy(old_hex, sha1_to_hex(ref->old_sha1));
  		new_hex = sha1_to_hex(ref->new_sha1);

-		if (ask_for_status_report) {
-			packet_write(out, "%s %s %s%c%s",
-				     old_hex, new_hex, ref->name, 0,
-				     "report-status");
-			ask_for_status_report = 0;
-			expect_status_report = 1;
+		if (!dry_run) {
+			if (ask_for_status_report) {
+				packet_write(out, "%s %s %s%c%s",
+				     	old_hex, new_hex, ref->name, 0,
+						"report-status");
+				ask_for_status_report = 0;
+				expect_status_report = 1;
+			}
+			else
+				packet_write(out, "%s %s %s",
+					old_hex, new_hex, ref->name);
  		}
-		else
-			packet_write(out, "%s %s %s",
-				     old_hex, new_hex, ref->name);
  		if (will_delete_ref)
  			fprintf(stderr, "deleting '%s'\n", ref->name);
  		else {
@@ -302,7 +305,7 @@ static int send_pack(int in, int out, struct  
remote *remote, int nr_refspec, cha
  			fprintf(stderr, "\n  from %s\n  to   %s\n",
  				old_hex, new_hex);
  		}
-		if (remote) {
+		if (remote && !dry_run) {
  			struct refspec rs;
  			rs.src = ref->name;
  			rs.dst = NULL;
@@ -321,7 +324,7 @@ static int send_pack(int in, int out, struct  
remote *remote, int nr_refspec, cha
  	}

  	packet_flush(out);
-	if (new_refs)
+	if (new_refs && !dry_run)
  		ret = pack_objects(out, remote_refs);
  	close(out);

@@ -390,6 +393,10 @@ int main(int argc, char **argv)
  				send_all = 1;
  				continue;
  			}
+			if (!strcmp(arg, "--dry-run")) {
+				dry_run = 1;
+				continue;
+			}
  			if (!strcmp(arg, "--force")) {
  				force_update = 1;
  				continue;
-- 
1.5.2.5

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2007-10-10 23:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-10 23:34 [PATCH 1/2] Add a --dry-run option to git-send-pack Brian Ewins

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).