Mercurial > hg
changeset 2291:1cad19678b4c
merge with crew.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Mon, 15 May 2006 09:27:27 -0700 |
parents | dfa17bd1d45e (diff) 6563438219e3 (current diff) |
children | 903ab41ac7eb |
files | |
diffstat | 24 files changed, 116 insertions(+), 62 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/hgrc.5.txt Sun May 14 18:37:50 2006 -0300 +++ b/doc/hgrc.5.txt Mon May 15 09:27:27 2006 -0700 @@ -234,10 +234,9 @@ is in $HG_PARENT2. If update succeeded, $HG_ERROR=0. If update failed (e.g. because conflicts not resolved), $HG_ERROR=1. - In earlier releases, the names of hook environment variables did not - have a "HG_" prefix. These unprefixed names are still provided in - the environment for backwards compatibility, but their use is - deprecated, and they will be removed in a future release. + Note: In earlier releases, the names of hook environment variables + did not have a "HG_" prefix. The old unprefixed names are no longer + provided in the environment. The syntax for Python hooks is as follows:
--- a/mercurial/commands.py Sun May 14 18:37:50 2006 -0300 +++ b/mercurial/commands.py Mon May 15 09:27:27 2006 -0700 @@ -797,7 +797,7 @@ (nice(repo.changelog.tip()), nice(node))) if opts['merge'] and op1 != node: ui.status(_('merging with changeset %s\n') % nice(op1)) - update(ui, repo, hex(op1), **opts) + doupdate(ui, repo, hex(op1), **opts) def bundle(ui, repo, fname, dest="default-push", **opts): """create a changegroup file @@ -947,7 +947,7 @@ f.close() if not opts['noupdate']: - update(repo.ui, repo) + doupdate(repo.ui, repo) d.close() @@ -1305,10 +1305,11 @@ r = revlog.revlog(util.opener(os.getcwd(), audit=False), file_, "", 0) ui.write("digraph G {\n") for i in range(r.count()): - e = r.index[i] - ui.write("\t%d -> %d\n" % (r.rev(e[4]), i)) - if e[5] != nullid: - ui.write("\t%d -> %d\n" % (r.rev(e[5]), i)) + node = r.node(i) + pp = r.parents(node) + ui.write("\t%d -> %d\n" % (r.rev(pp[0]), i)) + if pp[1] != nullid: + ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i)) ui.write("}\n") def debugrename(ui, repo, file, rev=None): @@ -1956,7 +1957,7 @@ marked as changed for the next commit and a commit must be performed before any further updates are allowed. """ - return update(ui, repo, node=node, merge=True, **opts) + return doupdate(ui, repo, node=node, merge=True, **opts) def outgoing(ui, repo, dest="default-push", **opts): """show changesets not found in destination @@ -2035,7 +2036,7 @@ return if optupdate: if modheads == 1: - return update(ui, repo) + return doupdate(ui, repo) else: ui.status(_("not updating, since new heads added\n")) if modheads > 1: @@ -2740,15 +2741,19 @@ there is a linear relationship between the current version and the requested version, the result is the requested version. - Otherwise the result is a merge between the contents of the - current working directory and the requested version. Files that - changed between either parent are marked as changed for the next - commit and a commit must be performed before any further updates - are allowed. + To merge the working directory with another revision, use the + merge command. By default, update will refuse to run if doing so would require merging or discarding local changes. """ + if merge: + ui.warn(_('(the -m/--merge option is deprecated; ' + 'use the merge command instead)\n')) + return doupdate(ui, repo, node, merge, clean, force, branch, **opts) + +def doupdate(ui, repo, node=None, merge=False, clean=False, force=None, + branch=None, **opts): if branch: br = repo.branchlookup(branch=branch) found = [] @@ -3115,7 +3120,7 @@ "^update|up|checkout|co": (update, [('b', 'branch', '', _('checkout the head of a specific branch')), - ('m', 'merge', None, _('allow merging of branches')), + ('m', 'merge', None, _('allow merging of branches (DEPRECATED)')), ('C', 'clean', None, _('overwrite locally modified files')), ('f', 'force', None, _('force a merge with outstanding changes'))], _('hg update [-b TAG] [-m] [-C] [-f] [REV]')),
--- a/mercurial/httprepo.py Sun May 14 18:37:50 2006 -0300 +++ b/mercurial/httprepo.py Mon May 15 09:27:27 2006 -0700 @@ -11,6 +11,25 @@ from demandload import * demandload(globals(), "hg os urllib urllib2 urlparse zlib util httplib") +class passwordmgr(urllib2.HTTPPasswordMgr): + def __init__(self, ui): + urllib2.HTTPPasswordMgr.__init__(self) + self.ui = ui + + def find_user_password(self, realm, authuri): + authinfo = urllib2.HTTPPasswordMgr.find_user_password( + self, realm, authuri) + if authinfo != (None, None): + return authinfo + + self.ui.write(_("http authorization required\n")) + self.ui.status(_("realm: %s\n") % realm) + user = self.ui.prompt(_("user:"), default=None) + passwd = self.ui.getpass() + + self.add_password(realm, authuri, user, passwd) + return (user, passwd) + class httprepository(remoterepository): def __init__(self, ui, path): # fix missing / after hostname @@ -53,13 +72,21 @@ if host and not no_proxy: proxy_handler = urllib2.ProxyHandler({"http" : "http://" + host}) - authinfo = None + proxyauthinfo = None if user and passwd: passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm() passmgr.add_password(None, host, user, passwd) - authinfo = urllib2.ProxyBasicAuthHandler(passmgr) + proxyauthinfo = urllib2.ProxyBasicAuthHandler(passmgr) - opener = urllib2.build_opener(proxy_handler, authinfo) + if ui.interactive: + passmgr = passwordmgr(ui) + opener = urllib2.build_opener( + proxy_handler, proxyauthinfo, + urllib2.HTTPBasicAuthHandler(passmgr), + urllib2.HTTPDigestAuthHandler(passmgr)) + else: + opener = urllib2.build_opener(proxy_handler, proxyauthinfo) + # 1.0 here is the _protocol_ version opener.addheaders = [('User-agent', 'mercurial/proto-1.0')] urllib2.install_opener(opener)
--- a/mercurial/localrepo.py Sun May 14 18:37:50 2006 -0300 +++ b/mercurial/localrepo.py Mon May 15 09:27:27 2006 -0700 @@ -136,8 +136,7 @@ def runhook(name, cmd): self.ui.note(_("running hook %s: %s\n") % (name, cmd)) - env = dict([('HG_' + k.upper(), v) for k, v in args.iteritems()] + - [(k.upper(), v) for k, v in args.iteritems()]) + env = dict([('HG_' + k.upper(), v) for k, v in args.iteritems()]) r = util.system(cmd, environ=env, cwd=self.root) if r: desc, r = util.explain_exit(r)
--- a/mercurial/ui.py Sun May 14 18:37:50 2006 -0300 +++ b/mercurial/ui.py Mon May 15 09:27:27 2006 -0700 @@ -8,7 +8,7 @@ import ConfigParser from i18n import gettext as _ from demandload import * -demandload(globals(), "errno os re smtplib socket sys tempfile util") +demandload(globals(), "errno getpass os re smtplib socket sys tempfile util") class ui(object): def __init__(self, verbose=False, debug=False, quiet=False, @@ -224,15 +224,18 @@ def readline(self): return sys.stdin.readline()[:-1] - def prompt(self, msg, pat, default="y"): + def prompt(self, msg, pat=None, default="y"): if not self.interactive: return default while 1: self.write(msg, " ") r = self.readline() - if re.match(pat, r): + if not pat or re.match(pat, r): return r else: self.write(_("unrecognized response\n")) + def getpass(self, prompt=None, default=None): + if not self.interactive: return default + return getpass.getpass(prompt or _('password: ')) def status(self, *msg): if not self.quiet: self.write(*msg) def warn(self, *msg): @@ -268,8 +271,10 @@ def sendmail(self): s = smtplib.SMTP() - s.connect(host = self.config('smtp', 'host', 'mail'), - port = int(self.config('smtp', 'port', 25))) + mailhost = self.config('smtp', 'host') + if not mailhost: + raise util.Abort(_('no [smtp]host in hgrc - cannot send mail')) + s.connect(host=mailhost, port=int(self.config('smtp', 'port', 25))) if self.configbool('smtp', 'tls'): s.ehlo() s.starttls()
--- a/mercurial/util.py Sun May 14 18:37:50 2006 -0300 +++ b/mercurial/util.py Mon May 15 09:27:27 2006 -0700 @@ -536,12 +536,16 @@ def os_rcpath(): '''return default os-specific hgrc search path''' path = system_rcpath() - path.append(os.path.join(os.path.expanduser('~'), 'mercurial.ini')) + path.append(user_rcpath()) userprofile = os.environ.get('USERPROFILE') if userprofile: path.append(os.path.join(userprofile, 'mercurial.ini')) return path + def user_rcpath(): + '''return os-specific hgrc search path to the user dir''' + return os.path.join(os.path.expanduser('~'), 'mercurial.ini') + def parse_patch_output(output_line): """parses the output produced by patch and returns the file name""" pf = output_line[14:]
--- a/mercurial/util_win32.py Sun May 14 18:37:50 2006 -0300 +++ b/mercurial/util_win32.py Mon May 15 09:27:27 2006 -0700 @@ -16,7 +16,7 @@ from demandload import * from i18n import gettext as _ demandload(globals(), 'errno os pywintypes win32con win32file win32process') -demandload(globals(), 'cStringIO winerror') +demandload(globals(), 'cStringIO win32com.shell:shell,shellcon winerror') class WinError: winerror_map = { @@ -180,9 +180,24 @@ def system_rcpath_win32(): '''return default os-specific hgrc search path''' proc = win32api.GetCurrentProcess() - filename = win32process.GetModuleFileNameEx(proc, 0) + try: + # This will fail on windows < NT + filename = win32process.GetModuleFileNameEx(proc, 0) + except: + filename = win32api.GetModuleFileName(0) return [os.path.join(os.path.dirname(filename), 'mercurial.ini')] +def user_rcpath(): + '''return os-specific hgrc search path to the user dir''' + userdir = os.path.expanduser('~') + if userdir == '~': + # We are on win < nt: fetch the APPDATA directory location and use + # the parent directory as the user home dir. + appdir = shell.SHGetPathFromIDList( + qshell.SHGetSpecialFolderLocation(0, shellcon.CSIDL_APPDATA)) + userdir = os.path.dirname(appdir) + return os.path.join(userdir, 'mercurial.ini') + class posixfile_nt(object): '''file object with posix-like semantics. on windows, normal files can not be deleted or renamed if they are open. must open
--- a/tests/README Sun May 14 18:37:50 2006 -0300 +++ b/tests/README Mon May 15 09:27:27 2006 -0700 @@ -16,10 +16,10 @@ There are some tricky points here that you should be aware of when writing tests: -- hg commit and hg up -m want user interaction +- hg commit and hg merge want user interaction for commit use -m "text" - for hg up -m, set HGMERGE to something noninteractive (like true or merge) + for hg merge, set HGMERGE to something noninteractive (like true or merge) - changeset hashes will change based on user and date which make things like hg history output change
--- a/tests/test-conflict Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-conflict Mon May 15 09:27:27 2006 -0700 @@ -10,7 +10,7 @@ echo "something else" > a hg commit -m branch2 -d "1000000 0" HGMERGE=merge; export HGMERGE -hg up -m 1 +hg merge 1 hg id egrep -v ">>>|<<<" a hg status
--- a/tests/test-confused-revert Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-confused-revert Mon May 15 09:27:27 2006 -0700 @@ -28,7 +28,7 @@ echo foo-b > a hg commit -m "2b" -d "1000000 0" -HGMERGE=true hg update -m 1 +HGMERGE=true hg merge 1 echo "%%% should show foo-b" cat a
--- a/tests/test-excessive-merge Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-excessive-merge Mon May 15 09:27:27 2006 -0700 @@ -17,12 +17,12 @@ echo blah > b hg ci -m "branch b" -d "1000000 0" -HGMERGE=true hg up -m 1 +HGMERGE=true hg merge 1 hg ci -m "merge b/a -> blah" -d "1000000 0" hg co 1 -HGMERGE=true hg up -m 2 +HGMERGE=true hg merge 2 hg ci -m "merge a/b -> blah" -d "1000000 0" hg log @@ -43,4 +43,4 @@ hg debugindex .hg/data/a.i -hg verify \ No newline at end of file +hg verify
--- a/tests/test-filebranch Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-filebranch Mon May 15 09:27:27 2006 -0700 @@ -41,7 +41,7 @@ echo merging hg pull ../a -env HGMERGE=../merge hg update -vm +env HGMERGE=../merge hg merge -v echo 2m > foo echo 2b > baz
--- a/tests/test-flags Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-flags Mon May 15 09:27:27 2006 -0700 @@ -27,7 +27,7 @@ hg heads hg history -hg -v co -m +hg -v merge ls -l ../test[12]/a > foo cut -b 1-10 < foo
--- a/tests/test-hook Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-hook Mon May 15 09:27:27 2006 -0700 @@ -29,7 +29,7 @@ echo b > b hg add b hg commit -m b -d '1 0' -hg update -m 1 +hg merge 1 hg commit -m merge -d '2 0' cd ../b
--- a/tests/test-merge1 Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-merge1 Mon May 15 09:27:27 2006 -0700 @@ -22,7 +22,7 @@ hg commit -m "commit #2" -d "1000000 0" echo This is file b1 > b echo %% no merges expected -env HGMERGE=../merge hg update -m 1 +env HGMERGE=../merge hg merge 1 cd ..; /bin/rm -rf t mkdir t @@ -41,9 +41,9 @@ hg commit -m "commit #2" -d "1000000 0" echo This is file b2 > b echo %% merge should fail -env HGMERGE=../merge hg update -m 1 +env HGMERGE=../merge hg merge 1 echo %% merge of b expected -env HGMERGE=../merge hg update -f -m 1 +env HGMERGE=../merge hg merge -f 1 cd ..; /bin/rm -rf t echo %% @@ -68,9 +68,9 @@ echo This is file b22 > b echo %% merge fails -env HGMERGE=../merge hg update -m 2 +env HGMERGE=../merge hg merge 2 echo %% merge expected! -env HGMERGE=../merge hg update -f -m 2 +env HGMERGE=../merge hg merge -f 2 cd ..; /bin/rm -rf t mkdir t @@ -90,7 +90,7 @@ hg commit -m "commit #3" -d "1000000 0" echo This is file b33 > b echo %% merge of b should fail -env HGMERGE=../merge hg update -m 2 +env HGMERGE=../merge hg merge 2 echo %% merge of b expected -env HGMERGE=../merge hg update -f -m 2 +env HGMERGE=../merge hg merge -f 2 cd ..; /bin/rm -rf t
--- a/tests/test-merge4 Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-merge4 Mon May 15 09:27:27 2006 -0700 @@ -11,7 +11,7 @@ echo This is file c1 > c hg add c hg commit -m "commit #2" -d "1000000 0" -hg update -m 1 +hg merge 1 rm b echo This is file c22 > c hg commit -m "commit #3" -d "1000000 0"
--- a/tests/test-merge6 Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-merge6 Mon May 15 09:27:27 2006 -0700 @@ -33,14 +33,14 @@ cd A1 hg pull ../B1 -hg update -m +hg merge hg commit -m "commit test" -d "1000000 0" echo bar should remain deleted. hg manifest cd ../B2 hg pull ../A2 -hg update -m +hg merge hg commit -m "commit test" -d "1000000 0" echo bar should remain deleted. hg manifest
--- a/tests/test-merge7 Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-merge7 Mon May 15 09:27:27 2006 -0700 @@ -35,7 +35,7 @@ # now pull and merge from test-a hg pull ../test-a -HGMERGE=merge hg update -m +HGMERGE=merge hg merge # resolve conflict cat >test.txt <<"EOF" one @@ -57,7 +57,7 @@ # pull and merge from test-a again cd ../test-b hg pull ../test-a -HGMERGE=merge hg update --debug -m +HGMERGE=merge hg merge --debug cat test.txt | sed "s% .*%%"
--- a/tests/test-merge7.out Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-merge7.out Mon May 15 09:27:27 2006 -0700 @@ -22,7 +22,7 @@ (run 'hg heads' to see heads, 'hg merge' to merge) merge: warning: conflicts during merge resolving manifests - force None allow 1 moddirstate True linear False + force False allow True moddirstate True linear False ancestor 055d847dd401 local 2eded9ab0a5c remote 84cf5750dd20 test.txt versions differ, resolve merging test.txt
--- a/tests/test-push-warn Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-push-warn Mon May 15 09:27:27 2006 -0700 @@ -23,7 +23,7 @@ hg push ../a hg pull ../a hg push ../a -hg up -m +hg merge hg commit -m "4" -d "1000000 0" hg push ../a cd .. @@ -44,7 +44,7 @@ hg ci -m d-$i -d "1000000 0" done -HGMERGE=true hg co -m 3 +HGMERGE=true hg merge 3 hg ci -m c-d -d "1000000 0" hg push ../c
--- a/tests/test-ro-message Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-ro-message Mon May 15 09:27:27 2006 -0700 @@ -14,4 +14,4 @@ "$HG" commit -m 'Clarifying the vehicle.' "$HG" update -C 1 chmod a-w b/vehicle -"$HG" update -m 2 2>&1 | sed 's|^\(.*[ ]\).*/\([^/]*/[^/]*/[^/]*\)$|\1\2|g' +"$HG" merge 2 2>&1 | sed 's|^\(.*[ ]\).*/\([^/]*/[^/]*/[^/]*\)$|\1\2|g'
--- a/tests/test-tags Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-tags Mon May 15 09:27:27 2006 -0700 @@ -27,7 +27,7 @@ hg add b hg commit -m "branch" -d "1000000 0" hg id -hg co -m 1 +hg merge 1 hg id hg status
--- a/tests/test-up-local-change Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-up-local-change Mon May 15 09:27:27 2006 -0700 @@ -29,7 +29,7 @@ hg parents hg --debug up 0 hg parents -hg --debug up -m || echo failed +hg --debug merge || echo failed hg parents hg --debug up hg parents @@ -50,8 +50,8 @@ hg status hg parents hg --debug up || echo failed -hg --debug up -m || echo failed -hg --debug up -f -m +hg --debug merge || echo failed +hg --debug merge -f hg parents hg diff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \ -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
--- a/tests/test-up-local-change.out Sun May 14 18:37:50 2006 -0300 +++ b/tests/test-up-local-change.out Mon May 15 09:27:27 2006 -0700 @@ -112,7 +112,7 @@ abort: outstanding uncommitted changes failed resolving manifests - force None allow 1 moddirstate True linear False + force False allow True moddirstate True linear False ancestor a0c8bcbbb45c local 1165e8bd193e remote 4096f2872392 a versions differ, resolve b versions differ, resolve