All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Florian Achleitner <florian.achleitner.2.6.31@gmail.com>
Cc: "GIT Mailing-list" <git@vger.kernel.org>,
	"David Michael Barr" <b@rr-dav.id.au>,
	"Jonathan Nieder" <jrnieder@gmail.com>,
	"Ramsay Jones" <ramsay@ramsay1.demon.co.uk>,
	"Torsten Bögershausen" <tboegi@web.de>,
	"Joachim Schmitz" <jojo@schmitz-digital.de>,
	"Erik Faye-Lund" <kusmabite@gmail.com>
Subject: Re: [PATCH v7 09/16] Allow reading svn dumps from files via file:// urls
Date: Tue, 28 Aug 2012 10:06:20 -0700	[thread overview]
Message-ID: <7vd32a3nee.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: 1346143790-23491-10-git-send-email-florian.achleitner.2.6.31@gmail.com

Florian Achleitner <florian.achleitner.2.6.31@gmail.com> writes:

> For testing as well as for importing large, already available dumps,
> it's useful to bypass svnrdump and replay the svndump from a file
> directly.
>
> Add support for file:// urls in the remote url, e.g.
>
>   svn::file:///path/to/dump
>
> When the remote helper finds an url starting with file:// it tries to
> open that file instead of invoking svnrdump.
>
> Signed-off-by: Florian Achleitner <florian.achleitner.2.6.31@gmail.com>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
>  remote-testsvn.c |   55 +++++++++++++++++++++++++++++++++++-------------------
>  1 file changed, 36 insertions(+), 19 deletions(-)
>
> diff --git a/remote-testsvn.c b/remote-testsvn.c
> index ebe803b..2b9d151 100644
> --- a/remote-testsvn.c
> +++ b/remote-testsvn.c
> @@ -9,6 +9,7 @@
>  #include "argv-array.h"
>  
>  static const char *url;
> +static int dump_from_file;
>  static const char *private_ref;
>  static const char *remote_ref = "refs/heads/master";
>  
> @@ -53,29 +54,38 @@ static int cmd_import(const char *line)
>  	struct argv_array svndump_argv = ARGV_ARRAY_INIT;
>  	struct child_process svndump_proc;
>  
> -	memset(&svndump_proc, 0, sizeof(struct child_process));
> -	svndump_proc.out = -1;
> -	argv_array_push(&svndump_argv, "svnrdump");
> -	argv_array_push(&svndump_argv, "dump");
> -	argv_array_push(&svndump_argv, url);
> -	argv_array_pushf(&svndump_argv, "-r%u:HEAD", startrev);
> -	svndump_proc.argv = svndump_argv.argv;
> -
> -	code = start_command(&svndump_proc);
> -	if (code)
> -		die("Unable to start %s, code %d", svndump_proc.argv[0], code);
> -	dumpin_fd = svndump_proc.out;
> -
> +	if (dump_from_file) {
> +		dumpin_fd = open(url, O_RDONLY);
> +		if(dumpin_fd < 0) {
> +			die_errno("Couldn't open svn dump file %s.", url);
> +		}
> +	}
> +	else {
> +		memset(&svndump_proc, 0, sizeof(struct child_process));


Style:

	if (dump_from_file) {
		dumpin_fd = open(url, O_RDONLY);
		if (dumpin_fd < 0)
                	die_errno("Couldn't...", url);
	} else {
        	memset(&svndump_proc, ...);
		...
	}

> +		svndump_proc.out = -1;
> +		argv_array_push(&svndump_argv, "svnrdump");
> +		argv_array_push(&svndump_argv, "dump");
> +		argv_array_push(&svndump_argv, url);
> +		argv_array_pushf(&svndump_argv, "-r%u:HEAD", startrev);
> +		svndump_proc.argv = svndump_argv.argv;
> +
> +		code = start_command(&svndump_proc);
> +		if (code)
> +			die("Unable to start %s, code %d", svndump_proc.argv[0], code);
> +		dumpin_fd = svndump_proc.out;
> +	}
>  	svndump_init_fd(dumpin_fd, STDIN_FILENO);
>  	svndump_read(url, private_ref);
>  	svndump_deinit();
>  	svndump_reset();
>  
>  	close(dumpin_fd);
> -	code = finish_command(&svndump_proc);
> -	if (code)
> -		warning("%s, returned %d", svndump_proc.argv[0], code);
> -	argv_array_clear(&svndump_argv);
> +	if(!dump_from_file) {

Style:

	if (!dump_from_file) {

> +		code = finish_command(&svndump_proc);
> +		if (code)
> +			warning("%s, returned %d", svndump_proc.argv[0], code);
> +		argv_array_clear(&svndump_argv);
> +	}
>  
>  	return 0;
>  }
> @@ -149,8 +159,15 @@ int main(int argc, const char **argv)
>  	remote = remote_get(argv[1]);
>  	url_in = (argc == 3) ? argv[2] : remote->url[0];
>  
> -	end_url_with_slash(&buf, url_in);
> -	url = strbuf_detach(&buf, NULL);
> +	if (!prefixcmp(url_in, "file://")) {
> +		dump_from_file = 1;
> +		url = url_decode(url_in + sizeof("file://")-1);
> +	}
> +	else {

Style:

	if (...) {
		...
        } else {
		...
	}

> +		dump_from_file = 0;
> +		end_url_with_slash(&buf, url_in);
> +		url = strbuf_detach(&buf, NULL);
> +	}
>  
>  	strbuf_addf(&buf, "refs/svn/%s/master", remote->name);
>  	private_ref = strbuf_detach(&buf, NULL);

  parent reply	other threads:[~2012-08-28 18:02 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-28  8:49 [PATCH v7 00/16] GSOC remote-svn Florian Achleitner
2012-08-28  8:49 ` [PATCH v7 01/16] Implement a remote helper for svn in C Florian Achleitner
2012-08-28  8:49   ` [PATCH v7 02/16] Add git-remote-testsvn to Makefile Florian Achleitner
2012-08-28  8:49     ` [PATCH v7 03/16] Add svndump_init_fd to allow reading dumps from arbitrary FDs Florian Achleitner
2012-08-28  8:49       ` [PATCH v7 04/16] Add argv_array_detach and argv_array_free_detached Florian Achleitner
2012-08-28  8:49         ` [PATCH v7 05/16] Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability Florian Achleitner
2012-08-28  8:49           ` [PATCH v7 06/16] Add documentation for the 'bidi-import' capability of remote-helpers Florian Achleitner
2012-08-28  8:49             ` [PATCH v7 07/16] When debug==1, start fast-import with "--stats" instead of "--quiet" Florian Achleitner
2012-08-28  8:49               ` [PATCH v7 08/16] remote-svn, vcs-svn: Enable fetching to private refs Florian Achleitner
2012-08-28  8:49                 ` [PATCH v7 09/16] Allow reading svn dumps from files via file:// urls Florian Achleitner
2012-08-28  8:49                   ` [PATCH v7 10/16] vcs-svn: add fast_export_note to create notes Florian Achleitner
2012-08-28  8:49                     ` [PATCH v7 11/16] Create a note for every imported commit containing svn metadata Florian Achleitner
2012-08-28  8:49                       ` [PATCH v7 12/16] remote-svn: Activate import/export-marks for fast-import Florian Achleitner
2012-08-28  8:49                         ` [PATCH v7 13/16] remote-svn: add incremental import Florian Achleitner
2012-08-28  8:49                           ` [PATCH v7 14/16] Add a svnrdump-simulator replaying a dump file for testing Florian Achleitner
2012-08-28  8:49                             ` [PATCH v7 15/16] remote-svn: add marks-file regeneration Florian Achleitner
2012-08-28  8:49                               ` [PATCH v7 16/16] Add a test script for remote-svn Florian Achleitner
2012-08-28 18:01                                 ` Junio C Hamano
2012-08-28 17:59                               ` [PATCH v7 15/16] remote-svn: add marks-file regeneration Junio C Hamano
2012-08-28 17:54                           ` [PATCH v7 13/16] remote-svn: add incremental import Junio C Hamano
2012-08-28 17:06                   ` Junio C Hamano [this message]
2012-08-28 17:53                 ` [PATCH v7 08/16] remote-svn, vcs-svn: Enable fetching to private refs Junio C Hamano
2012-08-28 17:02       ` [PATCH v7 03/16] Add svndump_init_fd to allow reading dumps from arbitrary FDs Junio C Hamano
2012-08-28 16:55     ` [PATCH v7 02/16] Add git-remote-testsvn to Makefile Junio C Hamano
2012-08-28 17:08   ` [PATCH v7 01/16] Implement a remote helper for svn in C Junio C Hamano
2012-08-28  8:59 ` [PATCH v7 00/16] GSOC remote-svn Florian Achleitner

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=7vd32a3nee.fsf@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=b@rr-dav.id.au \
    --cc=florian.achleitner.2.6.31@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=jojo@schmitz-digital.de \
    --cc=jrnieder@gmail.com \
    --cc=kusmabite@gmail.com \
    --cc=ramsay@ramsay1.demon.co.uk \
    --cc=tboegi@web.de \
    /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.