| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
In Repository::commit, don't call startFastImport() if we have nothing to
write to the fastImport stream. startFastImport() may start new
git-fast-import processes if they were previously killed, so it may be
extremely slow to call it frequently if it's not necessary.
|
| |
|
|
|
|
| |
Might still need some logic for detecting the correct from branch.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
commit()
Prepare for handling cvs2svn borked tags/branches
|
|
|
|
|
| |
[FastExport]Repository
Some minor reordering
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This fixes importing large svn commits that get imported into a large number
of git repositories. It happened that a process was closed (in ProcessCache::touch)
before commit() and so the commit wasn't imported correctly.
And remove the touch() call as that is done now in startFastImport()
|
|
|
|
|
|
|
| |
This is needed to make sure that not too many processes are running and
we run out of ressources.
Calling touch only in commit is not enough as startFastImport is called in other
functions as createBranch too - and that can result in too many processes.
|
|
|
|
| |
closed fast-import
|
| |
|
|
|
|
|
|
| |
a branch as deleted.
Thanks Raja R Harinath for spotting it.
|
| |
|
|
|
|
| |
"--debug-rules" flag is active.
|
| |
|
| |
|
| |
|
|
|
|
| |
Creation is already printed at the bottom.
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The conflict was mainly around two different approaches to fixing the linear
commitMarks issue. The precise tracking of commit marks per branch is better,
and that's how I resolved the merge conflict.
While at it, I also removed the "revision-*" files, since the "log-*" files
already have the same information, and the branch information too.
Conflicts:
src/repository.cpp
src/repository.h
|
| |\
| | |
| | |
| | | |
git://gitorious.org/~marcguenther/svn2git/marcguenther-svn2git into integration
|
| | |\ |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
from path then fallback to using the latest version and issue a warning
|
| | | | |
|
| | | | |
|
| | | | |
|
| | |/
| |/| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Suppose you have multiple repositories in SVN that you want to merge into
a single one in GIT, it can get very messy to handle all the special-case
rules.
Instead, we introduce a new "forwarding repository" concept, which looks like
repository subordinate
repository unified
prefix foo/
end repository
This forwards all commits on the "subordinate" SVN tree to the "unified" GIT
tree, with each file prefixed with "foo/".
|
| | |
| | |
| | |
| | | |
Rename Repository to FastImportRepository. We will be introducing new types soon.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The naming scheme is
refs/backups/r<svn-revision>/(heads|tags)/<branch>
Where <svn-revision> is the revision where the branch is being reset:
either for deletion or to be overwritten.
We use a separate namespace so that we don't clutter up branch-name lists
and tag lists with deleted tags. These refs will keep the commits alive
as far as 'git gc' is concerned, but will be fairly unobstrusive otherwise.
|
| | |
| | |
| | |
| | | |
Put the slightly tricky qUpperBound logic in only one place.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
While at it, make progress message for the "unknown from" case similar
to the normal progress message. This ensures that any reconstructed
branch data-structure will not lose any information.
|
| | |
| | |
| | |
| | | |
Only deleteBranch uses it for now.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Allow graceful exit of all fast-import processes when createBranch fails.
For consistency, add return value to deleteBranch, even though it always
returns EXIT_SUCCESS.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When --resume-from failed in incremental mode, the log files that detected
the error condition were truncated. So, if the same command line was executed
again, the invocation would go through.
We now restore the log files from backup when we detect we're going to fail.
The restored log files may not all be the same as we originally started with,
but we only truncate information that would anyway be truncated on the
next successful run.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
An interrupted import (say with Ctrl-C) can leave the import directory in an
inconsistent state. This can be due to checkpointing fast-import only
occassionally, but updating log-* files immediately, and/or other reasons.
The incremental mode can detect certain such situations and rewind back to a
safe state. Note that since the default commit-interval is quite large, this
rewind can end up backtracking a lot.
Note also that import interrupted under the control of svn2git, say, for
missing rules should leave the import directory in a consistent state for
the purpose of svn2git.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Use two allocators for marks, one persistent commit counter that starts at 0
and counts up commits, and a transitional counter, for files, that counts down
from maxMark, and is reset on each SVN revision.
Note that the marks file will still have marks for some, but not all, files.
The number of such marks is limited by the size of the SVN revision that affects
the most files.
For instance, this changed the size of one marks file from 19M to 3.2M.
fast-import issues: We currently set maxMark = (1<<20)-1. Anything large seems
to trigger a bug in the sparse array dumping routine in git-fast-import in
certain versions of git.
|
| | |
| | |
| | |
| | | |
Use startFastImport to start off the git-fast-import process if necessary.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We use the progress logs that we carefully maintained to recreate the
branch data structures, as described in earlier commits.
A major change/improvement is that reloadBranches() now uses the marks file
and internal data structures to prime the fast-import rather than using
git-rev-parse.
We also handle --resume-from properly, by truncating the log file to revisions
that only precede the revision resumed from. Note that git fast-import allows
marks to be reused without any extra processing.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
SVN directory deletes often indicate one or more branch deletions. However,
since the deleted directory isn't present in the resulting revision, several
of the indicators used by the rule-application mechanism aren't present.
This forces us to introduce several useless dummy rules to avoid errors.
We now note deletions and use the previous revision to determine several
properties, including whether the deleted item is a directory or not, and to
enumerate the contents of the directory in recurse mode.
We add an additional heuristic for unknown repositories -- i.e., when a rule
fired, but it's repository was invalid. We recurse in this case hoping to
catch a more specific rule. I believe this is safe: because some other rule
must've seen the same directory before, when it or a subdirectory was created,
and decided _not_ to create a repository at that point -- so recursing and/or
ignoring the contents of the just deleted directory won't corrupt the history,
it can only improve it.
We use mark :0 to note mark deletions internally, and in the progress logs.
(Note that cvs2svn creates wierd commits where a whole tree is copied first,
and then subtrees are pruned. In such cases, neither the previous revision
nor the current revision have the deleted directory -- we ignore this case
as before. There's no information loss since the final contents of the revision
are exactly what is desired.)
|
| | |
| | |
| | |
| | |
| | |
| | | |
A single SVN revision can affect multiple branches in the same repository.
Keeping track of only one mark per revision loses information and makes
the history incorrect.
|
| | |
| | |
| | |
| | | |
15 commit parents.
|