phabricator: handle local:commits time being string or int
When setting local:commits arcanist has different behaviour depending on
whether the repo is git or hg. With hg it sets the time as a number, since it
calls PHP's strtotime on the value, but with git it sets it as a string.
Normally this wouldn't be an issue since phabread wouldn't be interacting with
Phabricator Revisions for git repos, but Mozilla has a secondary workflow for
git users that uses the git-cinnabar tool to interact with their hg repos. When
a git-cinnabar user uses the moz-phab tool to submit patches for mozilla-central
it makes use of Mozilla's fork of arcanist, which works with their local git
version of m-c, and thus sets the local:commit time as a string, and then
translates the commit hashes.
Currently when encountering such DREVS phabread dies with "TypeError: %d format:
a number is required, not str".
phabsend also used to set it as a string but wouldn't have encountered the
issue with its own DREVs since it would read hg:meta first.
Differential Revision: https://phab.mercurial-scm.org/D6650
Testing cloning with the EOL extension
$ cat >> $HGRCPATH <<EOF
> [extensions]
> eol =
>
> [eol]
> native = CRLF
> EOF
setup repository
$ hg init repo
$ cd repo
$ cat > .hgeol <<EOF
> [patterns]
> **.txt = native
> EOF
$ printf "first\r\nsecond\r\nthird\r\n" > a.txt
$ hg commit --addremove -m 'checkin'
adding .hgeol
adding a.txt
Clone
$ cd ..
$ hg clone repo repo-2
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd repo-2
$ cat a.txt
first\r (esc)
second\r (esc)
third\r (esc)
$ hg cat a.txt
first
second
third
$ hg remove .hgeol
$ hg commit -m 'remove eol'
$ hg push --quiet
$ cd ..
Test clone of repo with .hgeol in working dir, but no .hgeol in tip
$ hg clone repo repo-3
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd repo-3
$ cat a.txt
first
second
third
Test clone of revision with .hgeol
$ cd ..
$ hg clone -r 0 repo repo-4
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
new changesets 90f94e2cf4e2
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd repo-4
$ cat .hgeol
[patterns]
**.txt = native
$ cat a.txt
first\r (esc)
second\r (esc)
third\r (esc)
$ cd ..