##// END OF EJS Templates
wireprotov2: define and implement "manifestdata" command...
wireprotov2: define and implement "manifestdata" command The added command can be used for obtaining manifest data. Given a manifest path and set of manifest nodes, data about manifests can be retrieved. Unlike changeset data, we wish to emit deltas to describe manifest revisions. So the command uses the relatively new API for building delta requests and emitting them. The code calls into deltaparent(), which I'm not very keen of. There's still work to be done in delta generation land so implementation details of storage (e.g. exactly one delta is stored/available) don't creep into higher levels. But we can worry about this later (there is already a TODO on imanifestorage tracking this). On the subject of parent deltas, the server assumes parent revisions exist on the receiving end. This is obviously wrong for shallow clone. I've added TODOs to add a mechanism to the command to allow clients to specify desired behavior. This shouldn't be too difficult to implement. Another big change is that the client must explicitly request manifest nodes to retrieve. This is a major departure from "getbundle," where the server derives relevant manifests as it iterates changesets and sends them automatically. As implemented, the client must transmit each requested node to the server. At 20 bytes per node, we're looking at 2 MB per 100,000 nodes. Plus wire encoding overhead. This isn't ideal for clients with limited upload bandwidth. I plan to address this in the future by allowing alternate mechanisms for defining the revisions to retrieve. One idea is to define a range of changeset revisions whose manifest revisions to retrieve (similar to how "changesetdata" works). We almost certainly want an API to look up an individual manifest by node. And that's where I've chosen to start with the implementation. Again, a theme of this early exchangev2 work is I want to start by building primitives for accessing raw repository data first and see how far we can get with those before we need more complexity. Differential Revision: https://phab.mercurial-scm.org/D4488

File last commit:

r33595:283a7da6 stable
r39673:c7a7c7e8 default
Show More
test-mac-packages.t
71 lines | 3.1 KiB | text/troff | Tads3Lexer
/ tests / test-mac-packages.t
Kevin Bullock
osx: create a modern package including manpages...
r29027 #require test-repo slow osx osxpackaging
timeless
tests: silence test-repo obsolete warning...
r29219
$ . "$TESTDIR/helpers-testrepo.sh"
Yuya Nishihara
tests: alias syshg and syshgenv so they can be switched conditionally
r33199 $ testrepohgenv
timeless
tests: silence test-repo obsolete warning...
r29219
Augie Fackler
osx: use more paranoid quoting in test
r31610 $ OUTPUTDIR="`pwd`"
Augie Fackler
tests: add test for Mac OS X package construction
r29025 $ export OUTPUTDIR
$ KEEPMPKG=yes
$ export KEEPMPKG
$ cd "$TESTDIR"/..
Augie Fackler
osx: new script for generating OS X package versions...
r33595 $ contrib/genosxversion.py --selftest ignoredarg
Augie Fackler
osx: use more paranoid quoting in test
r31610 $ make osx > "$OUTPUTDIR/build.log" 2>&1
$ cd "$OUTPUTDIR"
Kevin Bullock
osx: create a modern package including manpages...
r29027 $ ls -d *.pkg
Mercurial-*-macosx10.*.pkg (glob)
$ xar -xf Mercurial*.pkg
Augie Fackler
tests: add test for Mac OS X package construction
r29025
Gather list of all installed files:
Kevin Bullock
osx: create a modern package including manpages...
r29027 $ lsbom mercurial.pkg/Bom > boms.txt
Augie Fackler
tests: add test for Mac OS X package construction
r29025
Augie Fackler
osx: override default exclude filter for pkgbuild...
r32603 We've had problems with the filter logic in the past. Make sure no
.DS_Store files ended up in the final package:
$ grep DS_S boms.txt
[1]
Augie Fackler
tests: add test for Mac OS X package construction
r29025 Spot-check some randomly selected files:
Kevin Bullock
osx: create a modern package including manpages...
r29027 $ grep bdiff boms.txt | cut -d ' ' -f 1,2,3
Augie Fackler
osx: update Mac packaging tests for bdiff.so install location change
r32469 ./Library/Python/2.7/site-packages/mercurial/cext/bdiff.so 100755 0/0
Augie Fackler
tests: update mac packaging test expectations...
r33594 ./Library/Python/2.7/site-packages/mercurial/cffi/bdiff.py 100644 0/0
./Library/Python/2.7/site-packages/mercurial/cffi/bdiff.pyc 100644 0/0
./Library/Python/2.7/site-packages/mercurial/cffi/bdiff.pyo 100644 0/0
./Library/Python/2.7/site-packages/mercurial/cffi/bdiffbuild.py 100644 0/0
./Library/Python/2.7/site-packages/mercurial/cffi/bdiffbuild.pyc 100644 0/0
./Library/Python/2.7/site-packages/mercurial/cffi/bdiffbuild.pyo 100644 0/0
Kevin Bullock
osx: create a modern package including manpages...
r29027 ./Library/Python/2.7/site-packages/mercurial/pure/bdiff.py 100644 0/0
./Library/Python/2.7/site-packages/mercurial/pure/bdiff.pyc 100644 0/0
./Library/Python/2.7/site-packages/mercurial/pure/bdiff.pyo 100644 0/0
Kyle Lippincott
zsh_completion: install as _hg not hg...
r32604 $ grep zsh/site-functions/_hg boms.txt | cut -d ' ' -f 1,2,3
./usr/local/share/zsh/site-functions/_hg 100644 0/0
Augie Fackler
osx: install bash and zsh completions by default...
r31142 $ grep hg-completion.bash boms.txt | cut -d ' ' -f 1,2,3
Augie Fackler
osx: install completion scripts using install(1) to avoid umask badness...
r31609 ./usr/local/hg/contrib/hg-completion.bash 100644 0/0
Kevin Bullock
osx: create a modern package including manpages...
r29027 $ egrep 'man[15]' boms.txt | cut -d ' ' -f 1,2,3
./usr/local/share/man/man1 40755 0/0
Augie Fackler
osx: include chg by default
r32471 ./usr/local/share/man/man1/chg.1 100644 0/0
Kevin Bullock
osx: create a modern package including manpages...
r29027 ./usr/local/share/man/man1/hg.1 100644 0/0
./usr/local/share/man/man5 40755 0/0
./usr/local/share/man/man5/hgignore.5 100644 0/0
./usr/local/share/man/man5/hgrc.5 100644 0/0
$ grep bser boms.txt | cut -d ' ' -f 1,2,3
./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/bser.so 100755 0/0
./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/pybser.py 100644 0/0
./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/pybser.pyc 100644 0/0
./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/pybser.pyo 100644 0/0
$ grep localrepo boms.txt | cut -d ' ' -f 1,2,3
./Library/Python/2.7/site-packages/mercurial/localrepo.py 100644 0/0
./Library/Python/2.7/site-packages/mercurial/localrepo.pyc 100644 0/0
./Library/Python/2.7/site-packages/mercurial/localrepo.pyo 100644 0/0
Augie Fackler
osx: include chg by default
r32471 $ egrep 'bin/' boms.txt | cut -d ' ' -f 1,2,3
./usr/local/bin/chg 100755 0/0
Kevin Bullock
osx: create a modern package including manpages...
r29027 ./usr/local/bin/hg 100755 0/0
Augie Fackler
tests: add test for Mac OS X package construction
r29025
Augie Fackler
osx: explicitly build hg with /usr/bin/python2.7...
r29535 Make sure the built binary uses the system Python interpreter
$ bsdtar xf mercurial.pkg/Payload usr/local/bin
Use a glob to find this to avoid check-code whining about a fixed path.
$ head -n 1 usr/local/b?n/hg
#!/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Augie Fackler
tests: add test for Mac OS X package construction
r29025 Note that we're not currently installing any /etc/mercurial stuff,
including merge-tool configurations.