Skip to content

Commit

Permalink
git-svn: allow metadata options to be specified with 'init' and 'clone'
Browse files Browse the repository at this point in the history
Since the options that affect the way metadata is handled in
git-svn, should be consistently set/unset throughout history
imported by git-svn; it makes sense to allow the user to set
certain options from the command-line that will write to the
config file when initially creating the repository.

Also, fix some formatting issues while we're updating
documentation.

Signed-off-by: Eric Wong <[email protected]>
  • Loading branch information
Eric Wong committed Feb 23, 2007
1 parent a81ed0b commit 0dfaf0a
Showing 2 changed files with 29 additions and 8 deletions.
24 changes: 16 additions & 8 deletions Documentation/git-svn.txt
Original file line number Diff line number Diff line change
@@ -49,6 +49,15 @@ COMMANDS
(--tags=project/tags') or a full url
(--tags=https://foo.org/project/tags)

--no-metadata::
Set the 'noMetadata' option in the [svn-remote] config.
--use-svm-props::
Set the 'useSvmProps' option in the [svn-remote] config.
--use-svnsync-props::
Set the 'useSvnsyncProps' option in the [svn-remote] config.
--rewrite-root=<URL>::
Set the 'rewriteRoot' option in the [svn-remote] config.

--prefix=<prefix>
This allows one to specify a prefix which is prepended
to the names of remotes if trunk/branches/tags are
@@ -307,8 +316,8 @@ CONFIG FILE-ONLY OPTIONS
------------------------
--

svn.noMetadata:
svn-remote.<name>.noMetadata:
svn.noMetadata::
svn-remote.<name>.noMetadata::
This gets rid of the git-svn-id: lines at the end of every commit.

If you lose your .git/svn/git-svn/.rev_db file, git-svn will not
@@ -319,8 +328,8 @@ svn-remote.<name>.noMetadata:
this, either. Using this conflicts with the 'useSvmProps'
option for (hopefully) obvious reasons.

svn.useSvmProps:
svn-remote.<name>.useSvmProps:
svn.useSvmProps::
svn-remote.<name>.useSvmProps::
This allows git-svn to re-map repository URLs and UUIDs from
mirrors created using SVN::Mirror (or svk) for metadata.

@@ -332,20 +341,19 @@ svn-remote.<name>.useSvmProps:
URL and UUID, and use it when generating metadata in commit
messages.

svn.useSvnsyncProps:
svn-remote.<name>.useSvnsyncprops:
svn.useSvnsyncProps::
svn-remote.<name>.useSvnsyncprops::
Similar to the useSvmProps option; this is for users
of the svnsync(1) command distributed with SVN 1.4.x and
later.

svn-remote.<name>.rewriteRoot
svn-remote.<name>.rewriteRoot::
This allows users to create repositories from alternate
URLs. For example, an administrator could run git-svn on the
server locally (accessing via file://) but wish to distribute
the repository with a public http:// or svn:// URL in the
metadata so users of it will see the public URL.


Since the noMetadata, rewriteRoot, useSvnsyncProps and useSvmProps
options all affect the metadata generated and used by git-svn; they
*must* be set in the configuration file before any history is imported
13 changes: 13 additions & 0 deletions git-svn.perl
Original file line number Diff line number Diff line change
@@ -75,9 +75,14 @@ BEGIN
%remote_opts );

my ($_trunk, $_tags, $_branches);
my %icv;
my %init_opts = ( 'template=s' => \$_template, 'shared:s' => \$_shared,
'trunk|T=s' => \$_trunk, 'tags|t=s' => \$_tags,
'branches|b=s' => \$_branches, 'prefix=s' => \$_prefix,
'no-metadata' => sub { $icv{noMetadata} = 1 },
'use-svm-props' => sub { $icv{useSvmProps} = 1 },
'use-svnsync-props' => sub { $icv{useSvnsyncProps} = 1 },
'rewrite-root=s' => sub { $icv{rewriteRoot} = $_[1] },
%remote_opts );
my %cmt_opts = ( 'edit|e' => \$_edit,
'rmdir' => \$SVN::Git::Editor::_rmdir,
@@ -234,6 +239,14 @@ sub do_git_init_db {
}
command_noisy(@init_db);
}
my $set;
my $pfx = "svn-remote.$Git::SVN::default_repo_id";
foreach my $i (keys %icv) {
die "'$set' and '$i' cannot both be set\n" if $set;
next unless defined $icv{$i};
command_noisy('config', "$pfx.$i", $icv{$i});
$set = $i;
}
}

sub init_subdir {

0 comments on commit 0dfaf0a

Please sign in to comment.