Browse Source
The svn-fe tool takes a Subversion dump file as input and produces a fast-import stream as output. This can be useful as a low-level tool in building other importers, or for debugging the vcs-svn library. make svn-fe make svn-fe.1 to test. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
Jonathan Nieder
15 years ago
committed by
Junio C Hamano
4 changed files with 147 additions and 0 deletions
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
/*.xml |
||||
/*.1 |
||||
/*.html |
@ -0,0 +1,63 @@
@@ -0,0 +1,63 @@
|
||||
all:: svn-fe$X |
||||
|
||||
CC = gcc |
||||
RM = rm -f |
||||
MV = mv |
||||
|
||||
CFLAGS = -g -O2 -Wall |
||||
LDFLAGS = |
||||
ALL_CFLAGS = $(CFLAGS) |
||||
ALL_LDFLAGS = $(LDFLAGS) |
||||
EXTLIBS = |
||||
|
||||
GIT_LIB = ../../libgit.a |
||||
VCSSVN_LIB = ../../vcs-svn/lib.a |
||||
LIBS = $(VCSSVN_LIB) $(GIT_LIB) $(EXTLIBS) |
||||
|
||||
QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir |
||||
QUIET_SUBDIR1 = |
||||
|
||||
ifneq ($(findstring $(MAKEFLAGS),w),w) |
||||
PRINT_DIR = --no-print-directory |
||||
else # "make -w" |
||||
NO_SUBDIR = : |
||||
endif |
||||
|
||||
ifneq ($(findstring $(MAKEFLAGS),s),s) |
||||
ifndef V |
||||
QUIET_CC = @echo ' ' CC $@; |
||||
QUIET_LINK = @echo ' ' LINK $@; |
||||
QUIET_SUBDIR0 = +@subdir= |
||||
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ |
||||
$(MAKE) $(PRINT_DIR) -C $$subdir |
||||
endif |
||||
endif |
||||
|
||||
svn-fe$X: svn-fe.o $(VCSSVN_LIB) $(GIT_LIB) |
||||
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ svn-fe.o \ |
||||
$(ALL_LDFLAGS) $(LIBS) |
||||
|
||||
svn-fe.o: svn-fe.c ../../vcs-svn/svndump.h |
||||
$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $< |
||||
|
||||
svn-fe.html: svn-fe.txt |
||||
$(QUIET_SUBDIR0)../../Documentation $(QUIET_SUBDIR1) \ |
||||
MAN_TXT=../contrib/svn-fe/svn-fe.txt \ |
||||
../contrib/svn-fe/$@ |
||||
|
||||
svn-fe.1: svn-fe.txt |
||||
$(QUIET_SUBDIR0)../../Documentation $(QUIET_SUBDIR1) \ |
||||
MAN_TXT=../contrib/svn-fe/svn-fe.txt \ |
||||
../contrib/svn-fe/$@ |
||||
$(MV) ../../Documentation/svn-fe.1 . |
||||
|
||||
../../vcs-svn/lib.a: FORCE |
||||
$(QUIET_SUBDIR0)../.. $(QUIET_SUBDIR1) vcs-svn/lib.a |
||||
|
||||
../../libgit.a: FORCE |
||||
$(QUIET_SUBDIR0)../.. $(QUIET_SUBDIR1) libgit.a |
||||
|
||||
clean: |
||||
$(RM) svn-fe$X svn-fe.o svn-fe.html svn-fe.xml svn-fe.1 |
||||
|
||||
.PHONY: all clean FORCE |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
/* |
||||
* This file is in the public domain. |
||||
* You may freely use, modify, distribute, and relicense it. |
||||
*/ |
||||
|
||||
#include <stdlib.h> |
||||
#include "vcs-svn/svndump.h" |
||||
|
||||
int main(int argc, char **argv) |
||||
{ |
||||
svndump_init(NULL); |
||||
svndump_read((argc > 1) ? argv[1] : NULL); |
||||
svndump_reset(); |
||||
return 0; |
||||
} |
@ -0,0 +1,66 @@
@@ -0,0 +1,66 @@
|
||||
svn-fe(1) |
||||
========= |
||||
|
||||
NAME |
||||
---- |
||||
svn-fe - convert an SVN "dumpfile" to a fast-import stream |
||||
|
||||
SYNOPSIS |
||||
-------- |
||||
svnadmin dump --incremental REPO | svn-fe [url] | git fast-import |
||||
|
||||
DESCRIPTION |
||||
----------- |
||||
|
||||
Converts a Subversion dumpfile (version: 2) into input suitable for |
||||
git-fast-import(1) and similar importers. REPO is a path to a |
||||
Subversion repository mirrored on the local disk. Remote Subversion |
||||
repositories can be mirrored on local disk using the `svnsync` |
||||
command. |
||||
|
||||
INPUT FORMAT |
||||
------------ |
||||
Subversion's repository dump format is documented in full in |
||||
`notes/dump-load-format.txt` from the Subversion source tree. |
||||
Files in this format can be generated using the 'svnadmin dump' or |
||||
'svk admin dump' command. |
||||
|
||||
OUTPUT FORMAT |
||||
------------- |
||||
The fast-import format is documented by the git-fast-import(1) |
||||
manual page. |
||||
|
||||
NOTES |
||||
----- |
||||
Subversion dumps do not record a separate author and committer for |
||||
each revision, nor a separate display name and email address for |
||||
each author. Like git-svn(1), 'svn-fe' will use the name |
||||
|
||||
--------- |
||||
user <user@UUID> |
||||
--------- |
||||
|
||||
as committer, where 'user' is the value of the `svn:author` property |
||||
and 'UUID' the repository's identifier. |
||||
|
||||
To support incremental imports, 'svn-fe' will put a `git-svn-id` |
||||
line at the end of each commit log message if passed an url on the |
||||
command line. This line has the form `git-svn-id: URL@REVNO UUID`. |
||||
|
||||
Empty directories and unknown properties are silently discarded. |
||||
|
||||
The resulting repository will generally require further processing |
||||
to put each project in its own repository and to separate the history |
||||
of each branch. The 'git filter-branch --subdirectory-filter' command |
||||
may be useful for this purpose. |
||||
|
||||
BUGS |
||||
---- |
||||
Litters the current working directory with .bin files for |
||||
persistence. Will be fixed when the svn-fe infrastructure is aware of |
||||
a Git working directory. |
||||
|
||||
SEE ALSO |
||||
-------- |
||||
git-svn(1), svn2git(1), svk(1), git-filter-branch(1), git-fast-import(1), |
||||
https://svn.apache.org/repos/asf/subversion/trunk/notes/dump-load-format.txt |
Loading…
Reference in new issue