Shin'ya M. > Initializing repository with 4 items... done

This commit is contained in:
2025-12-04 23:01:14 +09:00
commit 6c0f2d98a3
4 changed files with 109 additions and 0 deletions

22
COPYING Normal file
View File

@@ -0,0 +1,22 @@
________ ________
/_ __/ / / / ____/
/ / / /_/ / __/
/ / / __ / /___
/_/ /_/ /_/_____/
____ ________________ _ _____ ____ ______
/ __ )/ ____/ ____/ __ \ | | / / | / __ \/ ____/
/ __ / __/ / __/ / /_/ /____| | /| / / /| | / /_/ / __/
/ /_/ / /___/ /___/ _, _/_____/ |/ |/ / ___ |/ _, _/ /___
/_____/_____/_____/_/ |_| |__/|__/_/ |_/_/ |_/_____/
__ _________________ _______ ______
/ / / _/ ____/ ____/ | / / ___// ____/
/ / / // / / __/ / |/ /\__ \/ __/
/ /____/ // /___/ /___/ /| /___/ / /___
/_____/___/\____/_____/_/ |_//____/_____/
Shin'ya Minazuki <shinyoukai@laidback.moe> wrote this file.
As long as you retain this notice you can do whatever you want with this stuff.
If we meet some day, and you think this stuff is worth it, you can buy me a bottle of sake
in return.

9
README.md Normal file
View File

@@ -0,0 +1,9 @@
# repository-conversion-scripts
Simple executable files to migrate repositories from one version control system to another.
Those require a rather old version of [reposurgeon](http://catb.org/~esr/reposurgeon), as the latest one may not work
on some systems (such as [NetBSD](https://www.netbsd.org)).
## Scripts
* [Git to Subversion](git2svn) (in [Perl](https://www.perl.org))
* [Subversion to Git](svn2git)

58
git2svn Normal file
View File

@@ -0,0 +1,58 @@
#!/bin/sh
clean() {
rm -rf ${1}.fi ${1}.fo ${1}.lift ${1}.map ${1}.opts
}
git_export() {
(cd ${1}-mirror ; repotool export) >${2}.git
}
git_mirror() {
repotool mirror ${1} ${2}-mirror
}
prepare() {
touch ${1}.opts
touch ${1}.map
touch ${1}.lift
}
svn_import() {
reposurgeon "script ${2}.opts" \
"read <${2}.git" \
"authors read <${2}.map" \
"sourcetype git" \
"prefer git" \
"script ${2}.lift" \
"legacy write >${2}.fo" \
"write >${2}.fi"
reposurgeon "read <${2}.fi" \
"prefer svn" \
"rebuild ${repo_name}-svn"
}
print_usage() {
printf "usage: %s [export dir file] [mirror url repo_name] [migrate repo_name]\n" "$0"
printf "this program requires reposurgeon 3.41\n"
exit 1
}
case $1 in
export)
git_export $2 $3
;;
mirror)
git_mirror $2 $3
;;
migrate)
prepare $2
svn_import $2
clean $2
;;
*)
print_usage
;;
esac

20
svn2git Normal file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env perl
# Convert SVN repositories to Git
# Requirements:
# - git
# - reposurgeon
# - svn
# - direct access to the subversion server
use warnings;
use strict;
require("./svn2git.conf");
my $subversion_repo_path;
my $git_repo_path;
my $repo_name;
print "Dumping the SVN repository: ($repo_name)\n";
system("svnadmin dump $subversion_repo_path > $repo_name.dump") or die "Either svnadmin is not installed or there was a runtime error";
print "Converting the repository into Git ($repo_name)\n";
system("reposurgeon 'read <$repo_name.dump' 'prefer git' 'rebuild $git_repo_path'") or die "Either reposurgeon is not installed or there was a runtime error";