hg-fast-export: add option to track remote branches under a custom namespace

Add -o, --origin <name> to allow user to set a namespace used
when importing remote branches.

Signed-off-by: Fabrizio Chiarello <ponch@autistici.org>
This commit is contained in:
Fabrizio Chiarello
2008-09-19 18:31:53 +02:00
committed by Frej Drejhammar
parent fdbb1decaa
commit a984e233c2
3 changed files with 17 additions and 3 deletions

View File

@@ -5,7 +5,7 @@
from mercurial import repo,hg,cmdutil,util,ui,revlog,node from mercurial import repo,hg,cmdutil,util,ui,revlog,node
from hg2git import setup_repo,fixup_user,get_branch,get_changeset 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 tempfile import mkstemp
from optparse import OptionParser from optparse import OptionParser
import re import re
@@ -383,6 +383,8 @@ if __name__=='__main__':
default=False,help="Ignore validation errors by force") default=False,help="Ignore validation errors by force")
parser.add_option("-M","--default-branch",dest="default_branch", parser.add_option("-M","--default-branch",dest="default_branch",
help="Set the 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() (options,args)=parser.parse_args()
@@ -401,5 +403,8 @@ if __name__=='__main__':
if options.default_branch!=None: if options.default_branch!=None:
set_default_branch(options.default_branch) 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, sys.exit(hg2git(options.repourl,m,options.marksfile,options.headsfile,
options.statusfile,authors=a,sob=options.sob,force=options.force)) options.statusfile,authors=a,sob=options.sob,force=options.force))

View File

@@ -12,7 +12,7 @@ SFX_STATE="state"
QUIET="" QUIET=""
PYTHON=${PYTHON:-python} 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> 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, If <repo> is omitted, use last hg repository as obtained from state file,
GIT_DIR/$PFX-$SFX_STATE by default. GIT_DIR/$PFX-$SFX_STATE by default.
@@ -26,7 +26,8 @@ Options:
-A Read author map from file -A Read author map from file
(Same as in git-svnimport(1) and git-cvsimport(1)) (Same as in git-svnimport(1) and git-cvsimport(1))
-r Mercurial repository to import -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" . "$(git --exec-path)/git-sh-setup"

View File

@@ -10,6 +10,8 @@ import sys
# default git branch name # default git branch name
cfg_master='master' cfg_master='master'
# default origin name
origin_name=''
# silly regex to see if user field has email address # silly regex to see if user field has email address
user_re=re.compile('([^<]+) (<[^>]+>)$') user_re=re.compile('([^<]+) (<[^>]+>)$')
# silly regex to clean out user names # silly regex to clean out user names
@@ -19,6 +21,10 @@ def set_default_branch(name):
global cfg_master global cfg_master
cfg_master = name cfg_master = name
def set_origin_name(name):
global origin_name
origin_name = name
def setup_repo(url): def setup_repo(url):
myui=ui.ui(interactive=False) myui=ui.ui(interactive=False)
return myui,hg.repository(myui,url) return myui,hg.repository(myui,url)
@@ -53,6 +59,8 @@ def get_branch(name):
# other CVS imports may need it, too # other CVS imports may need it, too
if name=='HEAD' or name=='default' or name=='': if name=='HEAD' or name=='default' or name=='':
name=cfg_master name=cfg_master
if origin_name:
return origin_name + '/' + name
return name return name
def get_changeset(ui,repo,revision,authors={}): def get_changeset(ui,repo,revision,authors={}):