Commit Graph

45 Commits

Author SHA1 Message Date
Karl Hasselström
80804d0af8 Let git-svnimport's author file use same syntax as git-cvsimport's
git-cvsimport uses a username => Full Name <email@addr.es> mapping
file with this syntax:

  kha=Karl Hasselström <kha@treskal.com>

Since there is no reason to use another format for git-svnimport, use
the same format.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-27 15:27:21 -08:00
Karl Hasselström
36610b24f1 svnimport: Read author names and emails from a file
Read a file with lines on the form

  username User's Full Name <email@addres.org>

and use "User's Full Name <email@addres.org>" as the GIT author and
committer for Subversion commits made by "username". If encountering a
commit made by a user not in the list, abort.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-26 21:34:42 -08:00
Karl Hasselström
c55f3fff35 svnimport: Convert the svn:ignore property
Put the value of the svn:ignore property in a regular file when
converting a Subversion repository to GIT. The Subversion and GIT
ignore syntaxes are similar enough that it often just works to set the
filename to .gitignore and do nothing else.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-26 21:34:42 -08:00
Karl Hasselström
4802426ddb svnimport: Convert executable flag
Convert the svn:executable property to file mode 755 when converting
an SVN repository to GIT.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-26 21:34:42 -08:00
Junio C Hamano
7ae0dc015d svnimport: avoid open "-|" list form for Perl 5.6
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-20 14:24:05 -08:00
Karl Hasselström
0a48a344c6 git-svnimport: -r adds svn revision number to commit messages
New -r flag for prepending the corresponding Subversion revision
number to each commit message.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-14 01:30:43 -08:00
Christian Biesinger
7bbdeaa969 Use a relative path for SVN importing
The absolute path (with the leading slash) breaks SVN importing,
because it then looks for /trunk/... instead of /svn/trunk/...
(in my case, the repository URL was https://servername/svn/)

Signed-off-by: Christian Biesinger <cbiesinger@web.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-11 17:59:38 -08:00
Sasha Khapyorsky
d9e2e12700 git-svnimport.perl: fix for 'arg list too long...'
This fixes 'arg list too long..' problem with git-ls-files.

Note that second arg list separation loop (with 'git-update-index') is
needed since git-ls-files arguments can be directories.

Signed-off-by: Sasha Khapyorsky <sashak@voltaire.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-01 14:23:47 -08:00
Eric Wong
2961e0ee8b svnimport: support repositories requiring SSL authentication
I looked at svn-mirror to see how it did this, seems about right.
"It works for me" when using it against https://svn.musicpd.org

tested command-line: git-svnimport -C mpc -i -m -v  \
	-T mpc/trunk -b mpc/branches -t mpc/tags https://svn.musicpd.org

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-01-05 20:28:14 -08:00
Martin Langhoff
988eece42a svnimport: exit cleanly when we are up to date
Now we detect that the SVN repo does not have new commits for us and exit
cleanly, removing the lockfile. With this, svnimport supports being run
on a cronjob to maintain a SVN2GIT gateway.

Signed-off-by: Martin Langhoff <martin@catalyst.net.nz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-12-14 22:24:46 -08:00
Matthias Urlichs
034908047d SVN import: Use one log call
One "svn log" (or its equivalent) per revision adds delay and server load.
Instead, open two SVN connections -- one for the log, and one for the files.

Positive side effect: Only those log entries which actually contain data
are committed => no more empty commits.

Also, change the "-l" option to set the maximum revision to be pulled,
not the number of revisions.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-11-29 10:51:43 -08:00
Pavel Roskin
8366a10ab2 symref support for import scripts
Fix git import script not to assume that .git/HEAD is a symlink.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-11-16 13:19:18 -08:00
Matthias Urlichs
4b1ca25e42 Remove trailing slashes
SVN dies a messy death when passed a path with trailing slashes.
2005-11-14 08:31:00 +01:00
Junio C Hamano
f3ad062560 Fix a couple of obvious and insignificant typo.
Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-11-08 01:24:50 -08:00
Yaacov Akiba Slama
01d4f0e775 Lift the default limit of number of revs.
Now that the leak is gone, there is by default no limit of revisions to
import.  No more message about leak when the limit (given by the -l
parameter) is reached.

Signed-off-by: Yaacov Akiba Slama <ya@slamail.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-11-08 01:24:50 -08:00
Yaacov Akiba Slama
a16db4f472 Handle a revision that only creates a new tag correctly.
Fix an error when a svn revision consists only of the creation of a new tag
directory (/tags/this_is_a_tag).

Signed-off-by: Yaacov Akiba Slama <ya@slamail.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-11-08 01:24:49 -08:00
Yaacov Akiba Slama
109fc2b97b Bundle file copies from multiple branches into a merge.
When copying files and/or directories from several branches in one single
revision, all these branches are used as parents of the commit.

Signed-off-by: Yaacov Akiba Slama <ya@slamail.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-11-08 01:24:49 -08:00
Yaacov Akiba Slama
8168373fe7 copy_dir becomes copy_path and handles both files and directories
The A (Add) and R (Replace) actions handling are unified.

Signed-off-by: Yaacov Akiba Slama <ya@slamail.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-11-08 01:24:48 -08:00
Yaacov Akiba Slama
c2c07a5c2a Don't output error on changes in the nodes /, /tags or /branches
Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-11-08 01:24:48 -08:00
Yaacov Akiba Slama
cbce5d8961 Add node_kind function to differentiate between file and directory
Signed-off-by: Yaacov Akiba Slama <ya@slamail.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-11-08 01:24:48 -08:00
Yaacov Akiba Slama
fcfa32b9e1 Use svn pools to solve the memory leak problem.
Signed-off-by: Yaacov Akiba Slama <ya@slamail.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-11-08 01:24:47 -08:00
Junio C Hamano
80e0c0ab91 Work around an RPM build problem.
The require statement at the top of git-svnimport seems to confuse
rpmbuild dependency generation.  It uses the newer notation "v5.8.0",
and rpm ends up requiring "perl(v5.8.0)", while we would want it to
say something like "perl >= 0:5.008".

Ryan suggests old-style "require 5.008" might fix this problem, so
here it is.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-10-30 17:28:04 -08:00
Junio C Hamano
29504118f8 Merge branch 'svn' of http://netz.smurf.noris.de/git/git
[jc: I have my pre-commit hook enabled to catch trailing whitespaces,
 and fixed them up while merging.]

Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-10-16 11:55:35 -07:00
Matthias Urlichs
40dad96e41 svn commit: re-word the exit-due-to-memory-leak message
Reworded the exit message, as per Kalle Valo's suggestion (but shorter).

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-16 19:57:38 +02:00
Matthias Urlichs
0090a6185a svn import: copy directories
Import SVN-copied and -referenced directories correctly.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-11 19:42:27 +02:00
Matthias Urlichs
25f6f325d7 svn import: Add direct HTTP access
Some SVN repositories that are accessible through HTTP don't like when I
retrieve files using SVN methods ("internal server error").

Therefore, I added an option to get the contents using (persistent) HTTP
directly. This also reduces round-trip time, from two or three requests
down to one.

Also corrected error handling a bit.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-11 18:13:30 +02:00
Matthias Urlichs
4a91b796e3 svn import: remove some CVS cruft
Some remains of CVS still lingered. Removed.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-11 17:02:45 +02:00
Matthias Urlichs
2fa92046a8 svn import: make -s option actually optional
The -s option was accidentally not optional.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-11 16:22:03 +02:00
Matthias Urlichs
16e685967d svn import: typo fix
Fixed a minor typo

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-11 14:18:01 +02:00
Matthias Urlichs
8470b7f3a3 svn import: get all revisions
Not skipping the last revision is generally seen as Good Thing. ;-)

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 20:10:48 +02:00
Matthias Urlichs
22dcbb7512 svn import: unlink downlaoded files
Actually removing the files that have been checked out of SVN,
after checking them into git of course, is a good idea...

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 18:54:53 +02:00
Matthias Urlichs
3ef378a67b svn import: Add a loop limit option
The svn library has a serious memory leak.
Added a new option (-l NUM) which causes git-svnimport to exit cleanly
after fetching that many changes, in order to .

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 18:45:00 +02:00
Matthias Urlichs
e7e477dfac svn import: incremental imports
Incremental imports skipped a revision.

Also improve interrupt safety -- ^C while writing a tag caused the tag
to be skipped.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 15:28:00 +02:00
Matthias Urlichs
7ee74a99b2 svn import: skip initial revisions
Add a flag to skip initial revisions: some SVN repositories have
initial setup cruft in their logs which we might want to ignore.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 15:14:21 +02:00
Matthias Urlichs
bf267d99e8 svn import: Do not create empty tags
If a tag is "clean", do not create a commit for it.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 14:51:13 +02:00
Matthias Urlichs
f02b3eba7f svn import: Fix tagging.
Tagging was 100% broken. :-/

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 14:42:59 +02:00
Matthias Urlichs
62d72e4b70 svn import: remove debugging
Removed debugging output used to identify the too-many-connections problem.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 14:19:15 +02:00
Matthias Urlichs
c7ff5f1d7d svn import: wrong file open mode
There are multiple | characters in Unicode. Don't use the wrong one ...

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 14:18:38 +02:00
Matthias Urlichs
8cd4177d5e svn import: avoid reconnecting
Perl's eval() sets $@ to empts, not undef, when it succeeds.
That caused excessive reconnect attempts.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 14:14:44 +02:00
Matthias Urlichs
37dcf6de60 svn improt needs SVN::Core 1.2.1 or better
Die with a warning if Perl's svn module is too old.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 13:42:48 +02:00
Matthias Urlichs
6d281217b9 svn import: fixed two pipe open calls.
Perl's magic "different semantics of open() based on the number of
arguments" is really annoying at times...

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 12:45:46 +02:00
Matthias Urlichs
f0daa628a2 svn import: copy path information
Due to a bug in the SVN library, path information is freed as soon as the
callback returns, even if it still refers to the data.

Workaround: Copy it. (Also fix a wrong-method-name bug while we're at it.)

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 12:41:15 +02:00
Matthias Urlichs
c015bf2bcb SVN import: No modes
svn doesn't seem to save file modes:
removed the code that analyzes them.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 12:34:32 +02:00
Matthias Urlichs
2b5e63d1b4 svn import: add eval()
Trying to downlaod a file that's really a subdirectory doesn't work too well.

Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 12:33:22 +02:00
Matthias Urlichs
eaf718f3ec New: git-svnimport.
As the name suggests, this script imports from SVN.

Only "normal" SVN repositories (with single trunk/, branches/, and tags/
subdrectories) are supported. Incremental imports require preserving
the file .git/svn2git.

Signed-Off-by: Matthias Urlichs <smurf@smurf.noris.de>
2005-10-10 11:40:43 +02:00