From a984e233c2732c0e82db30d171a76035e08575cc Mon Sep 17 00:00:00 2001 From: Fabrizio Chiarello Date: Fri, 19 Sep 2008 18:31:53 +0200 Subject: [PATCH] hg-fast-export: add option to track remote branches under a custom namespace Add -o, --origin to allow user to set a namespace used when importing remote branches. Signed-off-by: Fabrizio Chiarello --- hg-fast-export.py | 7 ++++++- hg-fast-export.sh | 5 +++-- hg2git.py | 8 ++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/hg-fast-export.py b/hg-fast-export.py index 166204c..a612801 100755 --- a/hg-fast-export.py +++ b/hg-fast-export.py @@ -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 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)) diff --git a/hg-fast-export.sh b/hg-fast-export.sh index 2f721e2..8219523 100755 --- a/hg-fast-export.sh +++ b/hg-fast-export.sh @@ -12,7 +12,7 @@ SFX_STATE="state" QUIET="" PYTHON=${PYTHON:-python} -USAGE="[--quiet] [-r ] [-m ] [-s] [-A ] [-M ]" +USAGE="[--quiet] [-r ] [-m ] [-s] [-A ] [-M ] [-o ]" LONG_USAGE="Import hg repository up to either tip or If 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 as branch namespace to track upstream (eg 'origin') " . "$(git --exec-path)/git-sh-setup" diff --git a/hg2git.py b/hg2git.py index 12dd574..fd8b632 100755 --- 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={}): -- 2.11.4.GIT