Squashed 'third_party/git/' content from commit cb71568594
git-subtree-dir: third_party/git git-subtree-split: cb715685942260375e1eb8153b0768a376e4ece7
This commit is contained in:
commit
1b593e1ea4
3629 changed files with 1139935 additions and 0 deletions
4
contrib/svn-fe/.gitignore
vendored
Normal file
4
contrib/svn-fe/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
/*.xml
|
||||
/*.1
|
||||
/*.html
|
||||
/svn-fe
|
||||
105
contrib/svn-fe/Makefile
Normal file
105
contrib/svn-fe/Makefile
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
all:: svn-fe$X
|
||||
|
||||
CC = cc
|
||||
RM = rm -f
|
||||
MV = mv
|
||||
|
||||
CFLAGS = -g -O2 -Wall
|
||||
LDFLAGS =
|
||||
EXTLIBS = -lz
|
||||
|
||||
include ../../config.mak.uname
|
||||
-include ../../config.mak.autogen
|
||||
-include ../../config.mak
|
||||
|
||||
ifeq ($(uname_S),Darwin)
|
||||
ifndef NO_FINK
|
||||
ifeq ($(shell test -d /sw/lib && echo y),y)
|
||||
CFLAGS += -I/sw/include
|
||||
LDFLAGS += -L/sw/lib
|
||||
endif
|
||||
endif
|
||||
ifndef NO_DARWIN_PORTS
|
||||
ifeq ($(shell test -d /opt/local/lib && echo y),y)
|
||||
CFLAGS += -I/opt/local/include
|
||||
LDFLAGS += -L/opt/local/lib
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef NO_OPENSSL
|
||||
EXTLIBS += -lssl
|
||||
ifdef NEEDS_CRYPTO_WITH_SSL
|
||||
EXTLIBS += -lcrypto
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef NO_PTHREADS
|
||||
CFLAGS += $(PTHREADS_CFLAGS)
|
||||
EXTLIBS += $(PTHREAD_LIBS)
|
||||
endif
|
||||
|
||||
ifdef HAVE_CLOCK_GETTIME
|
||||
CFLAGS += -DHAVE_CLOCK_GETTIME
|
||||
EXTLIBS += -lrt
|
||||
endif
|
||||
|
||||
ifdef NEEDS_LIBICONV
|
||||
EXTLIBS += -liconv
|
||||
endif
|
||||
|
||||
GIT_LIB = ../../libgit.a
|
||||
VCSSVN_LIB = ../../vcs-svn/lib.a
|
||||
XDIFF_LIB = ../../xdiff/lib.a
|
||||
|
||||
LIBS = $(VCSSVN_LIB) $(GIT_LIB) $(XDIFF_LIB)
|
||||
|
||||
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) $(XDIFF_LIB) $(GIT_LIB)
|
||||
$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(EXTLIBS) -o $@ svn-fe.o $(LIBS)
|
||||
|
||||
svn-fe.o: svn-fe.c ../../vcs-svn/svndump.h
|
||||
$(QUIET_CC)$(CC) $(CFLAGS) -I../../vcs-svn -o $*.o -c $<
|
||||
|
||||
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
|
||||
|
||||
../../xdiff/lib.a: FORCE
|
||||
$(QUIET_SUBDIR0)../.. $(QUIET_SUBDIR1) xdiff/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
|
||||
18
contrib/svn-fe/svn-fe.c
Normal file
18
contrib/svn-fe/svn-fe.c
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* This file is in the public domain.
|
||||
* You may freely use, modify, distribute, and relicense it.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "svndump.h"
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if (svndump_init(NULL))
|
||||
return 1;
|
||||
svndump_read((argc > 1) ? argv[1] : NULL, "refs/heads/master",
|
||||
"refs/notes/svn/revs");
|
||||
svndump_deinit();
|
||||
svndump_reset();
|
||||
return 0;
|
||||
}
|
||||
71
contrib/svn-fe/svn-fe.txt
Normal file
71
contrib/svn-fe/svn-fe.txt
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
svn-fe(1)
|
||||
=========
|
||||
|
||||
NAME
|
||||
----
|
||||
svn-fe - convert an SVN "dumpfile" to a fast-import stream
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
mkfifo backchannel &&
|
||||
svnadmin dump --deltas REPO |
|
||||
svn-fe [url] 3<backchannel |
|
||||
git fast-import --cat-blob-fd=3 3>backchannel
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
Converts a Subversion dumpfile 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.
|
||||
|
||||
Note: this tool is very young. The details of its commandline
|
||||
interface may change in backward incompatible ways.
|
||||
|
||||
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 do they record 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' puts a `git-svn-id` line at
|
||||
the end of each commit log message if passed a URL on the command
|
||||
line. This line has the form `git-svn-id: URL@REVNO UUID`.
|
||||
|
||||
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
|
||||
----
|
||||
Empty directories and unknown properties are silently discarded.
|
||||
|
||||
The exit status does not reflect whether an error was detected.
|
||||
|
||||
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
|
||||
68
contrib/svn-fe/svnrdump_sim.py
Executable file
68
contrib/svn-fe/svnrdump_sim.py
Executable file
|
|
@ -0,0 +1,68 @@
|
|||
#!/usr/bin/python
|
||||
"""
|
||||
Simulates svnrdump by replaying an existing dump from a file, taking care
|
||||
of the specified revision range.
|
||||
To simulate incremental imports the environment variable SVNRMAX can be set
|
||||
to the highest revision that should be available.
|
||||
"""
|
||||
import sys
|
||||
import os
|
||||
|
||||
if sys.hexversion < 0x02040000:
|
||||
# The limiter is the ValueError() calls. This may be too conservative
|
||||
sys.stderr.write("svnrdump-sim.py: requires Python 2.4 or later.\n")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def getrevlimit():
|
||||
var = 'SVNRMAX'
|
||||
if var in os.environ:
|
||||
return os.environ[var]
|
||||
return None
|
||||
|
||||
|
||||
def writedump(url, lower, upper):
|
||||
if url.startswith('sim://'):
|
||||
filename = url[6:]
|
||||
if filename[-1] == '/':
|
||||
filename = filename[:-1] # remove terminating slash
|
||||
else:
|
||||
raise ValueError('sim:// url required')
|
||||
f = open(filename, 'r')
|
||||
state = 'header'
|
||||
wroterev = False
|
||||
while(True):
|
||||
l = f.readline()
|
||||
if l == '':
|
||||
break
|
||||
if state == 'header' and l.startswith('Revision-number: '):
|
||||
state = 'prefix'
|
||||
if state == 'prefix' and l == 'Revision-number: %s\n' % lower:
|
||||
state = 'selection'
|
||||
if not upper == 'HEAD' and state == 'selection' and \
|
||||
l == 'Revision-number: %s\n' % upper:
|
||||
break
|
||||
|
||||
if state == 'header' or state == 'selection':
|
||||
if state == 'selection':
|
||||
wroterev = True
|
||||
sys.stdout.write(l)
|
||||
return wroterev
|
||||
|
||||
if __name__ == "__main__":
|
||||
if not (len(sys.argv) in (3, 4, 5)):
|
||||
print("usage: %s dump URL -rLOWER:UPPER")
|
||||
sys.exit(1)
|
||||
if not sys.argv[1] == 'dump':
|
||||
raise NotImplementedError('only "dump" is suppported.')
|
||||
url = sys.argv[2]
|
||||
r = ('0', 'HEAD')
|
||||
if len(sys.argv) == 4 and sys.argv[3][0:2] == '-r':
|
||||
r = sys.argv[3][2:].lstrip().split(':')
|
||||
if not getrevlimit() is None:
|
||||
r[1] = getrevlimit()
|
||||
if writedump(url, r[0], r[1]):
|
||||
ret = 0
|
||||
else:
|
||||
ret = 1
|
||||
sys.exit(ret)
|
||||
Loading…
Add table
Add a link
Reference in a new issue