Quick question about Mercurial. Suppose my colleague and I have an updated copy of the chest. We both make changes, then we both push / pull the changes from each other.
I assume Mercurial saves the changes in order based on the commit date (since there is no incremental revision, just a GUID). So, what happens if my computer date is one day behind, and I will complete half a day after my colleague. Did my change appear half a day before my colleague?
Indeed, your change panels have a timestamp (stored internally in seconds, starting from the UNIX era and timeline offsets), and when a set of changes is displayed, they are ordered by timestamp, and your changes will be displayed in the wrong place, since their Temporary labels are incorrect. See https://www.mercurial-scm.org/wiki/ChangeSet
This is actually not a problem. timestamps do not affect how your changes merge with your peers. Here, only change set identifiers are used when merging a common ancestor. He will keep track of the schedule of your change sets, looking for the change set identifier that your colleague also has, and then combines your and his changes with the forward. See https://www.mercurial-scm.org/wiki/Merge
, , , . , .
@Martijn , , , . - , :
Mercurial DVC, , DAG (Directed Acyclic Graph), :
, , hg parents, hg log.
hg parents
hg log
, , (hg pull ; hg update), . /, , - - , , .
hg pull ; hg update
, hg log, , , , - , - - .
, .
. , .
Mercurial , , , , , .
( ) - : . Mercurial , X:Y " X Y ()". , , .
X:Y
Use X::Yinstead, which gives you changes that are descendants of X and ancestors of Y, i.e. he follows the branches in history.
X::Y