Show More
@@ -22,6 +22,12 b' On Unix, these files are read:' | |||
|
22 | 22 | - ``<install-root>/etc/mercurial/hgrc`` |
|
23 | 23 | - ``<install-root>/etc/mercurial/hgrc.d/*.rc`` |
|
24 | 24 | |
|
25 | These files do not exist by default and you will have to create the | |
|
26 | appropriate configuration files yourself: global configuration like | |
|
27 | the username setting is typically put into | |
|
28 | ``%USERPROFILE%\mercurial.ini`` or ``$HOME/.hgrc`` and local | |
|
29 | configuration is put into the per-repository ``<repo>/.hg/hgrc`` file. | |
|
30 | ||
|
25 | 31 | If there is a per-repository configuration file which is not owned by |
|
26 | 32 | the active user, Mercurial will warn you that the file is skipped:: |
|
27 | 33 |
@@ -105,12 +105,16 b' def _statusmessage(code):' | |||
|
105 | 105 | def statusmessage(code, message=None): |
|
106 | 106 | return '%d %s' % (code, message or _statusmessage(code)) |
|
107 | 107 | |
|
108 |
def get_ |
|
|
108 | def get_stat(spath): | |
|
109 | """stat changelog if it exists, spath otherwise""" | |
|
109 | 110 | cl_path = os.path.join(spath, "00changelog.i") |
|
110 | 111 | if os.path.exists(cl_path): |
|
111 |
return os.stat(cl_path) |
|
|
112 | return os.stat(cl_path) | |
|
112 | 113 | else: |
|
113 |
return os.stat(spath) |
|
|
114 | return os.stat(spath) | |
|
115 | ||
|
116 | def get_mtime(spath): | |
|
117 | return get_stat(spath).st_mtime | |
|
114 | 118 | |
|
115 | 119 | def staticfile(directory, fname, req): |
|
116 | 120 | """return a file inside directory with guessed Content-Type header |
@@ -8,7 +8,7 b'' | |||
|
8 | 8 | |
|
9 | 9 | import os |
|
10 | 10 | from mercurial import ui, hg, hook, error, encoding, templater |
|
11 |
from common import get_ |
|
|
11 | from common import get_stat, ErrorResponse, permhooks, caching | |
|
12 | 12 | from common import HTTP_OK, HTTP_NOT_MODIFIED, HTTP_BAD_REQUEST |
|
13 | 13 | from common import HTTP_NOT_FOUND, HTTP_SERVER_ERROR |
|
14 | 14 | from request import wsgirequest |
@@ -39,6 +39,7 b' class hgweb(object):' | |||
|
39 | 39 | self.repo.ui.setconfig('ui', 'interactive', 'off') |
|
40 | 40 | hook.redirect(True) |
|
41 | 41 | self.mtime = -1 |
|
42 | self.size = -1 | |
|
42 | 43 | self.reponame = name |
|
43 | 44 | self.archives = 'zip', 'gz', 'bz2' |
|
44 | 45 | self.stripecount = 1 |
@@ -63,9 +64,12 b' class hgweb(object):' | |||
|
63 | 64 | def refresh(self, request=None): |
|
64 | 65 | if request: |
|
65 | 66 | self.repo.ui.environ = request.env |
|
66 |
|
|
|
67 | if mtime != self.mtime: | |
|
68 | self.mtime = mtime | |
|
67 | st = get_stat(self.repo.spath) | |
|
68 | # compare changelog size in addition to mtime to catch | |
|
69 | # rollbacks made less than a second ago | |
|
70 | if st.st_mtime != self.mtime or st.st_size != self.size: | |
|
71 | self.mtime = st.st_mtime | |
|
72 | self.size = st.st_size | |
|
69 | 73 | self.repo = hg.repository(self.repo.ui, self.repo.root) |
|
70 | 74 | self.maxchanges = int(self.config("web", "maxchanges", 10)) |
|
71 | 75 | self.stripecount = int(self.config("web", "stripes", 1)) |
@@ -743,8 +743,8 b' class localrepository(repo.repository):' | |||
|
743 | 743 | branch = self.opener("undo.branch").read() |
|
744 | 744 | self.dirstate.setbranch(branch) |
|
745 | 745 | except IOError: |
|
746 |
self.ui.warn(_(" |
|
|
747 |
"current branch still |
|
|
746 | self.ui.warn(_("named branch could not be reset, " | |
|
747 | "current branch is still: %s\n") | |
|
748 | 748 | % self.dirstate.branch()) |
|
749 | 749 | self.invalidate() |
|
750 | 750 | self.dirstate.invalidate() |
@@ -56,7 +56,7 b' Test rollback of hg before issue 902 was' | |||
|
56 | 56 | $ rm .hg/undo.branch |
|
57 | 57 | $ hg rollback |
|
58 | 58 | repository tip rolled back to revision -1 (undo commit) |
|
59 |
|
|
|
59 | named branch could not be reset, current branch is still: test | |
|
60 | 60 | working directory now based on revision -1 |
|
61 | 61 | $ hg branch |
|
62 | 62 | test |
@@ -91,3 +91,29 b' same thing, but run $EDITOR' | |||
|
91 | 91 | $ cat .hg/last-message.txt |
|
92 | 92 | another precious commit message |
|
93 | 93 | |
|
94 | test rollback on served repository | |
|
95 | ||
|
96 | $ hg commit -m "precious commit message" | |
|
97 | $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log | |
|
98 | $ cat hg.pid >> $DAEMON_PIDS | |
|
99 | $ cd .. | |
|
100 | $ hg clone http://localhost:$HGPORT u | |
|
101 | requesting all changes | |
|
102 | adding changesets | |
|
103 | adding manifests | |
|
104 | adding file changes | |
|
105 | added 1 changesets with 1 changes to 1 files | |
|
106 | updating to branch test | |
|
107 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
|
108 | $ cd u | |
|
109 | $ hg id default | |
|
110 | 1df294f7b1a2 | |
|
111 | ||
|
112 | now rollback and observe that 'hg serve' reloads the repository and | |
|
113 | presents the correct tip changeset: | |
|
114 | ||
|
115 | $ hg -R ../t rollback | |
|
116 | repository tip rolled back to revision -1 (undo commit) | |
|
117 | working directory now based on revision -1 | |
|
118 | $ hg id default | |
|
119 | 000000000000 |
General Comments 0
You need to be logged in to leave comments.
Login now