From: Daniel Barkalow <barkalow@iabervon.org>
To: Linus Torvalds <torvalds@osdl.org>, Petr Baudis <pasky@ucw.cz>,
Junio C Hamano <junkio@cox.net>
Cc: git@vger.kernel.org
Subject: [PATCH 4/4] -w support for git-ssh-pull/push
Date: Mon, 6 Jun 2005 16:43:27 -0400 (EDT) [thread overview]
Message-ID: <Pine.LNX.4.21.0506061638300.30848-100000@iabervon.org> (raw)
In-Reply-To: <Pine.LNX.4.21.0506061616590.30848-100000@iabervon.org>
This adds support for -w to git-ssh-pull and git-ssh-push to make
receiving side write the commit that was transferred to a reference file.
Index: ssh-pull.c
===================================================================
--- 8deba080337c75a41cb456cc8b59000654278e59/ssh-pull.c (mode:100644 sha1:c0cee73facbbb3ced2e566789ba1dda57b245f47)
+++ 8293f31cb78c1c7aaf6e521e99a9d2d2a05fabec/ssh-pull.c (mode:100644 sha1:3d1ff5ef0107da9f56f5f7024af9e2d02f7eec57)
@@ -2,6 +2,7 @@
#include "commit.h"
#include "rsh.h"
#include "pull.h"
+#include "refs.h"
static int fd_in;
static int fd_out;
@@ -41,7 +42,15 @@
int fetch_ref(char *ref, unsigned char *sha1)
{
- return -1;
+ signed char remote;
+ char type = 'r';
+ write(fd_out, &type, 1);
+ write(fd_out, ref, strlen(ref) + 1);
+ read(fd_in, &remote, 1);
+ if (remote < 0)
+ return remote;
+ read(fd_in, sha1, 20);
+ return 0;
}
int main(int argc, char **argv)
@@ -63,11 +72,14 @@
get_history = 1;
} else if (argv[arg][1] == 'v') {
get_verbosely = 1;
+ } else if (argv[arg][1] == 'w') {
+ write_ref = argv[arg + 1];
+ arg++;
}
arg++;
}
if (argc < arg + 2) {
- usage("git-ssh-pull [-c] [-t] [-a] [-v] [-d] commit-id url");
+ usage("git-ssh-pull [-c] [-t] [-a] [-v] [-d] [-w ref] commit-id url");
return 1;
}
commit_id = argv[arg];
Index: ssh-push.c
===================================================================
--- 8deba080337c75a41cb456cc8b59000654278e59/ssh-push.c (mode:100644 sha1:bd381ac9d1787dc979b1eba5bd72c1fd644a094b)
+++ 8293f31cb78c1c7aaf6e521e99a9d2d2a05fabec/ssh-push.c (mode:100644 sha1:79fb6fc05f859a9daa4597296bfe8c1440949833)
@@ -1,7 +1,6 @@
#include "cache.h"
#include "rsh.h"
-#include <sys/socket.h>
-#include <errno.h>
+#include "refs.h"
unsigned char local_version = 1;
unsigned char remote_version = 0;
@@ -64,6 +63,27 @@
return 0;
}
+int serve_ref(int fd_in, int fd_out)
+{
+ char ref[PATH_MAX];
+ unsigned char sha1[20];
+ int posn = 0;
+ signed char remote = 0;
+ do {
+ if (read(fd_in, ref + posn, 1) < 1)
+ return -1;
+ posn++;
+ } while (ref[posn - 1]);
+ if (get_ref_sha1(ref, sha1))
+ remote = -1;
+ write(fd_out, &remote, 1);
+ if (remote)
+ return 0;
+ write(fd_out, sha1, 20);
+ return 0;
+}
+
+
void service(int fd_in, int fd_out) {
char type;
int retval;
@@ -78,6 +98,8 @@
return;
if (type == 'o' && serve_object(fd_in, fd_out))
return;
+ if (type == 'r' && serve_ref(fd_in, fd_out))
+ return;
} while (1);
}
@@ -88,10 +110,12 @@
char *url;
int fd_in, fd_out;
while (arg < argc && argv[arg][0] == '-') {
+ if (argv[arg][1] == 'w')
+ arg++;
arg++;
}
if (argc < arg + 2) {
- usage("git-ssh-push [-c] [-t] [-a] commit-id url");
+ usage("git-ssh-push [-c] [-t] [-a] [-w ref] commit-id url");
return 1;
}
commit_id = argv[arg];
next prev parent reply other threads:[~2005-06-06 20:42 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-06 20:27 [PATCH 0/4] Writing refs in git-ssh-push Daniel Barkalow
2005-06-06 20:31 ` [PATCH 1/4] Operations on refs Daniel Barkalow
2005-06-06 20:35 ` [PATCH 2/4] rsh.c environment variable Daniel Barkalow
2005-06-06 20:38 ` [PATCH 3/4] Generic support for pulling refs Daniel Barkalow
2005-06-07 13:18 ` McMullan, Jason
2005-06-07 16:45 ` Daniel Barkalow
2005-06-06 20:43 ` Daniel Barkalow [this message]
2005-06-07 3:17 ` [PATCH 0/4] Writing refs in git-ssh-push Linus Torvalds
2005-06-07 5:22 ` Daniel Barkalow
2005-06-07 5:54 ` Frank Sorenson
2005-06-07 7:30 ` Thomas Glanzmann
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=Pine.LNX.4.21.0506061638300.30848-100000@iabervon.org \
--to=barkalow@iabervon.org \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=pasky@ucw.cz \
--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.
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).