# HG changeset patch # User Gregory Szorc # Date 2014-08-18 19:12:57 # Node ID c39d404f0eb0f5946210dc7db67519a09e162105 # Parent 883e8b6bd461959045ddd03aee4149fe261096c9 hgweb: refresh repository using URL not path (issue4323) hgweb detects out-of-date repository instances (using a highly suspect mechanism that should probably be fixed) and obtains a new repository object if needed. This patch changes the repository object copy to use the repo URL (instead of path). This preserves more information about the source repository and allows bundles to be served through hgweb. A test verifying that bundles can now be served properly via `hg serve` has been added. diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py +++ b/mercurial/hgweb/hgweb_mod.py @@ -110,7 +110,7 @@ class hgweb(object): # compare changelog size in addition to mtime to catch # rollbacks made less than a second ago if st.st_mtime != self.mtime or st.st_size != self.size: - r = hg.repository(self.repo.baseui, self.repo.root) + r = hg.repository(self.repo.baseui, self.repo.url()) self.repo = self._getview(r) self.maxchanges = int(self.config("web", "maxchanges", 10)) self.stripecount = int(self.config("web", "stripes", 1)) diff --git a/tests/test-hgweb-bundle.t b/tests/test-hgweb-bundle.t new file mode 100644 --- /dev/null +++ b/tests/test-hgweb-bundle.t @@ -0,0 +1,37 @@ +#require serve + + $ hg init server + $ cd server + $ cat >> .hg/hgrc << EOF + > [extensions] + > strip= + > EOF + + $ echo 1 > foo + $ hg commit -A -m 'first' + adding foo + $ echo 2 > bar + $ hg commit -A -m 'second' + adding bar + +Produce a bundle to use + + $ hg strip -r 1 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + saved backup bundle to $TESTTMP/server/.hg/strip-backup/ed602e697e0f-backup.hg (glob) + +Serve from a bundle file + + $ hg serve -R .hg/strip-backup/ed602e697e0f-backup.hg -d -p $HGPORT --pid-file=hg.pid + $ cat hg.pid >> $DAEMON_PIDS + +Ensure we're serving from the bundle + + $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=raw') + 200 Script output follows + + + -rw-r--r-- 2 bar + -rw-r--r-- 2 foo + +