Rocco Rutte [Mon, 19 Mar 2007 09:27:37 +0000 (09:27 +0000)]
hg-reset.py: Print details for changed branches only
It doesn't make sense to suggest resetting branch HEADs to their current
value.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 19 Mar 2007 09:18:20 +0000 (09:18 +0000)]
License hg-reset.py under GPLv2 as it uses mercurial code
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 19 Mar 2007 09:05:51 +0000 (09:05 +0000)]
hg-fast-export.py: Fix option presence checking
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 19 Mar 2007 09:04:42 +0000 (09:04 +0000)]
hg-reset.sh: Helper for partially re-importing from hg
Given a hg revision to reset to, these scripts get the latest changes
per hg branch and print git SHA1. The user then needs to manually reset
branches as needed, tune the state file and can re-import things again.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 19 Mar 2007 08:45:42 +0000 (08:45 +0000)]
Add hg2git.py with library routines
Unfortunately, I can't do 'import hg-fast-export' from python itself, so
we need to move some common methods into 'hg2git.py' which is to be used
as a library for common hg->git routines.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 19 Mar 2007 08:38:27 +0000 (08:38 +0000)]
Ignore *.pyc files
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Fri, 16 Mar 2007 18:19:08 +0000 (18:19 +0000)]
Replace some references from hg2git to hg-fast-import
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Simon Hausmann [Fri, 16 Mar 2007 12:47:46 +0000 (13:47 +0100)]
Default to interactive syncing
Simon Hausmann [Thu, 15 Mar 2007 18:07:06 +0000 (19:07 +0100)]
Be more strict with Perforce after synching.
Simon Hausmann [Wed, 14 Mar 2007 22:30:23 +0000 (23:30 +0100)]
Auto-detect the current branch
Simon Hausmann [Wed, 14 Mar 2007 18:03:16 +0000 (19:03 +0100)]
Ignore weird apple files :)
Simon Hausmann [Wed, 14 Mar 2007 16:33:46 +0000 (17:33 +0100)]
Be nice and use /usr/bin/env python for the git-p4 scripts
Simon Hausmann [Wed, 14 Mar 2007 16:29:46 +0000 (17:29 +0100)]
Automatically operate on a temporary branch, needed for cherry-pick to work when applying changes to
files that are deleted in the future.
Also do some Perforce cleaning
Rocco Rutte [Wed, 14 Mar 2007 15:56:57 +0000 (15:56 +0000)]
Use svn_repos_open() for svn-archive.c, too
Without the change, running it does nothing at all here.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 14 Mar 2007 15:35:33 +0000 (15:35 +0000)]
Obtain svn_fs_t via svn_repos_open() -> svn_repos_fs()
Without really knowing the svn API, using plain svn_fs_open() complained
about a missing /foo/DB_CONFIG even on fsfs type repos. Use
svn_repos_open() to open the repo and use svn_repos_fs() to get the fs
instead of using svn_fs_open() since even the headers say I wouldn't
want to use it directly... and they're right, obviously. :)
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 14 Mar 2007 15:19:13 +0000 (15:19 +0000)]
Allow CFLAGS and LDFLAGS to be overwritten on command line
Hardcoding doesn't make sense, after all.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 14 Mar 2007 10:56:18 +0000 (10:56 +0000)]
hg-fast-export.sh Use hg-fast-export.py, not dead hg2git.py
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 14 Mar 2007 10:32:33 +0000 (10:32 +0000)]
hg-fast-export.py: Kill stale usage() and __doc__
Both are obsolete since using the option parser.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 14 Mar 2007 10:29:24 +0000 (10:29 +0000)]
Use MIT license, adjust hg2git script names to match fast-export repo style
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 14 Mar 2007 10:22:52 +0000 (10:22 +0000)]
Merge branch 'master' of git://repo.or.cz/hg2git
* 'master' of git://repo.or.cz/hg2git: (38 commits)
hg2git.py: Only print verification message for branches we have
hg2git.py: Add simple delta revision feed
hg2git.py: Create only leightweight tags
hg2git.py: add -f/--force option to bypass validation checks
hg2git.py: Bail out for certain errors
Add a note about hg's unnamed branches and multiple heads
hg2git.py: For the first revision, feed out full manifest
hg2git.py: Don't complain die for non-existent heads
Remove SHA stability note from readme
hg2git.py: Remove leading/trailing spaces from authormap
hg2git.py: Allow for spaces in authorfile
hg2git.sh: Add usage note that argument order matters
hg2git.sh: Complete --help output's option listing
Basic support for an author map
hg2git.py: Fix typo saving status to headsfile instead of statusfile
hg2git.py: Display our max revision as progress, not tip
hg2git.py: Disable parsing Signef-off-by lines and add -s to enable
Basic support for command line options in hg2git.py
Rename README.txt to hg2git.txt
Only attempt to verify heads hg has, too
...
Rocco Rutte [Wed, 14 Mar 2007 10:13:27 +0000 (10:13 +0000)]
hg2git.py: Only print verification message for branches we have
It's pointless for many branches to print the validation message for the
first revision already; the same counts for incremental runs.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 14 Mar 2007 10:02:15 +0000 (10:02 +0000)]
hg2git.py: Add simple delta revision feed
Now we have three methods of feeding out changes
1) full for first revision or
2) thorough delta for merges (compare checksums with all parents) or
3) simple delta else (only got with manifest)
This requires some cleanup so that we have only place where we actually
call the appropriate dumping method.
The export_file_contents() method now also sorts its file list before
writing out anything as this seems to speed up hg data retrival a bit.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 14 Mar 2007 08:34:18 +0000 (08:34 +0000)]
hg2git.py: Create only leightweight tags
The annotated tag with commit message summary was primarily only for
debugging.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Tue, 13 Mar 2007 16:43:20 +0000 (16:43 +0000)]
hg2git.py: add -f/--force option to bypass validation checks
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Tue, 13 Mar 2007 16:31:57 +0000 (16:31 +0000)]
hg2git.py: Bail out for certain errors
New is that we also check for multiple tips having the same branch name,
i.e. no unnamed heads.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Simon Hausmann [Tue, 13 Mar 2007 15:36:10 +0000 (16:36 +0100)]
Lots of fixes done together with Paul
Rocco Rutte [Tue, 13 Mar 2007 15:27:29 +0000 (15:27 +0000)]
Add a note about hg's unnamed branches and multiple heads
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Tue, 13 Mar 2007 10:59:22 +0000 (10:59 +0000)]
hg2git.py: For the first revision, feed out full manifest
For the mutt and hg repos, it didn't make a difference, but attempting
to run the conversion on the opensolaris repo looks like this is needed.
When we attempt to export some commit, special-case the revision number
0 and export all files the manifest has while labeling this a "full
revision export". Otherwise we do what we did before labeling this a
"delta revision export".
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Simon Hausmann [Tue, 13 Mar 2007 08:14:45 +0000 (09:14 +0100)]
Fix git-dir option and allow reading log substitutions from a file
Simon Hausmann [Mon, 12 Mar 2007 22:00:34 +0000 (23:00 +0100)]
First shot at a script that allows applying changesets back from git to perforce
Rocco Rutte [Mon, 12 Mar 2007 11:13:48 +0000 (11:13 +0000)]
hg2git.py: Don't complain die for non-existent heads
Previously, when no head was present under .git/refs/heads, we simply
died as we couldn't open the file. Now, simply return None in case we
cannot read from it.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 12 Mar 2007 11:05:33 +0000 (11:05 +0000)]
Remove SHA stability note from readme
Turns out, it isn't true though the diffs are still empty, i.e.
$ git log --name-status --no-merges b1..b2
produces bogus output when b1 is the a branch from the main hg repo and
b2 a fork of it. But
$ git diff b1..b2
still produces the correct result.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 12 Mar 2007 10:45:32 +0000 (10:45 +0000)]
hg2git.py: Remove leading/trailing spaces from authormap
The current regex may leave us with keys/values having trailing/leading
spaces in all flavours which will break lookup. Solution: strip() key
and value.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 12 Mar 2007 10:26:46 +0000 (10:26 +0000)]
hg2git.py: Allow for spaces in authorfile
By allowing spaces in keys we allow for (re-)mapping complete lines
like "Joe User <joe@host>" to be mapped to something else.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 12 Mar 2007 10:25:01 +0000 (10:25 +0000)]
hg2git.sh: Add usage note that argument order matters
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 12 Mar 2007 09:06:48 +0000 (09:06 +0000)]
hg2git.sh: Complete --help output's option listing
This also adds some more verbose descriptions than the bare listing.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 12 Mar 2007 08:54:30 +0000 (08:54 +0000)]
Basic support for an author map
As git-(cvs|svn)import support it, make futrue git-hgimport :) support it, too.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 12 Mar 2007 08:13:40 +0000 (08:13 +0000)]
hg2git.py: Fix typo saving status to headsfile instead of statusfile
This broke incremental imports as hg2git.sh wrapper overwrites headsfile
with current values after the import is done.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 12 Mar 2007 08:12:08 +0000 (08:12 +0000)]
hg2git.py: Display our max revision as progress, not tip
Displaying tip doesn't make sense when we have some max given with -m/--max.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 12 Mar 2007 08:00:18 +0000 (08:00 +0000)]
hg2git.py: Disable parsing Signef-off-by lines and add -s to enable
IMHO it's highly unusual to have these lines in hg projects but who
knows. As it's slow to parse these types of lines (with regex), it's
disabled by default and the 'author' command of git-fast-import isn't
used at all.
It can be enabled by giving the -s switch to hg2git.sh.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Mon, 12 Mar 2007 07:33:40 +0000 (07:33 +0000)]
Basic support for command line options in hg2git.py
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Simon Hausmann [Sat, 10 Mar 2007 20:30:24 +0000 (21:30 +0100)]
Make the caching official, sort of :)
Simon Hausmann [Sat, 10 Mar 2007 20:23:49 +0000 (21:23 +0100)]
less false integrations
Simon Hausmann [Sat, 10 Mar 2007 16:46:49 +0000 (17:46 +0100)]
More work on merge detection
Rocco Rutte [Sat, 10 Mar 2007 14:29:49 +0000 (14:29 +0000)]
Rename README.txt to hg2git.txt
This is to avoid naming clashes since I'm more or less about to merge
hg2git into fast-export.git at repo.or.cz.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Sat, 10 Mar 2007 14:28:45 +0000 (14:28 +0000)]
Only attempt to verify heads hg has, too
In the git repo there may be any number branches that are not hg
imported branches, so it doesn't make sense to print warnings when a
non-hg head isn't at what it was last time.
Now we get a list of branchtags hg has and only verify these.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Simon Hausmann [Sat, 10 Mar 2007 10:46:26 +0000 (11:46 +0100)]
Cleanups and preparations for true branch merge detection
Simon Hausmann [Sat, 10 Mar 2007 09:53:07 +0000 (10:53 +0100)]
Cleanups
Simon Hausmann [Sat, 10 Mar 2007 09:25:34 +0000 (10:25 +0100)]
make the debug cache configurable
Simon Hausmann [Sat, 10 Mar 2007 08:49:19 +0000 (09:49 +0100)]
Haha, of course the extension should be .py!
Rocco Rutte [Fri, 9 Mar 2007 12:07:08 +0000 (12:07 +0000)]
hg2git.py: Add support for extracting authorship from Signed-off-by lines
Unfortunately, it's not configurable yet (read: cannot be disabled) as
it may take some time to match against regex all the time (especially
from some initial import).
This also enables cleaning up usernames by stripping silly leading and
trailing chars like '"' (which is the only one supported ATM).
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Fri, 9 Mar 2007 11:09:57 +0000 (11:09 +0000)]
hg2git.py: Add support for user-defined hg author -> git author mapping
The mapping is a python dictionary given to the hg2git() function. This
isn't extremely useful as there's no option passing from hg2git.sh to
hg2git.py (yet).
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Simon Hausmann [Thu, 8 Mar 2007 20:34:40 +0000 (21:34 +0100)]
fix --known-branches support
Simon Hausmann [Thu, 8 Mar 2007 20:27:59 +0000 (21:27 +0100)]
unstable work in progress for better main branch detection
Rocco Rutte [Thu, 8 Mar 2007 11:46:41 +0000 (11:46 +0000)]
Add Todo section to readme
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Thu, 8 Mar 2007 11:21:21 +0000 (11:21 +0000)]
hg2git.py: Refactor main code into hg2git() function
Now this can even be used as a module from other python scripts by
simply calling the hg2git() function.
Except some config values nobody really ever wants to change, it's even
save to run several hg2git() functions in parallel as no global vars or
the like are used by intention (but it makes the code uglier).
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Thu, 8 Mar 2007 11:16:28 +0000 (11:16 +0000)]
hg2git.sh: Try to get last hg repo url from state file
As one usually mirrors a git repo based on the same hg repo, it's
annoying having to specify the hg repo url all the time. Since we
intentionally stored the url in the state file already, use in the
shell wrapper and default to it.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Thu, 8 Mar 2007 10:12:01 +0000 (10:12 +0000)]
Add note about SHA1 stability to readme
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Thu, 8 Mar 2007 09:37:41 +0000 (09:37 +0000)]
Add some degign notes to readme
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Thu, 8 Mar 2007 09:37:23 +0000 (09:37 +0000)]
Don't use checkpoint
As git-fast-import already generates at least one pack per run, don't
even further split these up on a (default) 1k changeset boundary. Also
rework the documentation on that one a little.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Simon Hausmann [Wed, 7 Mar 2007 18:58:54 +0000 (19:58 +0100)]
work with newer git versions
Rocco Rutte [Wed, 7 Mar 2007 15:10:39 +0000 (15:10 +0000)]
Add some simpe readme with legal stuff, usage and some notes
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 7 Mar 2007 11:38:56 +0000 (11:38 +0000)]
Distinct between added, changed and removed files for UI output
To git-fast-import(1) we feed in changed and added files completely, so
thers's no real difference except UI output (potentially for debugging).
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 7 Mar 2007 11:33:03 +0000 (11:33 +0000)]
Only attempt to export tags in our input range
This prints much less noise and potentially makes git-fast-import(1)
less confused.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 7 Mar 2007 11:24:59 +0000 (11:24 +0000)]
Add --quiet option passed to git-fast-import(1)
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 7 Mar 2007 11:06:34 +0000 (11:06 +0000)]
Don't restore checkpoint count from cache
It doesn't make sense as each run of git-fast-import starts a new pack
anyways.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Wed, 7 Mar 2007 01:52:58 +0000 (01:52 +0000)]
Speedup: Use manifest and compare checksums to detect changes
Instead of feeding in everything or only something and getting merges
wrong, build up a list of changed (incl. added) and deleted files by
1) comparing manifest (deleted, added)
2) comparing checksums if file is present in parent and child (change)
The hg-crew and mutt imports now go in <15 minutes and md5 sums match.
Thanks to Theodore Tso for the hint.
While at it, fix a regression that upon incremental import start we
always merged a branch plus initializing it. A single test showed that
the new detection get starting off from a merge commit right, too.
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Rocco Rutte [Tue, 6 Mar 2007 22:11:10 +0000 (22:11 +0000)]
Link and not merge first branch of incremental import
Rocco Rutte [Tue, 6 Mar 2007 19:47:51 +0000 (19:47 +0000)]
Provide two versions of getting changes per manifest
As suggested on #mercurial, filectxs() may be faster
than calling filectx() per file.
Rocco Rutte [Tue, 6 Mar 2007 19:46:50 +0000 (19:46 +0000)]
Fix wrapper script for branches with slahes
Use git-branch(1) instead of ls(1) for getting branch names.
Rocco Rutte [Tue, 6 Mar 2007 17:00:25 +0000 (17:00 +0000)]
Initial import
This is the initial import of 'hg2git' being a converter which feeds a
hg repository into git-fast-import(1).
Simon Hausmann [Thu, 22 Feb 2007 09:20:53 +0000 (10:20 +0100)]
silent for real this time
Simon Hausmann [Thu, 22 Feb 2007 08:22:36 +0000 (09:22 +0100)]
Another silent fix
Simon Hausmann [Thu, 22 Feb 2007 08:03:39 +0000 (09:03 +0100)]
blind: added support for --silent
Simon Hausmann [Wed, 21 Feb 2007 16:51:07 +0000 (17:51 +0100)]
another todo item
Simon Hausmann [Sat, 17 Feb 2007 15:18:22 +0000 (01:18 +1000)]
hotfix for branchless imports
Simon Hausmann [Wed, 14 Feb 2007 16:16:14 +0000 (02:16 +1000)]
Run also with older versions of Python
Simon Hausmann [Wed, 14 Feb 2007 16:13:17 +0000 (17:13 +0100)]
this is very much in progress, but at least the branch importing works a little bit
better now
Simon Hausmann [Mon, 12 Feb 2007 21:05:21 +0000 (22:05 +0100)]
try merging based on p4 changes
Simon Hausmann [Mon, 12 Feb 2007 20:56:46 +0000 (21:56 +0100)]
set marks for fast-import
Simon Hausmann [Mon, 12 Feb 2007 20:44:02 +0000 (21:44 +0100)]
don't write out too many merges
Simon Hausmann [Mon, 12 Feb 2007 20:41:45 +0000 (21:41 +0100)]
more work on branch import. my testcase works at least :)
Simon Hausmann [Mon, 12 Feb 2007 20:04:59 +0000 (21:04 +0100)]
start experimental work on branch detection
Simon Hausmann [Mon, 12 Feb 2007 19:28:58 +0000 (20:28 +0100)]
cleanups
Simon Hausmann [Sun, 11 Feb 2007 20:35:34 +0000 (21:35 +0100)]
get rid of unused variable
Simon Hausmann [Sun, 11 Feb 2007 17:04:39 +0000 (18:04 +0100)]
create lightweight tags instead of full tag objects for the incremental import
Simon Hausmann [Sat, 10 Feb 2007 09:26:03 +0000 (10:26 +0100)]
a little helper script to prune stale p4 import tags
Simon Hausmann [Sat, 10 Feb 2007 09:05:51 +0000 (10:05 +0100)]
changed the default branch to master
Simon Hausmann [Sat, 10 Feb 2007 09:05:29 +0000 (10:05 +0100)]
avoid the excessive use of tags and just keep one p4 tag around
Simon Hausmann [Sat, 10 Feb 2007 08:25:22 +0000 (09:25 +0100)]
cleanups
Simon Hausmann [Thu, 8 Feb 2007 22:00:19 +0000 (23:00 +0100)]
a little script to ease debugging of perforce's python output
Simon Hausmann [Thu, 8 Feb 2007 14:53:11 +0000 (15:53 +0100)]
make the branch configurable
Simon Hausmann [Thu, 8 Feb 2007 14:45:16 +0000 (15:45 +0100)]
slightly better error handling
Simon Hausmann [Wed, 7 Feb 2007 22:51:51 +0000 (23:51 +0100)]
fix calculation of newest revision for initial import
Simon Hausmann [Wed, 7 Feb 2007 22:37:54 +0000 (23:37 +0100)]
yumm, more convenience
Simon Hausmann [Wed, 7 Feb 2007 22:25:56 +0000 (23:25 +0100)]
use git-repo-config for more convenience
Simon Hausmann [Wed, 7 Feb 2007 22:09:49 +0000 (23:09 +0100)]
fix incremental imports
Simon Hausmann [Wed, 7 Feb 2007 21:57:01 +0000 (22:57 +0100)]
cleanups and work with the latest git-fast-import
Simon Hausmann [Thu, 1 Feb 2007 17:19:55 +0000 (18:19 +0100)]
some work on single revision imports
Simon Hausmann [Thu, 1 Feb 2007 16:42:23 +0000 (17:42 +0100)]
small cleanup