##// END OF EJS Templates
localrepo: use the path relative to "self.vfs" instead of "path" argument...
localrepo: use the path relative to "self.vfs" instead of "path" argument As a part of migration to vfs, this patch uses "self.root", which can be recognized as the path relative to "self.vfs", instead of "path" argument. This fix allows to make invocations of "util.makedirs()" and "os.path.exists()" while ensuring repository directory in "localrepository.__init__()" ones indirectly via vfs. But this fix also raises issue 2528: "hg clone" with empty destination. "path" argument is empty in many cases, so this issue can't be fixed in the view of "localrepository.__init__()". Before this patch, it is fixed by empty-ness check ("not name") of exception handler in "util.makedirs()". try: os.mkdir(name) except OSError, err: if err.errno == errno.EEXIST: return if err.errno != errno.ENOENT or not name: raise This requires "localrepository.__init__()" to invoke "util.makedirs()" with "path" instead of "self.root", because empty "path" is treated as "current directory" and "self.root" becomes valid path. But "hg clone" with empty destination can be detected also in "hg.clone()" before "localrepository.__init__()" invocation, so this patch re-fixes issue2528 by checking it in "hg.clone()".

File last commit:

r16950:0fdd8193 stable
r17159:36a30168 default
Show More
test-notify.t
475 lines | 13.3 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: unify test-notify
r12473
$ cat <<EOF >> $HGRCPATH
> [extensions]
> notify=
>
> [hooks]
> incoming.notify = python:hgext.notify.hook
>
> [notify]
> sources = pull
> diffstat = False
>
> [usersubs]
> foo@bar = *
>
> [reposubs]
> * = baz
> EOF
$ hg help notify
Patrick Mezard
notify: rewrite user documentation...
r14940 notify extension - hooks for sending email push notifications
Matt Mackall
tests: unify test-notify
r12473
David Champion
notify: various fixes to docstring...
r16950 This extension implements hooks to send email notifications when changesets
are sent from or received by the local repository.
Matt Mackall
tests: unify test-notify
r12473
Patrick Mezard
notify: rewrite user documentation...
r14940 First, enable the extension as explained in "hg help extensions", and register
David Champion
notify: various fixes to docstring...
r16950 the hook you want to run. "incoming" and "changegroup" hooks are run when
changesets are received, while "outgoing" hooks are for changesets sent to
another repository:
Matt Mackall
tests: unify test-notify
r12473
[hooks]
# one email for each incoming changeset
incoming.notify = python:hgext.notify.hook
Patrick Mezard
notify: rewrite user documentation...
r14940 # one email for all incoming changesets
Matt Mackall
tests: unify test-notify
r12473 changegroup.notify = python:hgext.notify.hook
Patrick Mezard
notify: rewrite user documentation...
r14940
# one email for all outgoing changesets
Ingo Bressler
notify: send changesets on 'outgoing' hook, updated doc
r14617 outgoing.notify = python:hgext.notify.hook
Matt Mackall
tests: unify test-notify
r12473
David Champion
notify: various fixes to docstring...
r16950 This registers the hooks. To enable notification, subscribers must be assigned
to repositories. The "[usersubs]" section maps multiple repositories to a
given recipient. The "[reposubs]" section maps multiple recipients to a single
repository:
Matt Mackall
tests: unify test-notify
r12473
[usersubs]
David Champion
notify: various fixes to docstring...
r16950 # key is subscriber email, value is a comma-separated list of repo glob
Patrick Mezard
notify: rewrite user documentation...
r14940 # patterns
Matt Mackall
tests: unify test-notify
r12473 user@host = pattern
[reposubs]
Patrick Mezard
notify: rewrite user documentation...
r14940 # key is glob pattern, value is a comma-separated list of subscriber
# emails
Matt Mackall
tests: unify test-notify
r12473 pattern = user@host
David Champion
notify: various fixes to docstring...
r16950 Glob patterns are matched against absolute path to repository root.
In order to place them under direct user management, "[usersubs]" and
"[reposubs]" sections may be placed in a separate "hgrc" file and incorporated
by reference:
Patrick Mezard
notify: rewrite user documentation...
r14940
[notify]
config = /path/to/subscriptionsfile
David Champion
notify: various fixes to docstring...
r16950 Notifications will not be sent until the "notify.test" value is set to
"False"; see below.
Patrick Mezard
notify: rewrite user documentation...
r14940
Notifications content can be tweaked with the following configuration entries:
notify.test
If "True", print messages to stdout instead of sending them. Default: True.
notify.sources
David Champion
notify: various fixes to docstring...
r16950 Space-separated list of change sources. Notifications are activated only
when a changeset's source is in this list. Sources may be:
"serve" changesets received via http or ssh
"pull" changesets received via "hg pull"
"unbundle" changesets received via "hg unbundle"
"push" changesets sent or received via "hg push"
"bundle" changesets sent via "hg unbundle"
Default: serve.
Patrick Mezard
notify: rewrite user documentation...
r14940
notify.strip
Number of leading slashes to strip from url paths. By default, notifications
David Champion
notify: various fixes to docstring...
r16950 reference repositories with their absolute path. "notify.strip" lets you
Patrick Mezard
notify: rewrite user documentation...
r14940 turn them into relative paths. For example, "notify.strip=3" will change
"/long/path/repository" into "repository". Default: 0.
notify.domain
David Champion
notify: various fixes to docstring...
r16950 Default email domain for sender or recipients with no explicit domain.
Matt Mackall
tests: unify test-notify
r12473
Patrick Mezard
notify: rewrite user documentation...
r14940 notify.style
Style file to use when formatting emails.
notify.template
Template to use when formatting emails.
notify.incoming
David Champion
notify: various fixes to docstring...
r16950 Template to use when run as an incoming hook, overriding "notify.template".
Patrick Mezard
notify: rewrite user documentation...
r14940
notify.outgoing
David Champion
notify: various fixes to docstring...
r16950 Template to use when run as an outgoing hook, overriding "notify.template".
Patrick Mezard
notify: rewrite user documentation...
r14940
notify.changegroup
David Champion
notify: various fixes to docstring...
r16950 Template to use when running as a changegroup hook, overriding
Patrick Mezard
notify: rewrite user documentation...
r14940 "notify.template".
notify.maxdiff
Maximum number of diff lines to include in notification email. Set to 0 to
David Champion
notify: various fixes to docstring...
r16950 disable the diff, or -1 to include all of it. Default: 300.
Patrick Mezard
notify: rewrite user documentation...
r14940
notify.maxsubject
David Champion
notify: various fixes to docstring...
r16950 Maximum number of characters in email's subject line. Default: 67.
Patrick Mezard
notify: rewrite user documentation...
r14940
notify.diffstat
Set to True to include a diffstat before diff content. Default: True.
notify.merge
If True, send notifications for merge changesets. Default: True.
Mads Kiilerich
notify: add option for writing to mbox...
r15561 notify.mbox
If set, append mails to this mbox file instead of sending. Default: None.
Nikolaus Schueler
notify: change behavior of "changegroup" hook...
r15654 notify.fromauthor
David Champion
notify: various fixes to docstring...
r16950 If set, use the committer of the first changeset in a changegroup for the
"From" field of the notification mail. If not set, take the user from the
pushing repo. Default: False.
Nikolaus Schueler
notify: change behavior of "changegroup" hook...
r15654
Patrick Mezard
notify: rewrite user documentation...
r14940 If set, the following entries will also be used to customize the
notifications:
email.from
David Champion
notify: various fixes to docstring...
r16950 Email "From" address to use if none can be found in the generated email
content.
Patrick Mezard
notify: rewrite user documentation...
r14940
web.baseurl
David Champion
notify: various fixes to docstring...
r16950 Root repository URL to combine with repository paths when making references.
See also "notify.strip".
Matt Mackall
tests: unify test-notify
r12473
no commands defined
$ hg init a
$ echo a > a/a
commit
$ hg --cwd a commit -Ama -d '0 0'
adding a
clone
$ hg --traceback clone a b
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo a >> a/a
commit
$ hg --traceback --cwd a commit -Amb -d '1 0'
on Mac OS X 10.5 the tmp path is very long so would get stripped in the subject line
$ cat <<EOF >> $HGRCPATH
> [notify]
> maxsubject = 200
> EOF
the python call below wraps continuation lines, which appear on Mac OS X 10.5 because
of the very long subject line
pull (minimal config)
$ hg --traceback --cwd b pull ../a | \
Mads Kiilerich
test-notify: fix fix for line continuation in long mail header lines...
r12646 > python -c 'import sys,re; print re.sub("\n[\t ]", " ", sys.stdin.read()),'
Matt Mackall
tests: unify test-notify
r12473 pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Date: * (glob)
Mads Kiilerich
tests: remove redundant globs...
r12640 Subject: changeset in $TESTTMP/b: b
Matt Mackall
tests: unify test-notify
r12473 From: test
X-Hg-Notification: changeset 0647d048b600
Message-Id: <*> (glob)
To: baz, foo@bar
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 changeset 0647d048b600 in $TESTTMP/b (glob)
Mads Kiilerich
tests: remove redundant globs...
r12640 details: $TESTTMP/b?cmd=changeset;node=0647d048b600
Matt Mackall
tests: unify test-notify
r12473 description: b
diffs (6 lines):
diff -r cb9a9f314b8b -r 0647d048b600 a
--- a/a Thu Jan 01 00:00:00 1970 +0000
+++ b/a Thu Jan 01 00:00:01 1970 +0000
Mads Kiilerich
test-notify: fix fix for line continuation in long mail header lines...
r12646 @@ -1,1 +1,2 @@ a
Matt Mackall
tests: unify test-notify
r12473 +a
(run 'hg update' to get a working copy)
$ cat <<EOF >> $HGRCPATH
> [notify]
Mads Kiilerich
tests: remove the last traces of $HGTMP...
r12642 > config = `pwd`/.notify.conf
Matt Mackall
tests: unify test-notify
r12473 > domain = test.com
Mads Kiilerich
test-notify: stabilize output...
r12644 > strip = 42
Matt Mackall
tests: unify test-notify
r12473 > template = Subject: {desc|firstline|strip}\nFrom: {author}\nX-Test: foo\n\nchangeset {node|short} in {webroot}\ndescription:\n\t{desc|tabindent|strip}
>
> [web]
> baseurl = http://test/
> EOF
fail for config file is missing
$ hg --cwd b rollback
Gilles Moris
rollback: clarifies the message about the reverted state (issue2628)...
r13446 repository tip rolled back to revision 0 (undo pull)
Matt Mackall
tests: unify test-notify
r12473 $ hg --cwd b pull ../a 2>&1 | grep 'error.*\.notify\.conf' > /dev/null && echo pull failed
pull failed
Mads Kiilerich
tests: remove the last traces of $HGTMP...
r12642 $ touch ".notify.conf"
Matt Mackall
tests: unify test-notify
r12473
pull
$ hg --cwd b rollback
Gilles Moris
rollback: clarifies the message about the reverted state (issue2628)...
r13446 repository tip rolled back to revision 0 (undo pull)
Matt Mackall
tests: unify test-notify
r12473 $ hg --traceback --cwd b pull ../a | \
> python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),'
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Test: foo
Date: * (glob)
Subject: b
From: test@test.com
X-Hg-Notification: changeset 0647d048b600
Message-Id: <*> (glob)
To: baz@test.com, foo@bar
Mads Kiilerich
test-notify: stabilize output...
r12644 changeset 0647d048b600 in b
Matt Mackall
tests: unify test-notify
r12473 description: b
diffs (6 lines):
diff -r cb9a9f314b8b -r 0647d048b600 a
--- a/a Thu Jan 01 00:00:00 1970 +0000
+++ b/a Thu Jan 01 00:00:01 1970 +0000
@@ -1,1 +1,2 @@
a
+a
(run 'hg update' to get a working copy)
$ cat << EOF >> $HGRCPATH
> [hooks]
> incoming.notify = python:hgext.notify.hook
>
> [notify]
> sources = pull
> diffstat = True
> EOF
pull
$ hg --cwd b rollback
Gilles Moris
rollback: clarifies the message about the reverted state (issue2628)...
r13446 repository tip rolled back to revision 0 (undo pull)
Matt Mackall
tests: unify test-notify
r12473 $ hg --traceback --cwd b pull ../a | \
> python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),'
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Test: foo
Date: * (glob)
Subject: b
From: test@test.com
X-Hg-Notification: changeset 0647d048b600
Message-Id: <*> (glob)
To: baz@test.com, foo@bar
Mads Kiilerich
test-notify: stabilize output...
r12644 changeset 0647d048b600 in b
Matt Mackall
tests: unify test-notify
r12473 description: b
diffstat:
a | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diffs (6 lines):
diff -r cb9a9f314b8b -r 0647d048b600 a
--- a/a Thu Jan 01 00:00:00 1970 +0000
+++ b/a Thu Jan 01 00:00:01 1970 +0000
@@ -1,1 +1,2 @@
a
+a
(run 'hg update' to get a working copy)
test merge
$ cd a
$ hg up -C 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo a >> a
$ hg ci -Am adda2 -d '2 0'
created new head
$ hg merge
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m merge -d '3 0'
$ cd ..
$ hg --traceback --cwd b pull ../a | \
> python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),'
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 0 changes to 0 files
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Test: foo
Date: * (glob)
Subject: adda2
From: test@test.com
X-Hg-Notification: changeset 0a184ce6067f
Message-Id: <*> (glob)
To: baz@test.com, foo@bar
Mads Kiilerich
test-notify: stabilize output...
r12644 changeset 0a184ce6067f in b
Matt Mackall
tests: unify test-notify
r12473 description: adda2
diffstat:
a | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diffs (6 lines):
diff -r cb9a9f314b8b -r 0a184ce6067f a
--- a/a Thu Jan 01 00:00:00 1970 +0000
+++ b/a Thu Jan 01 00:00:02 1970 +0000
@@ -1,1 +1,2 @@
a
+a
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Test: foo
Date: * (glob)
Subject: merge
From: test@test.com
Peter Arrenbrecht
localrepo: reuse parent manifest in commitctx if no files have changed...
r14162 X-Hg-Notification: changeset 6a0cf76b2701
Matt Mackall
tests: unify test-notify
r12473 Message-Id: <*> (glob)
To: baz@test.com, foo@bar
Peter Arrenbrecht
localrepo: reuse parent manifest in commitctx if no files have changed...
r14162 changeset 6a0cf76b2701 in b
Matt Mackall
tests: unify test-notify
r12473 description: merge
(run 'hg update' to get a working copy)
Yuya Nishihara
util: fix ellipsis() not to break multi-byte sequence (issue2564)...
r13225
Mads Kiilerich
notify: add option for writing to mbox...
r15561 non-ascii content and truncation of multi-byte subject
Yuya Nishihara
util: fix ellipsis() not to break multi-byte sequence (issue2564)...
r13225
$ cat <<EOF >> $HGRCPATH
> [notify]
> maxsubject = 4
> EOF
$ echo a >> a/a
$ hg --cwd a --encoding utf-8 commit -A -d '0 0' \
> -m `python -c 'print "\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4"'`
$ hg --traceback --cwd b --encoding utf-8 pull ../a | \
> python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),'
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Test: foo
Date: * (glob)
Subject: \xc3\xa0... (esc)
From: test@test.com
Peter Arrenbrecht
localrepo: reuse parent manifest in commitctx if no files have changed...
r14162 X-Hg-Notification: changeset 7ea05ad269dc
Yuya Nishihara
util: fix ellipsis() not to break multi-byte sequence (issue2564)...
r13225 Message-Id: <*> (glob)
To: baz@test.com, foo@bar
Peter Arrenbrecht
localrepo: reuse parent manifest in commitctx if no files have changed...
r14162 changeset 7ea05ad269dc in b
Yuya Nishihara
util: fix ellipsis() not to break multi-byte sequence (issue2564)...
r13225 description: \xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4 (esc)
diffstat:
a | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diffs (7 lines):
Peter Arrenbrecht
localrepo: reuse parent manifest in commitctx if no files have changed...
r14162 diff -r 6a0cf76b2701 -r 7ea05ad269dc a
Yuya Nishihara
util: fix ellipsis() not to break multi-byte sequence (issue2564)...
r13225 --- a/a Thu Jan 01 00:00:03 1970 +0000
+++ b/a Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +1,3 @@
a
a
+a
(run 'hg update' to get a working copy)
Mads Kiilerich
notify: add option for writing to mbox...
r15561
long lines
$ cat <<EOF >> $HGRCPATH
> [notify]
> maxsubject = 67
> test = False
> mbox = mbox
> EOF
Mads Kiilerich
tests: ensure platform independent revision hashes in test-notify.t...
r15767 $ python -c 'file("a/a", "ab").write("no" * 500 + "\n")'
Mads Kiilerich
notify: add option for writing to mbox...
r15561 $ hg --cwd a commit -A -m "long line"
$ hg --traceback --cwd b pull ../a
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
notify: sending 2 subscribers 1 changes
(run 'hg update' to get a working copy)
$ python -c 'import sys,re; print re.sub("\n\t", " ", file("b/mbox").read()),'
From test@test.com ... ... .. ..:..:.. .... (re)
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Mads Kiilerich
mail: use quoted-printable for mime encoding to avoid too long lines (issue3075)...
r15562 Content-Transfer-Encoding: quoted-printable
Mads Kiilerich
notify: add option for writing to mbox...
r15561 X-Test: foo
Date: * (glob)
Subject: long line
From: test@test.com
X-Hg-Notification: changeset e0be44cf638b
Message-Id: <hg.e0be44cf638b.*.*@*> (glob)
To: baz@test.com, foo@bar
changeset e0be44cf638b in b
description: long line
diffstat:
a | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diffs (8 lines):
diff -r 7ea05ad269dc -r e0be44cf638b a
--- a/a Thu Jan 01 00:00:00 1970 +0000
+++ b/a Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +1,4 @@
a
a
a
Mads Kiilerich
mail: use quoted-printable for mime encoding to avoid too long lines (issue3075)...
r15562 +nonononononononononononononononononononononononononononononononononononono=
nononononononononononononononononononononononononononononononononononononon=
ononononononononononononononononononononononononononononononononononononono=
nononononononononononononononononononononononononononononononononononononon=
ononononononononononononononononononononononononononononononononononononono=
nononononononononononononononononononononononononononononononononononononon=
ononononononononononononononononononononononononononononononononononononono=
nononononononononononononononononononononononononononononononononononononon=
ononononononononononononononononononononononononononononononononononononono=
nononononononononononononononononononononononononononononononononononononon=
ononononononononononononononononononononononononononononononononononononono=
nononononononononononononononononononononononononononononononononononononon=
ononononononononononononononononononononononononononononononononononononono=
nonononononononononononono
Mads Kiilerich
notify: add option for writing to mbox...
r15561