--- a/hgext/mq.py Sun Oct 19 01:29:57 2008 +0200
+++ b/hgext/mq.py Sat Oct 18 16:53:44 2008 -0700
@@ -34,7 +34,7 @@
from mercurial.repo import RepoError
from mercurial import commands, cmdutil, hg, patch, revlog, util
from mercurial import repair
-import os, sys, re, errno
+import os, sys, re, errno, urllib
commands.norepo += " qclone"
@@ -641,6 +641,9 @@
% name)
def new(self, repo, patch, *pats, **opts):
+ """options:
+ msg: a string or a no-argument function returning a string
+ """
msg = opts.get('msg')
force = opts.get('force')
user = opts.get('user')
@@ -661,6 +664,8 @@
wlock = repo.wlock()
try:
insert = self.full_series_end()
+ if callable(msg):
+ msg = msg()
commitmsg = msg and msg or ("[mq]: %s" % patch)
n = repo.commit(commitfiles, commitmsg, user, date, match=match, force=True)
if n == None:
@@ -1494,7 +1499,10 @@
raise util.Abort(_('need --name to import a patch from -'))
text = sys.stdin.read()
else:
- text = file(filename, 'rb').read()
+ if os.path.exists(filename):
+ text = file(filename, 'rb').read()
+ else:
+ text = urllib.urlopen(filename).read()
except IOError:
raise util.Abort(_("unable to read %s") % filename)
if not patchname:
@@ -1735,11 +1743,14 @@
-e, -m or -l set the patch header as well as the commit message.
If none is specified, the patch header is empty and the
commit message is '[mq]: PATCH'"""
+ msg = cmdutil.logmessage(opts)
+ def getmsg(): return ui.edit(msg, ui.username())
q = repo.mq
- message = cmdutil.logmessage(opts)
- if opts['edit']:
- message = ui.edit(message, ui.username())
- opts['msg'] = message
+ opts['msg'] = msg
+ if opts.get('edit'):
+ opts['msg'] = getmsg
+ else:
+ opts['msg'] = msg
setupheaderopts(ui, opts)
q.new(repo, patch, *args, **opts)
q.save_dirty()
--- a/tests/test-mq-qimport Sun Oct 19 01:29:57 2008 +0200
+++ b/tests/test-mq-qimport Sat Oct 18 16:53:44 2008 -0700
@@ -27,6 +27,15 @@
echo % qimport non-existing-file
hg qimport non-existing-file
+echo % import URL
+echo foo >> foo
+hg add foo
+hg diff > $HGTMP/url.diff
+hg revert --no-backup foo
+rm foo
+hg qimport file://$HGTMP/url.diff
+hg qun
+
echo % build diff with CRLF
python ../writelines.py b 5 'a\n' 5 'a\r\n'
hg ci -Am addb
--- a/tests/test-mq-qimport.out Sun Oct 19 01:29:57 2008 +0200
+++ b/tests/test-mq-qimport.out Sat Oct 18 16:53:44 2008 -0700
@@ -1,5 +1,8 @@
% qimport non-existing-file
abort: unable to read non-existing-file
+% import URL
+adding url.diff to series file
+url.diff
% build diff with CRLF
adding b
1 files updated, 0 files merged, 0 files removed, 0 files unresolved