Commit graph

50 commits

Author SHA1 Message Date
Santi_Béjar d598075e52 Reintroduce svn pools to solve the memory leak.
Introduced in 4802426.

Signed-off-by: Santi Béjar <sbejar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-20 23:41:24 -07:00
Herbert Valerio Riedel 08ddd4f764 git-svnimport symlink support
added svn:special symlink support for access methods other than
direct-http

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Acked-by: Matthias Urlichs <smurf@smurf.noris.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-18 02:26:52 -07:00
Karl Hasselström e67c66251a git-svnimport: Don't assume that copied files haven't changed
Don't assume that a file that SVN claims was copied from somewhere
else is bit-for-bit identical with its parent, since SVN allows
changes to copied files before they are committed.

Without this fix, such copy-modify-commit operations causes the
imported file to lack the "modify" part -- that is, we get subtle data
corruption.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-07 02:11:33 -07:00
Anand Kumria a7cfb4a43f git-svnimport: if a limit is specified, respect it
git-svnimport will import the same revision over and over again if a
limit (-l <rev>) has been specified. Instead if that revision has already
been processed, exit with an up-to-date message.

Signed-off-by: Anand Kumria <wildfire@progsoc.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-03-26 00:15:01 -08:00
Karl Hasselström d3cac2c95a Save username -> Full Name <email@addr.es> map file
When the user specifies a username -> Full Name <email@addr.es> map
file with the -A option, save a copy of that file as
$git_dir/svn-authors. When running git-svnimport with an existing GIT
directory, use $git_dir/svn-authors (if it exists) unless a file was
explicitly specified with -A.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-27 15:27:24 -08:00
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