hg-fast-export: add option to track remote branches under a custom namespace
authorFabrizio Chiarello <ponch@autistici.org>
Fri, 19 Sep 2008 16:31:53 +0000 (18:31 +0200)
committerFrej Drejhammar <frej.drejhammar@gmail.com>
Sat, 20 Dec 2008 18:51:02 +0000 (19:51 +0100)
Add -o, --origin <name> to allow user to set a namespace used
when importing remote branches.

Signed-off-by: Fabrizio Chiarello <ponch@autistici.org>
hg-fast-export.py
hg-fast-export.sh
hg2git.py

index 166204c..a612801 100755 (executable)
@@ -5,7 +5,7 @@
 
 from mercurial import repo,hg,cmdutil,util,ui,revlog,node
 from hg2git import setup_repo,fixup_user,get_branch,get_changeset
-from hg2git import load_cache,save_cache,get_git_sha1,set_default_branch
+from hg2git import load_cache,save_cache,get_git_sha1,set_default_branch,set_origin_name
 from tempfile import mkstemp
 from optparse import OptionParser
 import re
@@ -383,6 +383,8 @@ if __name__=='__main__':
       default=False,help="Ignore validation errors by force")
   parser.add_option("-M","--default-branch",dest="default_branch",
       help="Set the default branch")
+  parser.add_option("-o","--origin",dest="origin_name",
+      help="use <name> as namespace to track upstream")
 
   (options,args)=parser.parse_args()
 
@@ -401,5 +403,8 @@ if __name__=='__main__':
   if options.default_branch!=None:
     set_default_branch(options.default_branch)
 
+  if options.origin_name!=None:
+    set_origin_name(options.origin_name)
+
   sys.exit(hg2git(options.repourl,m,options.marksfile,options.headsfile,
     options.statusfile,authors=a,sob=options.sob,force=options.force))
index 2f721e2..8219523 100755 (executable)
@@ -12,7 +12,7 @@ SFX_STATE="state"
 QUIET=""
 PYTHON=${PYTHON:-python}
 
-USAGE="[--quiet] [-r <repo>] [-m <max>] [-s] [-A <file>] [-M <branch_name>]"
+USAGE="[--quiet] [-r <repo>] [-m <max>] [-s] [-A <file>] [-M <name>] [-o <name>]"
 LONG_USAGE="Import hg repository <repo> up to either tip or <max>
 If <repo> is omitted, use last hg repository as obtained from state file,
 GIT_DIR/$PFX-$SFX_STATE by default.
@@ -26,7 +26,8 @@ Options:
        -A      Read author map from file
                (Same as in git-svnimport(1) and git-cvsimport(1))
        -r      Mercurial repository to import
-        -M      Set the default branch name
+        -M      Set the default branch name (default to 'master')
+        -o      Use <name> as branch namespace to track upstream (eg 'origin')
 "
 
 . "$(git --exec-path)/git-sh-setup"
index 12dd574..fd8b632 100755 (executable)
--- a/hg2git.py
+++ b/hg2git.py
@@ -10,6 +10,8 @@ import sys
 
 # default git branch name
 cfg_master='master'
+# default origin name
+origin_name=''
 # silly regex to see if user field has email address
 user_re=re.compile('([^<]+) (<[^>]+>)$')
 # silly regex to clean out user names
@@ -19,6 +21,10 @@ def set_default_branch(name):
   global cfg_master
   cfg_master = name
 
+def set_origin_name(name):
+  global origin_name
+  origin_name = name
+
 def setup_repo(url):
   myui=ui.ui(interactive=False)
   return myui,hg.repository(myui,url)
@@ -53,6 +59,8 @@ def get_branch(name):
   # other CVS imports may need it, too
   if name=='HEAD' or name=='default' or name=='':
     name=cfg_master
+  if origin_name:
+    return origin_name + '/' + name
   return name
 
 def get_changeset(ui,repo,revision,authors={}):