Ich migriere das SVN-Repository unserer Organisation in ein Gitlab-Repository. Ich habe mich in vielen verschiedenen Quellen zum Stapelüberlauf umgesehen, die ich zu verknüpfen versucht habe, aber ich habe eine Warnung erhalten, dass meine Frage Spam zu sein scheint. Hier sind ein paar Links, die ich ausprobiert habe: Tutorial eins sowie lies mich für svn2git und keine Antwort gefunden. Ich verwende Windows 10. Ich habe Ruby, svn2git, svn2gitnet (svn2git, behauptet aber, Ihnen die Eingabe eines Passworts zu ermöglichen), TortoiseSVN und TortoiseGit installiert. Ich versuche den Befehl auszuführen:
svn2git http://*******-****/******* -v --username ********
und
svn2gitnet http://*******-****/******* -v --username ******** --password *******
die beide zurückkehren
Running command: git svn init --prefix=svn/ --username='********' --no-metadata --trunk='trunk' --tags='tags' --branches='branches' http://*******-****/*******
Initialized empty git repository in C:/Users/********/Desktop/.git/
Can't create session: Unable to connect to a repository at URL 'http://*******-****/*******': Error running context: The requested authentication type(s) are not supported at C:/Program Files/Git/mingw64/share/perl5/Git/SVN.pm line 310.
command failed:
git svn init --prefix=svn/ --username='********' --no-metadata --trunk='trunk' --tags='tags' --branches='branches' http://*******-****/*******
das umgebende Modul der Zeile 310 in SVN.pm ist:
sub init_remote_config {
my ($self, $url, $no_write) = @_;
$url = canonicalize_url($url);
my $r = read_all_remotes();
my $existing = find_existing_remote($url, $r);
if ($existing) {
unless ($no_write) {
print STDERR "Using existing ",
"[svn-remote \"$existing\"]\n";
}
$self->{repo_id} = $existing;
} elsif ($_minimize_url) {
my $min_url = Git::SVN::Ra->new($url)->minimize_url;//line 310
$existing = find_existing_remote($min_url, $r);
if ($existing) {
unless ($no_write) {
print STDERR "Using existing ",
"[svn-remote \"$existing\"]\n";
}
$self->{repo_id} = $existing;
}
if ($min_url ne $url) {
unless ($no_write) {
print STDERR "Using higher level of URL: ",
"$url => $min_url\n";
}
my $old_path = $self->path;
$url =~ s!^\Q$min_url\E(/|$)!!;
$url = join_paths($url, $old_path);
$self->path($url);
$url = $min_url;
}
}
my $orig_url;
if (!$existing) {
# verify that we aren't overwriting anything:
$orig_url = eval {
command_oneline('config', '--get',
"svn-remote.$self->{repo_id}.url")
};
if ($orig_url && ($orig_url ne $url)) {
die "svn-remote.$self->{repo_id}.url already set: ",
"$orig_url\nwanted to set to: $url\n";
}
}
my ($xrepo_id, $xpath) = find_ref($self->refname);
if (!$no_write && defined $xpath) {
die "svn-remote.$xrepo_id.fetch already set to track ",
"$xpath:", $self->refname, "\n";
}
unless ($no_write) {
command_noisy('config',
"svn-remote.$self->{repo_id}.url", $url);
my $path = $self->path;
$path =~ s{^/}{};
$path =~ s{%([0-9A-F]{2})}{chr hex($1)}ieg;
$self->path($path);
command_noisy('config', '--add',
"svn-remote.$self->{repo_id}.fetch",
$self->path.":".$self->refname);
}
$self->url($url);
}
Welche nächsten Schritte sollte ich unternehmen?
BEARBEITEN: Die folgende Codezeile entpuppt sich als Aufruf der Subversion-Fernzugriffsfunktion Neu. Diese Funktion füllt einige Standardparameter aus, einschließlich des Authentifizierungsschemas. Daher ist es wahrscheinlich, dass das verwendete Standardauthentifizierungsschema wahrscheinlich nicht NTLM ist. Das war die Authentifizierung, die unser Server verwendet hat. Es ist auch möglich, dass SVN die richtige Authentifizierung von der übergebenen URL erhalten hat, aber NTLM nicht mehr unterstützt.
my $min_url = Git::SVN::Ra->new($url)->minimize_url;//line 310
svn.exe log --quiet | ? { $_ -notlike '-*' } | % { "{0} = {0} <{0}>" -f ($_ -split ' \| ')[1] } | Select-Object -Unique
***\**** = ***\**** <***\****>>
***\**** = ***\**** <***\****>
******** = ******** <********>
******** = ******** <********>
***\**** = *** **** <***@example.com>
***\**** = *** **** <***@example.com>
******** = **** **** <****@example.com>
******** = *** ***** <***@example.com>
<Location /phoneme>
DAV svn
SVNPath "d:/svn/phoneme/"
AuthName "Subversion Phoneme repositories"
AuthType SSPI
NTLMAuth On
NTLMAuthoritative On
<RequireAll>
<RequireAny>
Require valid-user
#require sspi-user EMEA\group_name
</RequireAny>
<RequireNone>
Require user "ANONYMOUS LOGON"
Require user "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG"
</RequireNone>
</RequireAll>
# use this to add the authenticated username to you header
# so any backend system can fetch the current user
# rewrite_module needs to be loaded then
#RewriteEngine On
#RewriteCond %{LA-U:REMOTE_USER} (.+)
#RewriteRule . - [E=RU:%1]
#RequestHeader set X_ISRW_PROXY_AUTH_USER %{RU}e
</Location>
<Location /phoneme>
DAV svn
SVNPath "d:/svn/phoneme/"
</Location>
git svn clone "http://repo-url/root" "C:\path\to\new\git\repo" -stdlayout -A "C:/path/to/authors/file/authors.txt"