author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
Tue, 27 Mar 2012 17:39:34 +0200 | |
changeset 172 | 9cbb6756485c |
parent 167 | 64c886d26aab |
child 181 | 35baa2a80073 |
permissions | -rw-r--r-- |
167
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
1 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
2 |
------------------------------------------------ |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
3 |
Collaboration Using Evolve: A user story |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
4 |
------------------------------------------------ |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
5 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
6 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
7 |
After having written some code for ticket #42, M W. start a patch (this |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
8 |
will be kind of like a 'work-in-progress' checkpoint initially):: |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
9 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
10 |
$ ci -m '[entities] remove magic' |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
11 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
12 |
Instant patch ! Note how the default phase of this changeset is (still) |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
13 |
in "draft" state. |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
14 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
15 |
This is easily checkable:: |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
16 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
17 |
$ hg phase tip |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
18 |
827: draft |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
19 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
20 |
See ? Until the day it becomes a "public" changeset, this can be altered |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
21 |
to no end. How ? It happens with an explicit:: |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
22 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
23 |
$ hg phase -p |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
24 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
25 |
In practice, pushing to a "publishing" repository can also turn draft |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
26 |
changesets into public ones. Older mercurial releases are automatically |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
27 |
"publishing" since they do not have the notion of non-public changesets |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
28 |
(or mutable history). |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
29 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
30 |
In the transition ... phase from older mercurial servers, this will |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
31 |
happen often, so be careful. |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
32 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
33 |
Now let's come back to our patch. Next hour sees good progress and W. |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
34 |
wants to complete the patch with the recent stuff (all that's shown by |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
35 |
an "hg diff") to share with a co-worker (let's call him C.W.):: |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
36 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
37 |
$ hg amend -m '[entities] fix frobulator (closes #42)' |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
38 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
39 |
Note that we also fix the commit message. (For recovering mq users: this |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
40 |
is just like "hg qrefresh -m"). |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
41 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
42 |
Before leaving, let's push to the central shared repository. That will |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
43 |
give C.W. the signal that something is ripe for review / further amendments:: |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
44 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
45 |
$ hg push # was done with a modern mercurial, draft phase is preserved |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
46 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
47 |
The next day, Mr C.W, which arrives very very early, can immediately |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
48 |
work out some glitches in the patch. |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
49 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
50 |
He then starts another one, for ticket #43 and finally commits it. |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
51 |
Then, as original worker arrives, he pushes his stuff. |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
52 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
53 |
M W., now equipped with enough properly sugared coffee to survive the |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
54 |
next two hours:: |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
55 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
56 |
$ hg pull |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
57 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
58 |
Then:: |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
59 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
60 |
$ hg up "tip ~ 1" |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
61 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
62 |
brings him to yesterday's patch. Indeed the patch serial number has |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
63 |
increased (827 still exists but has been obsoleted). |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
64 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
65 |
He understands that his original patch has been altered. But how did it |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
66 |
evolve ? |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
67 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
68 |
The enhanced hgview shows the two patches. By default only the most |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
69 |
recent version of a patch is shown. |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
70 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
71 |
Now, when W. installed the mutable-history extensions, he got an alias |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
72 |
that allows him to see the diff between two amendments, defined like this:: |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
73 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
74 |
odiff=diff --rev 'limit(obsparents(.),1)' --rev . |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
75 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
76 |
He can see exactly how C.W. amended his work. |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
77 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
78 |
* odiff |
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
79 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
80 |
|
64c886d26aab
add auc user story
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
81 |