Eugene Baranov <eug.baranov@gmail.com> [Wed, 08 Jul 2015 18:11:40 +0100] rev 25775
convert: if getting a file from Perforce fails try to get it one more time
When converting a particularly large Perforce changelist (especially with some
big files), it is very likely to run into an intermittent network issue (e.g.
WSAECONNRESET or WSAETIMEDOUT) getting one of the files, which will result in
the entire changelist converting being aborted. Which can be quite unfortunate
since you might have waited hours getting all other files. To mitigate this
let's attempt to get the file one more time, escalating original exception
if that attempt fails.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 13 Jul 2015 23:34:12 +0900] rev 25774
shelve: keep old backups if timestamp can't decide exact order of them
Before this patch, backups to be discarded are decided by steps below
at 'hg unshelve' or so:
1. list '(st_mtime, filename)' tuples of each backups up
2. sort list of these tuples, and
3. discard backups other than 'maxbackups' ones at the end of list
This doesn't work well in the case below:
- "sort by name" order differs from actual backup-ing order, and
- some of backups have same timestamp
For example, 'test-shelve.t' satisfies the former condition:
- 'default-01' < 'default-1' in "sort by name" order
- 'default-1' < 'default-01' in actual backup-ing order
Then, 'default-01' is discarded instead of 'default-1' unexpectedly,
if they have same timestamp. This failure appears occasionally,
because the most important condition "same timestamp" is timing
critical.
To avoid such unexpected discarding, this patch keeps old backups if
timestamp can't decide exact order of them.
Timestamp of the border backup (= the oldest one of recent
'maxbackups' ones) as 'bordermtime' is used to examine whether
timestamp can decide exact order of backups.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Jul 2015 00:59:51 +0900] rev 25773
subrepo: use vfs.dirname instead of os.path.dirname
This patch uses "wvfs of the parent repository" ('pwvfs') instead of
'wvfs' of own repository, because 'self._path' is the path to this
subrepository as seen from the parent repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Jul 2015 00:59:51 +0900] rev 25772
vfs: add dirname
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Jul 2015 00:59:51 +0900] rev 25771
subrepo: use vfs.basename instead of os.path.basename
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Jul 2015 00:59:51 +0900] rev 25770
vfs: add basename
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Jul 2015 00:59:51 +0900] rev 25769
subrepo: use repo.pathto instead of util.pathto to simplify invocation
This centralization into 'repo.pathto()' should reduce the cost of vfs
migration around 'getcwd()' and so on in the future.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Jul 2015 00:59:51 +0900] rev 25768
subrepo: prefetch ctx.repo() for efficiency and centralization
'subrepo.state()' refers same 'ctx.repo()' in many places and times.