obsstore: add some documentation about the marker fields

As the number of fields grow, it makes sense to start documenting their contents.
obsstore: add a `parents` field

This field is intended to store the parent of the precursor. This is useful to
attach pruned changesets to a set of exchanged changesets. We currently just
add the fields with a None value. None stands for "no data recorded".
obsstore: add a `parents` argument to obsstore.create

We need a way to pass the information to the function. Some guru told me that
what's arguments are made for.
createmarkers: automatically record the parent of pruned changesets

We need this information to build the set of relevant markers during
exchanges. This can only be done at the `createmarkers` level since
the `obsstore.create` function does not have a repo and therefore has
no access to the parent information.
obsstore: drop 'date' from the metadata dictionary

We are extracting the `date` information from the metadata at read time.
However, we failed to remove it from the metadata returned in the markers. This
is now fixed.
obsstore: also store the 'parents' field on disk

We now store the `parents` field on disk. We use the same strategy as for
`date`: We stick it into the metadata. This is slow and dirty, but this is also
the only way we currently have.

At some point we'll have a new obsstore format to store this properly.
obsmarkers: add a `parentnodes` method to retrieve parent information
debugobsolete: display parents information from markers

Now that we have a new field, we need a way to visualize it.
repoview: use util.sha1() instead of hashlib.sha1()

45b5cd948a4d accidentally broke Python 2.4 compatibility, this fixes it.

--HG--
extra : rebase_source : 93695e915c41d17a6f61b09350e6e669ef54479a
obsolete: avoid 2-argument form of enumerate, which was new in Python 2.6

--HG--
extra : rebase_source : 32a2b293f4920c2c72aa30caa63232717e1439c7
clone: for local clones, copy branchcache from the right location (issue4286)

The unfiltered branchcache is in .hg/cache/branch2, not
.hg/store/cache/branch2.

--HG--
extra : rebase_source : 78e766ae9eb0a00a80aaa37c902a9411c1ba0747
clone: for local clones, copy over filtered branchcaches as well (issue4286)

Local clones copy/hardlink over files directly, so the branchcaches should all
be valid. There's a slight chance that a read operation would update one of the
branchcaches, but we hold a lock over the source repo so they shouldn't cause
an invalid branchcache to be copied over, just a different, valid one.

--HG--
extra : rebase_source : 9bb851a17dbd6b56be670c6d3bf70664f00946be
purge: avoid full walks when directories aren't purged

If match.traversedir is not None, we're forced to do full walks. However when
we aren't purging directories we don't need to set match.traversedir to
anything.

This speeds up non-full walks such as the one hgwatchman makes possible. For
mozilla-central with hgwatchman enabled, 'hg purge --files' goes from 0.88
seconds to 0.22.

--HG--
extra : rebase_source : f16fd6c208eb369f2d50775d6abc44052e0144c6
annotate: abort early if no file is specified

This change is intended to move the getdate function near the opmap table.
cvsps: add two more tiebreakers in cscmp

test-convert-cvs.t has been a little flaky for a while now. Add an
extra tiebreaker in cscmp so that all the cases in the test will sort
reliably.

Without this patch, test-convert-cvs.t failed after 346 runs. With
this patch, I stopped trying to get it to fail after 615 runs. While
not conclusive, that makes me pretty optimistic that this is a working
fix.

--HG--
extra : rebase_source : 2b5a01ea4633f357bdc19880fc96e94923734752