# HG changeset patch
# User mason@suse.com
Performance enhancements for manifest.add()
Improve manifest.add performance by using bisect to insert/remove
changed items into the manifest list. This also generates the
manifest delta directly based on the changes being made.
This adds an object that remembers to unlock the remote repo on
destruction and lock/unlock functions for the ssh protocol. The remote
repository should also unlock itself when the connection goes down.
This allows the the pull side to precisely control how much data is
read so that another encapsulation layer is not needed.
An http client gets a response with a finite size. Because ssh clients
need to keep the stream open, we must not read more data than is sent
in a response. But due to the streaming nature of the changegroup
scheme, only the piece that's parsing the data knows how far it's
allowed to read.
This means the generator scheme isn't fine-grained enough. Instead we
need file-like objects with a read(x) method. This switches everything
for push/pull over to using file-like objects rather than generators.
# HG changeset patch
# User thananck@yahoo.com
# Node ID c838b9c2c71b1d64b8bde786f6470b30f23962de
# Parent d5198e5dd8087ca487031662f0908a6296512e5d
Provides output option to cat command
expand function in commands.doexport is moved to toplevel and renamed
to make_filename. The 'cat' command now accecpts --output <pattern>
switch to specify the destination file.
Index: hg/mercurial/commands.py
===================================================================
# HG changeset patch
# User Bryan O'Sullivan <bos@serpentine.com>
# Node ID fb74eaa2b5b763ad5591b2e51dbb377bf8342064
# Parent ebf5eba347a17a5c09000b3342caf350cd060a1b
Use repo.getcwd() in a few obvious places.
# HG changeset patch
# User Bryan O'Sullivan <bos@serpentine.com>
# Node ID ebf5eba347a17a5c09000b3342caf350cd060a1b
# Parent 4309b0a5a6010dd2e5811b77d2bc29a51acf290f
Add locate command.
Used for finding files with names that match specific patterns,
such as "*.c".
This patch also introduces localrepository.getcwd, which returns the
current directory relative to the repository root.
# HG changeset patch
# User thananck@yahoo.com
# Node ID 2bd20bb06f817796d76b8e126f4a685426c4faf4
# Parent 7a240687674e6cf5a8dfd45973d7e3978b89af79
open .hgtags as binary
The '.hgtags' file, in tag command, is opened as binary for interoperability with the other OS
# HG changeset patch
# User maf46@burn.cl.cam.ac.uk
# Node ID 57667c9b93a5a743e4629d15a0e6bd76699130c3
# Parent 4309b0a5a6010dd2e5811b77d2bc29a51acf290f
Fix zombie files in merge
Keir Fraser observed the following:
> I made a small test case that illustrates the bug in merging changesets
> with 'hg remove's in them:
>
> 1. Create a repository A containing files foo & bar.
> 2. Create clone called B.
> 3. A removes file bar, and commits this removal.
> 4. B edits file foo, and commits this edit.
>
> Now, if B:
> # hg pull ../A; hg update -m; hg commit
> Then bar remains deleted.
>
> If A:
> # hg pull ../B; hg update -m; hg commit
> Then bar is resurrected!
>
> It looks as though, when you merge across a branch, any deletions in
> your own branch are forgotten.
> ...
> Fixing this is a must, as zombie files are a real pain. :-)
Keir later patched our local copy of hg as shown below, which fixes
the problem. I've also enclosed a test which captures the test Keir
outlined...
Files deleted on a branch should not automatically reappear in a merge
Patch notes:
1. The first chunk does not change behaviour, but cleans up the code
to more closely match check of 'force' in the second chunk. I
think it makes the code clearer.
2. The second chunk fixes two bugs --
i. If we choose to keep a remotely-changed locally-deleted file,
then we need to 'get' that file. If we choose to delete it
then no action need be taken (it is already deleted in the
working manifest). Without this fix, choosing to delete would
get a Python traceback.
ii. The test for whether the file was remotely-created is
insufficient. It is only true if f is not in the common
ancestor. Otherwise the file was deleted locally, and should
remain deleted. (this is the most important fix!)
Index: hg/tests/test-merge6
===================================================================
# HG changeset patch
# User thananck@yahoo.com
# Node ID 7a240687674e6cf5a8dfd45973d7e3978b89af79
# Parent 4309b0a5a6010dd2e5811b77d2bc29a51acf290f
Output file of 'export' is opened as binary (other OS)
# HG changeset patch
# User Bryan O'Sullivan <bos@serpentine.com>
# Node ID 059c6e42fc4221816e26a72bef8cf780891989ca
# Parent 4309b0a5a6010dd2e5811b77d2bc29a51acf290f
Demand-load most modules in the commands and ui modules.
This improves response times for a number of simple commands, as the
Python interpreter doesn't end up loading modules that it never uses.
There's less benefit to demand-loading in other modules.
# HG changeset patch
# User Alecs King <alecsk@gmail.com>
On Sat, Jul 02, 2005 at 02:11:34PM -0700, Matt Mackall wrote:
> On Sun, Jul 03, 2005 at 12:49:27AM +0800, Alecs King wrote:
> > Hg is really very nice. The only feature i miss from git is the
> > whatchanged -p, which shows a diff along with a changeset.
> > python before, i just dig into the mercurial/commands.py a while and
> > see what diff(), dodiff(), export(), show_changeset(), log() would
> > normally do. There might be one thing or two missed or wrong. But here
> > it is: a '-d' option to 'hg log' showing the diff info. You can use 'hg
> > log -d' to show the whole history with the diff or 'hg log -d <file>' to
> > show that info of a particular file. And also works with the '-r'
> > option.
>
> Let's use -p. We're going to be combining the global and per command
> switch namespace shortly and the global -p will disappear.
Okay. '-d' changed to '-p'. Just like 'whatchanged -p', now we have
'hg log -p'.
> Also, the argument list for show_changeset is getting a bit unwieldy.
This time i remain show_changeset untouched at all. Only changed some
bits of log().
# HG changeset patch
# User shaleh@speakeasy.net
# Node ID 1ae21732349f5b6dba2941609a044d9c365a6fb2
# Parent d3df6f5c87d045ba97457269261c35c30b04524b
* clean up error handling when user requests to use a non file object
- use os.path.exists() to verify the item exists
- use os.path.isfile() to check whether the item is a file or not
diff -r d3df6f5c87d0 -r 1ae21732349f mercurial/hg.py
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[PATCH] hg tag: local tag support in file .hg/localtags
From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
Support local tags in .hg/localtags
Also minor cleanups in related functions
manifest hash: 553b2e896fed3c9055ed18482ce15cfaa4fc41ce
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyYdJywK+sNU5EO8RAhohAKC2I3U44EXi+k4ofo5AWHBOg+94bgCfcbzs
VQ2yWkPPHZycjtswOBmepa8=
=v5AX
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Add username/merge/editor to .hgrc
These take priority over the equivalent environment vars
Deprecate HGMERGE, HGUSER, and HGEDITOR in docs
Add ui section to docs
Remove undocumented HG_OPTS
Raise username code out of changelog class
Make tests ignore ~/.hgrc
manifest hash: d127ef02bc5266036b4c77a55319519e91bd475b
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyM5NywK+sNU5EO8RAuU7AJ9zKk1TFrJXHM04jOOJJeBSp8jlTgCeP+tr
qwGFd+WaNqTepZ0wun5g9Uc=
=QEBu
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[PATCH] Parse and use header data from an hg export'ed changeset
From: Andrew Thompson <andrewkt@aktzero.com>
This should make it easier to import changesets that are hg export'ed
from other Mercurial users:
Add a routine to catch the user from an hg export'ed changeset.
Add user to commit call.
Add trap for changelog snippet, which is promoted to the beginning of
the commit text.
manifest hash: cf5b068f4cec411ff8b9fa3db324ab44ed012778
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyMXAywK+sNU5EO8RAqk5AJ9rC4ZwzcpDfxrNqIBrrTj6eL2mzQCgmZ5O
wSkis2J9Xz2wOZAhjVcxIgQ=
=32D+
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[PATCH] Get "hg serve" to print the URL being served
From: Bryan O'Sullivan <bos@serpentine.com>
If invoked with verbosity, print the URL at which we are serving.
Useful if you bind to any port with "-p 0", and need to know what port
the server is listening on.
manifest hash: d317225606fbd2ec5819e1f266575b0485dfba79
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyL9hywK+sNU5EO8RAjFQAJoDBRl5VoGIklxA1PdFGCt8Jb3iMQCeILeD
XAwnnSCy/IQ/MDfYf6z7oWI=
=FNVC
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Add globals to templater/fixup RSS
This removes a bunch of duplicate header() and footer() bits and makes
url and reponame available to all templates.
Fix up RSS bits to use url
Fix strftime call
manifest hash: 63e616e4c7f517a630d80429336817d64e900b68
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyLlRywK+sNU5EO8RAj9IAJkBDzMQaOwRmF0q8tRmVRnzHCjShACfSTCj
dbfAWg1crv/mUuRZlWL6Tc4=
=Z331
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[PATCH] Add RSS support to hgweb
From: Goffredo Baroncelli <kreijack@libero.it>
with the two small patches below, now hgweb can act as feed source.
Two kinds ofobjects can be tracked: the changelong and the files. This
can be useful if anyone would track the changes of a file ( and
because git has it, mercurial have to has ).
To check the changelog the url is
http://127.0.0.1:8000/pippo.pluto?cmd=changelog;style=rss
To check a file ( the mercurial/hgweb.py for examples ) the url is
http://127.0.0.1:8000/?cmd=filelog;file=mercurial/hgweb.py;filenode=0;style=rss
The first patch adds a new filter for the template: the filter is
named rfc822date, and translates the date from the touple format to a
rfc822 style date. The second patch adds the templates needed to
create the rss pages.
Tested with akgregator ( kde ).
[tweaked by mpm:
add Content-type: text/xml
add support for URL to header()
add header with link and content type
add RSS links on the normal pages]
manifest hash: 170c03d50490d7160097f59abdde1a5073d2ba82
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyFmLywK+sNU5EO8RApkrAKCYF/vZ3DwdMXPBds2LxGEX8+tK5QCfTeOc
ZhPN8Xjt2cD3wMbNXMcoNSo=
=COlM
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[PATCH 4/5]: cleaning the template parent management in hgweb
From: Goffredo Baroncelli <kreijack@libero.it>
Now the patch remove every use of the tag p1/p2/p1rev/p2rev from the
code ( even+the ones not used ), replacing everywhere with the tag
parent ( even where the previous +tag are not use ), so the
information to the templates is still given.
manifest hash: ede1f299e9201fdad2ecf48e63314350acbb047e
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyEqxywK+sNU5EO8RAjc5AJ9o8AU6/YRuERblO/0kgWwDN4rqQQCgkVj/
UBtzW5x0yD65mK6rb4f+bQk=
=07yG
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[PATCH] use <arpa/inet.h> instead of <netinet/in.h> for ntohl/htonl
From: Jed Davis <jdev@panix.com>
This fixes the Mac OS X build problem; hopefully it won't break any
other OSes, especially since SUSv3 says arpa/inet is the right header.
( http://www.opengroup.org/onlinepubs/009695399/functions/ntohl.html )
manifest hash: 2f06ff0cffefdb35e794131afcd1f34f9fdfa5cf
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyEoFywK+sNU5EO8RAk6WAJ9v/pnr07zUXKM9EBQQGaKSZAlhxACdHrwS
XTLSL6pPGAwaRfExGF2A3DQ=
=Rtv9
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
A bunch of parsing/help updates
more explanation of how to get non-basic commands
shorten names of debug functions and add docstrings
add undo long docstring
promote anotate, export, and revert
make the global opts array global
refactor parsing
kill two unused arguments to fancyopts
update test-help
manifest hash: 459ae2273aaf54f71b4576677a681dc53ab2908c
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyEDhywK+sNU5EO8RAr0DAJ9LTu8Fc2quLRtuwLPTQzWqlOJWKwCbBpZk
pnMkYnshsutVYljcil1P46I=
=Sleg
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Shorten help
Basic commands are now marked with "^" in the table
only basic commands are show in hg help by default
copyright banner not displayed with help by default
manifest hash: 7337678588354ca669a3b13d1fbb0ad893563947
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCx9LNywK+sNU5EO8RAokCAJ9ZK2sGEto9RLyukFX+n0nzHRoB9QCfU84I
e+Evc2g91kSS92FPrIC+Hnw=
=yUmt
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Restructure option handling
This allows global options to appear before or after the command name
Also includes a patch from Andrew Thompson <andrewkt@aktzero.com> to
catch invalid global options.
manifest hash: 2a1285c0caf04ae79dca10cb899d183d84a6f3d4
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCx80cywK+sNU5EO8RApJSAJ9U6ijOIbMDAd4lcahY6dXCTPcsNACeKuNT
iVhCp9IvacwwuHjAFXsLJEQ=
=Q9Qe
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
options: kill -d for debug
You must now use --debug.
This is a preparatory step for changing the option parsing from:
hg [global-opts] <command> [command-opts]
to
hg [global-opts] <command> [global or command opts]
manifest hash: ec5ecc687340baa109a98b742f1cd8d1f4aadeed
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCx4urywK+sNU5EO8RAl90AJ0fwKU/GwHpJvlTFl5naeJbkceWewCgh4jK
kaTSSodACgPzgbFiid5RL4Y=
=siEe
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Remove all remaining print statements
Convert most prints to ui.warn or ui.write
Pass a write function into transactions
manifest hash: d1b0af7a344fc087a5acfe3ae87b782c20d043e0
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCx1Q3ywK+sNU5EO8RAqSTAJwM5t/m+JOlf2ZXOjuItCSdFiubcwCdFm3G
HoicikSYpTgfCj2pIRfyLjo=
=Loqo
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[PATCH] New export patch
From: Bryan O'Sullivan <bos@serpentine.com>
Modify export command to accept rev ranges and output file spec.
It can now export a range of revisions, and print exported patches
to files whose names are generated using format strings.
manifest hash: e0085c205cdc31a168bcd25c85772ef00d53031d
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCx02iywK+sNU5EO8RAtCKAJ0V2K9+i1OGa27KyC5/nq3m+OdvtgCgpnav
3vfEODMzJVOZoJt9wzI1UCg=
=YAdI
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Actually warn on pulling from an unrelated repository
add some comments to findincoming
track the base nodes of the fetch set
report if the base set only contains nullid
add a test case
manifest hash: 3fc038a6041b0967a20503f5ec8876efc038841a
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCx0yLywK+sNU5EO8RAlK6AJ9J/GKPpYSMzTqmguXPWOISJ+zY5gCghd+j
ClLpn0dKZnB46dh0F8zhuuk=
=emNb
-----END PGP SIGNATURE-----