summaryrefslogtreecommitdiff
path: root/hg2git.py
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #6 from aried3r/masterupstream/20120921frej2012-08-101-1/+1
|\ | | | | Fix for Mercurial 2.3 compatibility
| * Organized importsAnton Rieder2012-08-071-1/+1
| | | | | | | | | | | | | | | | | | After an update to Mercurial 2.3 the module 'repo' was removed and the program crashed when trying to convert a repository. I checked the imports with 'pyflakes' and removed all unused ones, repo (among others) was never used. http://www.selenic.com/repo/hg/rev/1ac628cd7113#l9.1
* | Make hg-fast-export work on WindowsDaniel Harding2012-05-281-1/+1
|/ | | | | * use sys.stdout.write instead of print to avoid end-of-line issues * use os.devnull instead of hard-coding /dev/null
* Support the case where the author field has an empty email address, i.e. it ↵Barry Wardell2011-11-261-1/+1
| | | | is of the form 'name <>'.
* Use hg methods to extract name and email when doing user fixupPaul O’Shannessy2011-10-181-9/+8
|
* Remove \" from the user string before trying to extract name and emailupstream/20110318Frej Drejhammar2011-03-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Frej Drejhammar <frej.drejhammar@gmail.com> Reported-by: Cole Robinson <crobinso@redhat.com> Thank's to Cole Robinson for reporting the bug and providing a fix which was adapted to this patch. The original bug report: I was recently converting a few mercurial repositories to git, and noticed certain commits had their date reset to Jan 1 1970. An example repo: http://hg.fedorahosted.org/hg/virt-manager An example commit: http://hg.fedorahosted.org/hg/virt-manager/rev/41182500ddef After some poking, it seems the culprit was that the "author:" was surrounded by quotation marks
* Maintain backwards compatibility for ui setupRocco Rutte2009-05-251-2/+5
| | | | Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* Update to work with mercurial ui refactoringsRocco Rutte2009-05-141-1/+2
| | | | Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg-fast-export: add option to track remote branches under a custom namespaceFabrizio Chiarello2008-12-201-0/+8
| | | | | | | Add -o, --origin <name> to allow user to set a namespace used when importing remote branches. Signed-off-by: Fabrizio Chiarello <ponch@autistici.org>
* hg2git: Update copyrights and maintainership information.Rocco Rutte2008-11-251-1/+1
| | | | Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg-fast-export: Make default branch customizableFabrizio Chiarello2008-09-191-0/+4
| | | | | | | Add -M, --default-branch <branch_name> to allow user to set the default branch where to pull into Signed-off-by: Fabrizio Chiarello <ponch@autistici.org>
* hg-fast-export: work still if git-commands are not in PATHJonathan Nieder2008-07-311-1/+1
| | | | | | | | | | | | | In git 1.6.0, most git tools with a dash in the name will no longer be installed in $bindir. This patch makes hg-fast-export use the "git <command>" form so it will work even if "git" is the only piece of git machinery in the user's PATH. On the other hand, the "git <command>" form does not help for sourcing a shell script (with "."). So use the full path to source "git-sh-setup". Signed-off-by: Jonathan Nieder <jrnieder@uchicago.edu>
* Revert "hg2git: Replaces space with "_" in branches name"Rocco Rutte2008-06-031-1/+1
| | | | | | | | | | | The get_branch() function's purpose is to detect whether a mercurial branch name actually should be considered the default branch. Sanitizing branch and tag names for git is done in sanitize_name(). Noted by Jonathan Nieder. This reverts commit cdfdae36c8a73fb257eceff33b03d2f320bafc6b.
* Clarify where 'HEAD' branch name comes fromRocco Rutte2008-05-301-2/+3
| | | | Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg2git: Replaces space with "_" in branches nameFelipe Zimmerle2008-05-301-1/+1
| | | | | | | | Since space doesn't conform to GIT branches name standards, it should be replaced or with another character. Signed-off-by: Felipe Zimmerle <felipe.zimmerle@indt.org.br> Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg2git.py: Allow consumers to modify keys of dicts returned by load_cache()Rocco Rutte2007-10-221-2/+5
| | | | | | | By default, the key is not changed. This will allow us for fixing up the off-by-one issue with marks restored using load_cache(). Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg2git.py: Use git-rev-parse to get SHA1s instead of reading files below ↵Rocco Rutte2007-10-221-4/+9
| | | | | | | | refs/ directly This should now also properly support packed refs. Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg2git.py: Map 'HEAD', 'default' and '' hg branches to 'master' in gitRocco Rutte2007-10-221-1/+2
| | | | | | Also add a note where HEAD is comming from. Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg-reset.py: Print details for changed branches onlyRocco Rutte2007-03-191-0/+9
| | | | | | | It doesn't make sense to suggest resetting branch HEADs to their current value. Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* Add hg2git.py with library routinesRocco Rutte2007-03-191-0/+78
| | | | | | | | 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>
* Use MIT license, adjust hg2git script names to match fast-export repo styleRocco Rutte2007-03-141-450/+0
| | | | Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg2git.py: Only print verification message for branches we haveRocco Rutte2007-03-141-1/+2
| | | | | | | 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>
* hg2git.py: Add simple delta revision feedRocco Rutte2007-03-141-14/+33
| | | | | | | | | | | | | | | 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>
* hg2git.py: Create only leightweight tagsRocco Rutte2007-03-141-8/+2
| | | | | | | The annotated tag with commit message summary was primarily only for debugging. Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg2git.py: add -f/--force option to bypass validation checksRocco Rutte2007-03-131-9/+11
| | | | Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg2git.py: Bail out for certain errorsRocco Rutte2007-03-131-3/+15
| | | | | | | 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>
* Add a note about hg's unnamed branches and multiple headsRocco Rutte2007-03-131-1/+1
| | | | Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg2git.py: For the first revision, feed out full manifestRocco Rutte2007-03-131-13/+30
| | | | | | | | | | | | 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>
* hg2git.py: Don't complain die for non-existent headsRocco Rutte2007-03-121-4/+7
| | | | | | | | 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>
* hg2git.py: Remove leading/trailing spaces from authormapRocco Rutte2007-03-121-1/+1
| | | | | | | | 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>
* hg2git.py: Allow for spaces in authorfileRocco Rutte2007-03-121-1/+1
| | | | | | | 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>
* Basic support for an author mapRocco Rutte2007-03-121-1/+26
| | | | | | As git-(cvs|svn)import support it, make futrue git-hgimport :) support it, too. Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg2git.py: Fix typo saving status to headsfile instead of statusfileRocco Rutte2007-03-121-1/+1
| | | | | | | 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>
* hg2git.py: Display our max revision as progress, not tipRocco Rutte2007-03-121-1/+1
| | | | | | Displaying tip doesn't make sense when we have some max given with -m/--max. Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* hg2git.py: Disable parsing Signef-off-by lines and add -s to enableRocco Rutte2007-03-121-9/+12
| | | | | | | | | | | 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>
* Basic support for command line options in hg2git.pyRocco Rutte2007-03-121-4/+32
| | | | Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* Only attempt to verify heads hg has, tooRocco Rutte2007-03-101-5/+12
| | | | | | | | | | 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>
* hg2git.py: Add support for extracting authorship from Signed-off-by linesRocco Rutte2007-03-091-11/+68
| | | | | | | | | | | 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>
* hg2git.py: Add support for user-defined hg author -> git author mappingRocco Rutte2007-03-091-10/+14
| | | | | | | | 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>
* hg2git.py: Refactor main code into hg2git() functionRocco Rutte2007-03-081-4/+9
| | | | | | | | | | | 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>
* Don't use checkpointRocco Rutte2007-03-081-3/+3
| | | | | | | | 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>
* Distinct between added, changed and removed files for UI outputRocco Rutte2007-03-071-16/+18
| | | | | | | 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>
* Only attempt to export tags in our input rangeRocco Rutte2007-03-071-7/+12
| | | | | | | This prints much less noise and potentially makes git-fast-import(1) less confused. Signed-off-by: Rocco Rutte <pdmef@gmx.net>
* Don't restore checkpoint count from cacheRocco Rutte2007-03-071-2/+1
| | | | | | | 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>
* Speedup: Use manifest and compare checksums to detect changesRocco Rutte2007-03-071-28/+54
| | | | | | | | | | | | | | | | | | 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>
* Link and not merge first branch of incremental importRocco Rutte2007-03-061-0/+3
|
* Provide two versions of getting changes per manifestRocco Rutte2007-03-061-3/+11
| | | | | As suggested on #mercurial, filectxs() may be faster than calling filectx() per file.
* Initial importRocco Rutte2007-03-061-0/+230
This is the initial import of 'hg2git' being a converter which feeds a hg repository into git-fast-import(1).