Tue, 15 Jan 2013 23:30:10 +0100 docs: "deprecate" checkchanged and checkconflicts in merge-tool configuration
Mads Kiilerich <madski@unity3d.com> [Tue, 15 Jan 2013 23:30:10 +0100] rev 18385
docs: "deprecate" checkchanged and checkconflicts in merge-tool configuration These settings were replaced by check=changed and check=conflicts in a912f26777d3. There is no reason to announce two different ways to achieve the same. The old way should be kept but not announced.
Tue, 15 Jan 2013 23:30:10 +0100 tests: run with PYTHONHASHSEED=random
Mads Kiilerich <madski@unity3d.com> [Tue, 15 Jan 2013 23:30:10 +0100] rev 18384
tests: run with PYTHONHASHSEED=random Python set and dict iteration order is in principle undefined but usually 'quite stable'. Setting PYTHONHASHSEED=random will make the iteration order more random in Python 2.6.8 and 2.7.3 and where it has been backported. This can thus help spot dependencies on undefined behaviour and prevent future problems.
Tue, 15 Jan 2013 13:33:28 -0800 run-tests: exit cleanly if parallel run is interrupted
Bryan O'Sullivan <bryano@fb.com> [Tue, 15 Jan 2013 13:33:28 -0800] rev 18383
run-tests: exit cleanly if parallel run is interrupted If interrupted while running with "--jobs N", run-tests asynchronously spewed a bunch of output and backtraces from both the master and slave processes, leaving the terminal full of goop. This patch makes it behave more sensibly.
Sun, 13 Jan 2013 01:39:16 -0600 filtering: rename filters to their antonyms
Kevin Bullock <kbullock@ringworld.org> [Sun, 13 Jan 2013 01:39:16 -0600] rev 18382
filtering: rename filters to their antonyms Now that changelog filtering is in place, it's become evident that naming the filters according to the set of revs _not_ included in the filtered changelog is confusing. This is especially evident in the collaborative branch cache scheme. This changes the names of the filters to reflect the revs that _are_ included: hidden -> visible unserved -> served mutable -> immutable impactable -> base repoview.filteredrevs is renamed to filterrevs, so that callers read a bit more sensibly, e.g.: filterrevs('visible') # filter revs according to what's visible
Tue, 15 Jan 2013 20:55:47 +0100 clone: don't include empty revlogs in stream
Mads Kiilerich <madski@unity3d.com> [Tue, 15 Jan 2013 20:55:47 +0100] rev 18381
clone: don't include empty revlogs in stream
Tue, 15 Jan 2013 20:54:57 +0100 serve: don't send any content headers with 304 responses
Mads Kiilerich <madski@unity3d.com> [Tue, 15 Jan 2013 20:54:57 +0100] rev 18380
serve: don't send any content headers with 304 responses Fixes HTTP protocol violation introduced in cf5c76017e11. 'hg serve' would show a stacktrace when loading pages that not had been modified. There was test coverage for this, but the wrong response headers wasn't shown and thus not detected.
Tue, 15 Jan 2013 18:42:04 +0100 tests: fix doctest stability over Python versions
Mads Kiilerich <madski@unity3d.com> [Tue, 15 Jan 2013 18:42:04 +0100] rev 18379
tests: fix doctest stability over Python versions pprint ain't pretty in Python 2.4: Changed in version 2.5: Dictionaries are sorted by key before the display is computed; before 2.5, a dictionary was sorted only if its display required more than one line, although that wasn’t documented. Fixes issue introduced in 404feac78b8a.
Tue, 15 Jan 2013 02:59:14 +0100 tests: stabilize doctest output
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:14 +0100] rev 18378
tests: stabilize doctest output Avoid dependencies to dict iteration order.
Tue, 15 Jan 2013 02:59:14 +0100 tests: make test-hook.t output more stable
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:14 +0100] rev 18377
tests: make test-hook.t output more stable
Thu, 13 Dec 2012 23:15:51 +0100 convert: make toposort order stable when multiple orderings are possible
Mads Kiilerich <mads@kiilerich.com> [Thu, 13 Dec 2012 23:15:51 +0100] rev 18376
convert: make toposort order stable when multiple orderings are possible The output of some tests are changed. Not necessarily to the better, just other valid permutations.
Tue, 15 Jan 2013 02:59:14 +0100 convert: report cvsps branchpoints sorted
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:14 +0100] rev 18375
convert: report cvsps branchpoints sorted
Tue, 15 Jan 2013 02:59:14 +0100 convert: process subversion branch in a sorted order
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:14 +0100] rev 18374
convert: process subversion branch in a sorted order
Tue, 15 Jan 2013 02:59:14 +0100 convert: process missing branches in sorted order
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:14 +0100] rev 18373
convert: process missing branches in sorted order
Tue, 15 Jan 2013 02:59:14 +0100 convert: process splicemap in sorted order
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:14 +0100] rev 18372
convert: process splicemap in sorted order
Tue, 15 Jan 2013 02:59:13 +0100 mq: stabilize update after strip of parent revision
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:13 +0100] rev 18371
mq: stabilize update after strip of parent revision Strip will (if it updates) update to the parent of revs[0], where revs are the roots of the tree that is stripped. When revs was list(set) it was thus undefined which root parent it would update to. With sorted(set) it is at least stable what it updates to. (But it is very possible that another more useful and predictable behaviour could be defined ... such as updating to the tip-most surviving wd ancestor.)
Wed, 12 Dec 2012 02:38:14 +0100 histedit: process bookmarks in sorted order
Mads Kiilerich <mads@kiilerich.com> [Wed, 12 Dec 2012 02:38:14 +0100] rev 18370
histedit: process bookmarks in sorted order
Wed, 12 Dec 2012 02:38:14 +0100 churn: sort users with same churn by name
Mads Kiilerich <mads@kiilerich.com> [Wed, 12 Dec 2012 02:38:14 +0100] rev 18369
churn: sort users with same churn by name This makes the output order well-defined and improves code readability.
Wed, 12 Dec 2012 02:38:14 +0100 largefiles: upload files in sorted order
Mads Kiilerich <mads@kiilerich.com> [Wed, 12 Dec 2012 02:38:14 +0100] rev 18368
largefiles: upload files in sorted order
Wed, 12 Dec 2012 02:38:14 +0100 hgweb: generate query strings with parameters sorted by key
Mads Kiilerich <mads@kiilerich.com> [Wed, 12 Dec 2012 02:38:14 +0100] rev 18367
hgweb: generate query strings with parameters sorted by key
Wed, 12 Dec 2012 02:51:02 +0100 identity: report bookmarks sorted
Mads Kiilerich <mads@kiilerich.com> [Wed, 12 Dec 2012 02:51:02 +0100] rev 18366
identity: report bookmarks sorted
Tue, 15 Jan 2013 02:59:13 +0100 obsolete: process markers in a stable order
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:13 +0100] rev 18365
obsolete: process markers in a stable order Using set iteration order gave unstable debugsuccessorssets output with PYTHONHASHSEED=random.
Wed, 12 Dec 2012 02:38:14 +0100 subrepos: process subrepos in sorted order
Mads Kiilerich <mads@kiilerich.com> [Wed, 12 Dec 2012 02:38:14 +0100] rev 18364
subrepos: process subrepos in sorted order Add sorted() in places found by testing with PYTHONHASHSEED=random and code inspection. An alternative to sprinkling sorted() all over would be to change substate to a custom dict with sorted iterators...
Tue, 15 Jan 2013 02:59:12 +0100 bookmarks: process pulled remote bookmarks in sorted order
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:12 +0100] rev 18363
bookmarks: process pulled remote bookmarks in sorted order
Wed, 12 Dec 2012 02:38:14 +0100 copies: report found copies sorted
Mads Kiilerich <mads@kiilerich.com> [Wed, 12 Dec 2012 02:38:14 +0100] rev 18362
copies: report found copies sorted
Tue, 15 Jan 2013 02:59:12 +0100 discovery: process heads in sorted order
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:12 +0100] rev 18361
discovery: process heads in sorted order
Tue, 15 Jan 2013 02:59:12 +0100 merge: process files in sorted order
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:12 +0100] rev 18360
merge: process files in sorted order
Wed, 12 Dec 2012 02:38:14 +0100 commandserver: report capabilities sorted
Mads Kiilerich <mads@kiilerich.com> [Wed, 12 Dec 2012 02:38:14 +0100] rev 18359
commandserver: report capabilities sorted
Wed, 12 Dec 2012 02:38:14 +0100 bisect: store state sorted
Mads Kiilerich <mads@kiilerich.com> [Wed, 12 Dec 2012 02:38:14 +0100] rev 18358
bisect: store state sorted
Tue, 15 Jan 2013 02:59:12 +0100 localrepo: store branchheads sorted
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:12 +0100] rev 18357
localrepo: store branchheads sorted
Wed, 12 Dec 2012 02:38:14 +0100 localrepo: store requirements sorted
Mads Kiilerich <mads@kiilerich.com> [Wed, 12 Dec 2012 02:38:14 +0100] rev 18356
localrepo: store requirements sorted
Tue, 15 Jan 2013 02:59:12 +0100 copies: make the loss in _backwardcopies more stable
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 02:59:12 +0100] rev 18355
copies: make the loss in _backwardcopies more stable A couple of tests shows slightly more correct output. That is pure coincidence.
Tue, 15 Jan 2013 01:10:08 +0100 serve: use chunked encoding in hgweb responses
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:10:08 +0100] rev 18354
serve: use chunked encoding in hgweb responses 'hg serve' used to close connections when sending a response with unknown length ... such as a bundle or archive. Now chunked encoding will be used for responses with unknown length, and the connection do thus not have to be closed to indicate the end of the response. Chunked encoding is only used if the length is unknown, if the connection wouldn't be closed for other reasons, AND if it is a HTTP 1.1 request. This will not benefit other users of hgweb ... but it can serve as an example that it can be done.
Tue, 15 Jan 2013 01:10:08 +0100 serve: remove connection close hack for Python 2.3
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:10:08 +0100] rev 18353
serve: remove connection close hack for Python 2.3 Introduced in 276de216d2c5 and no longer needed - BaseHTTPServer handles connection closing just fine if we don't mess with its internals.
Tue, 15 Jan 2013 01:07:03 +0100 hgweb: pass the actual response body to request.response, not just the length
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:07:03 +0100] rev 18352
hgweb: pass the actual response body to request.response, not just the length This makes it less likely to send a response that doesn't match Content-Length.
Tue, 15 Jan 2013 01:05:12 +0100 hgweb: don't pass empty response chunks on
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18351
hgweb: don't pass empty response chunks on hgweb internals will often produce empty writes - especially when returning compressed data. hgweb is no middleware application and there is thus no reason to pass them on to be processed in other layers.
Tue, 15 Jan 2013 01:05:12 +0100 hgweb: remove handling of any else than strings from request.write
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18350
hgweb: remove handling of any else than strings from request.write Iterators should be returned WSGI style, not written. And apparently all of hgweb do that.
Tue, 15 Jan 2013 01:05:12 +0100 serve: send response headers even if response has no body
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18349
serve: send response headers even if response has no body The headers would usually be sent anyway because the app did a number of writes of empty strings.
Tue, 15 Jan 2013 01:05:12 +0100 hgweb: simplify wsgirequest header handling
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18348
hgweb: simplify wsgirequest header handling Remove leaky header abstraction and prepare for other encodings.
Tue, 15 Jan 2013 01:05:12 +0100 hgweb: make type a mandatory parameter to request.respond
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18347
hgweb: make type a mandatory parameter to request.respond There will thus always be headers and the runtime check can be removed.
Tue, 15 Jan 2013 01:05:12 +0100 hgweb: use Content-Length for pushres
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18346
hgweb: use Content-Length for pushres This prevents some unnecessary http connection close.
Tue, 15 Jan 2013 01:05:12 +0100 hgweb: send Content-Length 0 for zero length response
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18345
hgweb: send Content-Length 0 for zero length response Before, Content-Length wasn't sent for 0 length responses. Now it is. This could in principle prevent some unnecessary http connection close.
Tue, 15 Jan 2013 01:05:12 +0100 archival: tarit should never close the dest passed to it
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18344
archival: tarit should never close the dest passed to it Some archive types closed the open file passed to it, some didn't. This could cause either missing or duplicate close and cause problems in hgweb. The fix in 14f3795a5ed7 should only have closed the compressors and archivers - not the underlying file itself if no compressor is used.
Tue, 15 Jan 2013 01:05:12 +0100 mq: checktoppatch should only check if p1 is qtip
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18343
mq: checktoppatch should only check if p1 is qtip There is no way qtip in p2 could be used for anything, and there is thus no reason to check and accept it.
Tue, 15 Jan 2013 01:05:12 +0100 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18342
mq: fix qpop of working directory parent patch when not at qtip mq assumed that it had to update from qtip to qparent, and instead of updating from where it was it failed with: abort: working directory revision is not qtip
Tue, 15 Jan 2013 01:05:12 +0100 largefiles: make log match largefiles in the non-standin location too
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18341
largefiles: make log match largefiles in the non-standin location too Yet another match hack.
Tue, 15 Jan 2013 01:05:12 +0100 log: make log work even if first parameter doesn't exist
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18340
log: make log work even if first parameter doesn't exist A slowpath optimization kicked in too often because of wrong indentation.
Tue, 15 Jan 2013 01:05:12 +0100 merge: remove "case" comments
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18339
merge: remove "case" comments The comments introduced in f05c182430a0 seems important ... but the context has apparently been lost and they do not have any value now.
Wed, 09 Jan 2013 02:02:45 +0100 merge: merge file flags together with file content
Mads Kiilerich <mads@kiilerich.com> [Wed, 09 Jan 2013 02:02:45 +0100] rev 18338
merge: merge file flags together with file content The 'x' flag and the 'l' flag are very different. It is usually not a problem to change the 'x' flag of a normal file independent of the content, but one does not simply change the type of a file to 'l' independent of the content. This removes the fmerge function that merged both 'x' and 'l' independent of content early in the merge process. This correctly introduces some conflicts instead of silent incorrect merges. 3-way flag merge will now be done in the resolve process, right next to file content merge. Conflicts can thus be resolved with (slightly inconvenient) resolve commands like 'resolve f --tool internal:other'. It thus brings us closer to be able to re-solve manifest merge after the merge and avoid prompts during merge. This also removes the "conflicting flags for a - (n)one, e(x)ec or sym(l)ink?" prompt that nobody could answer and that made it easy to mix symlink targets and file contents up. Instead it will give a file merge where a sufficiently clever merge tool can help resolving the issue.
Tue, 15 Jan 2013 01:05:12 +0100 tests: better test coverage of merges of flags
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18337
tests: better test coverage of merges of flags This makes existing problems with merges of symlinks and files more obvious and add test coverage for tricky merges without real common ancestors.
Thu, 10 Jan 2013 03:40:45 +0100 merge: remove old pre-audit code checking for absolute paths
Mads Kiilerich <mads@kiilerich.com> [Thu, 10 Jan 2013 03:40:45 +0100] rev 18336
merge: remove old pre-audit code checking for absolute paths Audit will handle this in a more elegant way.
Thu, 10 Jan 2013 00:45:51 +0100 merge: drop reference to file contents immediately after write
Mads Kiilerich <mads@kiilerich.com> [Thu, 10 Jan 2013 00:45:51 +0100] rev 18335
merge: drop reference to file contents immediately after write Like 7d2aaeea67ed this reduces memory usage on large merges.
Thu, 10 Jan 2013 00:44:23 +0100 merge: changing the mode of a file is also an update
Mads Kiilerich <mads@kiilerich.com> [Thu, 10 Jan 2013 00:44:23 +0100] rev 18334
merge: changing the mode of a file is also an update It was a change in the file system that wasn't reported in the summaries.
Tue, 15 Jan 2013 01:05:12 +0100 merge: use util.unlinkpath for removing moved files
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18333
merge: use util.unlinkpath for removing moved files - more like how removed files are removed.
Tue, 15 Jan 2013 01:05:12 +0100 merge: .hgsubstate is special as merge destination, not as merge source
Mads Kiilerich <mads@kiilerich.com> [Tue, 15 Jan 2013 01:05:12 +0100] rev 18332
merge: .hgsubstate is special as merge destination, not as merge source
Wed, 09 Jan 2013 00:01:33 +0100 merge: remove redundant unlink after merge
Mads Kiilerich <mads@kiilerich.com> [Wed, 09 Jan 2013 00:01:33 +0100] rev 18331
merge: remove redundant unlink after merge The early prescan for move/remove and removal of moved files in applyupdates was introduced with mergestate 368a4ec603cc and rendered this chunk of code irrelevant. The impact of the chunk was reduced in 5b3383ea67d2 - but it could have been removed completely.
Wed, 09 Jan 2013 00:01:33 +0100 merge: rename list of actions from action to actions
Mads Kiilerich <mads@kiilerich.com> [Wed, 09 Jan 2013 00:01:33 +0100] rev 18330
merge: rename list of actions from action to actions
Wed, 09 Jan 2013 00:01:33 +0100 merge: consistently use "x" instead of 'x' for internal action types
Mads Kiilerich <mads@kiilerich.com> [Wed, 09 Jan 2013 00:01:33 +0100] rev 18329
merge: consistently use "x" instead of 'x' for internal action types This makes it simpler to search for places where the action types are handled.
Wed, 09 Jan 2013 00:01:33 +0100 merge: consistently use repo.wopener.audit instead of creating a new auditor
Mads Kiilerich <mads@kiilerich.com> [Wed, 09 Jan 2013 00:01:33 +0100] rev 18328
merge: consistently use repo.wopener.audit instead of creating a new auditor
Wed, 09 Jan 2013 00:01:33 +0100 scmutil: simplify vfs.audit - drop wrapped vfs.auditor
Mads Kiilerich <mads@kiilerich.com> [Wed, 09 Jan 2013 00:01:33 +0100] rev 18327
scmutil: simplify vfs.audit - drop wrapped vfs.auditor
Thu, 10 Jan 2013 00:44:23 +0100 util: copyfile: remove dest before copying
Mads Kiilerich <mads@kiilerich.com> [Thu, 10 Jan 2013 00:44:23 +0100] rev 18326
util: copyfile: remove dest before copying This prevents spurious problems writing to locked files on Windows.
(0) -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 +30000 tip