Submitter | Gregory Szorc |
---|---|
Date | Aug. 18, 2014, 7:18 p.m. |
Message ID | <36a6050a8083d5e7a2c1.1408389529@vm-ubuntu-main.gateway.sonic.net> |
Download | mbox | patch |
Permalink | /patch/5458/ |
State | Accepted |
Headers | show |
Comments
On Mon, Aug 18, 2014 at 12:18:49PM -0700, Gregory Szorc wrote: > # HG changeset patch > # User Gregory Szorc <gregory.szorc@gmail.com> > # Date 1408389177 25200 > # Mon Aug 18 12:12:57 2014 -0700 > # Node ID 36a6050a8083d5e7a2c1c78b1d9ec4dbef7ddeba > # Parent 8dda6f6ff564d8fe6ac7b8ce4c74eb9bfb5de14a > hgweb: refresh repository using URL not path (issue4323) Queued, thanks. > > 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 > @@ -109,9 +109,9 @@ class hgweb(object): > st = get_stat(self.repo.spath) > # 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)) > self.maxshortchanges = int(self.config("web", "maxshortchanges", > 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 > + > + > _______________________________________________ > Mercurial-devel mailing list > Mercurial-devel@selenic.com > http://selenic.com/mailman/listinfo/mercurial-devel
Patch
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 @@ -109,9 +109,9 @@ class hgweb(object): st = get_stat(self.repo.spath) # 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)) self.maxshortchanges = int(self.config("web", "maxshortchanges", 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 + +