Fossil SCM

Initial check-in of the documentation for the proposed VCCP. Very incomplete. This is just to save my work.

drh 2019-03-09 21:57 trunk
Commit b37bb7dc79aacde3e0b3ae0b021445c266e1d9845cd52c052dee602aeee21819

Binary file

Binary file

Binary file

Binary file

--- a/www/vccp/intro.md
+++ b/www/vccp/intro.md
@@ -0,0 +1,135 @@
1
+Version Control Collaboration Protocol
2
+======================================
3
+
4
+<blockquote><center style='background: yellow; border: 1px solid black;'>
5
+This document is a work in progress.<br>
6
+The last update was on 2019-03-09.<br>
7
+Check back later for updates.
8
+</center></blockquote>
9
+
10
+1.0 Introduction
11
+----------------
12
+
13
+The Version Control Collaboration Protocol or VCCP is an attempt to make
14
+it easier for developers to collaborate even when they are using different
15
+version control systems.
16
+
17
+For example, sup
18
+[BDFL](https://en.wikipedia.org/wiki/Benevolent_dictator_for_life)er and principal maintainer
19
+for the fictional "BambooCoffee" project, prefers using the
20
+[Mercurial](https://www.mercurial-scm.org/) version control system,
21
+but two of her clients, Bob and Cindy, know nothing but
22
+[Git](https://www.git-scm.org/) and steadfastly refuse to
23
+type any co, and an important
24
+collaborator, Dave, really prefers [Bazaar](bazaar.canonical.com/).
25
+The VCCP is designed to make it relatively easy and painless
26
+for Alice to set up Git and Bazaar mirrors of her Mercurial
27
+repository so that Bob, Cindy, and Dave can all use the tools with
28
+which they are most familiar.
29
+
30
+<center>![](diagram-1.jpg)</center>
31
+
32
+Assuming all the servers speak VCCP (which is not the case at the
33
+time of this writing, but we hope to encourage that for the future)
34
+then whenever Alice checks in a new change to her primary repository
35
+(here labeled "Truth") that repository sends a VCCP message to the
36
+two mirrors which causes them to pick up the changes as well.
37
+
38
+### 1.1 Bidirectional Collaboration
39
+
40
+The diagram above shows that all changes originate from Alice and
41
+that Bob, Cindy, and David are only consumers. If Cindy wanted to
42
+make a change to BambooCoffee, she would have to do that with a backchannel,
43
+such as sending a patch via email to Alice and then get Alice to check
44
+in the change.
45
+
46
+But VCCP also support bidirectional collaboration.
47
+
48
+<center>![](diagram-2.jpg)</center>
49
+
50
+If Cindy is a frequent contributor, and assuming that Git and Mercurial
51
+are compatible version control systems (which I believe they are) then
52
+VCCP can be used to move information from Truth to Mirror-1 and from Mirror-1
53
+back to Truth. In that configuration, Cindy would be able to check in her
54
+changes using the "git" command. The Mirror-1 server would then send a
55
+VCCP message back to Truth containing Cindy's changes. Truth would then
56
+relay those changes over to Mirror-2 where Dave could see them as well.
57
+
58
+### 1.2 Client-Mirror versus Server-Mirror
59
+
60
+VCCP allows the mirrors to be set up Further suppose that an important
61
+collaborator, Dave, really prefers [Bazaar](bazaar.canonical.com/).
62
+The VCCP is designed to make it relatively easy and painless
63
+for Alice to set up Git and Bazaar mirrors of her Mercurial
64
+repository so that Bob, Cindy, and Dave can all use the tools
65
+they are most familiar with.
66
+
67
+<center>![](diagram-1.jpg)</center>
68
+
69
+Assuming all the servers speak VCCP (which is not the case at the
70
+time of this writing, but we hope to encouralice checks in a new cha ge to her primary repository
71
+(here labeled "Truth") that repository sends a VCCP message to the
72
+two mirrors which causes them to pick up the changes as well.
73
+
74
+### 1.1 Bidirectional Collaboration
75
+
76
+The diagram above shows that all changes originate from Alice and
77
+tht Bob, Cindy, and David are only consumers. If Cindy wanted to
78
+make a change to BambooCoffee, she would have to do that with a backchannel,
79
+such as sending a patch via email to Alice and asking Alice to check
80
+in the change.
81
+
82
+But VCCP also support bidirectional collaboration.
83
+
84
+<center>![](diagram-2.jpg)</center>
85
+
86
+If Cindy is a frequent contributor, and assuming that Git and Mercurial
87
+are compatible version control systems (which I believe they are) then
88
+VCCP can be used to move information from Truth to Mirror-1 and from Mirror-1
89
+back to Truth. In that configuration, Cindy would be able to check ine the preferred approach.
90
+
91
+2.0 Minimum Requirements
92
+------------------------
93
+
94
+The VCCP is modeled after the Git fast-export and fast-import protocol.
95
+That is to say, VCCP thinks in terms of "check-ins" with each check-in
96
+consisting of a number of files (or "Blobs" in git-speak). Any version
97
+control system that wants to use VCCP needs to also be able to think
98
+in those terms.
99
+
100
+Since VCCP is modeled after fast-import, it has the concept of a tag.
101
+But the use of tags is optional and
102
+VCCP will work with systems that do not support tags.
103
+
104
+VCCP assumes that most check-ins have a parent check-in from which it
105
+was derived. Obviously, the first check-in for a project does not have
106
+a parent, but all the others should. Check-ins may also identify
107
+zero or more "merge" parents, and zero or more "cherrypick" ancestors.
108
+But the merges and cherrypicks can be ignored on systems that do not
109
+support those concept,ersion Control Collaboration Protocol
110
+======================================
111
+
112
+<blockquote><center style='background: yellow; border: 1px solid black;'>
113
+This document is a work in progress.<br>
114
+The last update was on 2019-03-13.<br>
115
+Check back later for updates.
116
+</center></blockquote>
117
+
118
+1.0 Introduction
119
+----------------
120
+
121
+The Version Control Collaboration Protocol or VCCP is an attempt to make
122
+it easier for developers to collaborate even when they are using different
123
+version control systems.
124
+
125
+For example, suppose Alice, the founder and principal maintainer
126
+for the fictional "BambooCoffee" project, prefers using the
127
+[Mercurial](https://www.mercurial-scm.org/) version control system,
128
+but two of her clients, Bob and Cindy, know nothing but
129
+[Git](https://www.git-scm.org/) and steadfastly refuse to
130
+type any command that begins with "hg".
131
+Further suppose that an important
132
+collaborator, Dave, really prefers [Bazaar](bazaation Protocol
133
+======================================
134
+
135
+<blockquote><center style='background: yellow; border
--- a/www/vccp/intro.md
+++ b/www/vccp/intro.md
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/www/vccp/intro.md
+++ b/www/vccp/intro.md
@@ -0,0 +1,135 @@
1 Version Control Collaboration Protocol
2 ======================================
3
4 <blockquote><center style='background: yellow; border: 1px solid black;'>
5 This document is a work in progress.<br>
6 The last update was on 2019-03-09.<br>
7 Check back later for updates.
8 </center></blockquote>
9
10 1.0 Introduction
11 ----------------
12
13 The Version Control Collaboration Protocol or VCCP is an attempt to make
14 it easier for developers to collaborate even when they are using different
15 version control systems.
16
17 For example, sup
18 [BDFL](https://en.wikipedia.org/wiki/Benevolent_dictator_for_life)er and principal maintainer
19 for the fictional "BambooCoffee" project, prefers using the
20 [Mercurial](https://www.mercurial-scm.org/) version control system,
21 but two of her clients, Bob and Cindy, know nothing but
22 [Git](https://www.git-scm.org/) and steadfastly refuse to
23 type any co, and an important
24 collaborator, Dave, really prefers [Bazaar](bazaar.canonical.com/).
25 The VCCP is designed to make it relatively easy and painless
26 for Alice to set up Git and Bazaar mirrors of her Mercurial
27 repository so that Bob, Cindy, and Dave can all use the tools with
28 which they are most familiar.
29
30 <center>![](diagram-1.jpg)</center>
31
32 Assuming all the servers speak VCCP (which is not the case at the
33 time of this writing, but we hope to encourage that for the future)
34 then whenever Alice checks in a new change to her primary repository
35 (here labeled "Truth") that repository sends a VCCP message to the
36 two mirrors which causes them to pick up the changes as well.
37
38 ### 1.1 Bidirectional Collaboration
39
40 The diagram above shows that all changes originate from Alice and
41 that Bob, Cindy, and David are only consumers. If Cindy wanted to
42 make a change to BambooCoffee, she would have to do that with a backchannel,
43 such as sending a patch via email to Alice and then get Alice to check
44 in the change.
45
46 But VCCP also support bidirectional collaboration.
47
48 <center>![](diagram-2.jpg)</center>
49
50 If Cindy is a frequent contributor, and assuming that Git and Mercurial
51 are compatible version control systems (which I believe they are) then
52 VCCP can be used to move information from Truth to Mirror-1 and from Mirror-1
53 back to Truth. In that configuration, Cindy would be able to check in her
54 changes using the "git" command. The Mirror-1 server would then send a
55 VCCP message back to Truth containing Cindy's changes. Truth would then
56 relay those changes over to Mirror-2 where Dave could see them as well.
57
58 ### 1.2 Client-Mirror versus Server-Mirror
59
60 VCCP allows the mirrors to be set up Further suppose that an important
61 collaborator, Dave, really prefers [Bazaar](bazaar.canonical.com/).
62 The VCCP is designed to make it relatively easy and painless
63 for Alice to set up Git and Bazaar mirrors of her Mercurial
64 repository so that Bob, Cindy, and Dave can all use the tools
65 they are most familiar with.
66
67 <center>![](diagram-1.jpg)</center>
68
69 Assuming all the servers speak VCCP (which is not the case at the
70 time of this writing, but we hope to encouralice checks in a new cha ge to her primary repository
71 (here labeled "Truth") that repository sends a VCCP message to the
72 two mirrors which causes them to pick up the changes as well.
73
74 ### 1.1 Bidirectional Collaboration
75
76 The diagram above shows that all changes originate from Alice and
77 tht Bob, Cindy, and David are only consumers. If Cindy wanted to
78 make a change to BambooCoffee, she would have to do that with a backchannel,
79 such as sending a patch via email to Alice and asking Alice to check
80 in the change.
81
82 But VCCP also support bidirectional collaboration.
83
84 <center>![](diagram-2.jpg)</center>
85
86 If Cindy is a frequent contributor, and assuming that Git and Mercurial
87 are compatible version control systems (which I believe they are) then
88 VCCP can be used to move information from Truth to Mirror-1 and from Mirror-1
89 back to Truth. In that configuration, Cindy would be able to check ine the preferred approach.
90
91 2.0 Minimum Requirements
92 ------------------------
93
94 The VCCP is modeled after the Git fast-export and fast-import protocol.
95 That is to say, VCCP thinks in terms of "check-ins" with each check-in
96 consisting of a number of files (or "Blobs" in git-speak). Any version
97 control system that wants to use VCCP needs to also be able to think
98 in those terms.
99
100 Since VCCP is modeled after fast-import, it has the concept of a tag.
101 But the use of tags is optional and
102 VCCP will work with systems that do not support tags.
103
104 VCCP assumes that most check-ins have a parent check-in from which it
105 was derived. Obviously, the first check-in for a project does not have
106 a parent, but all the others should. Check-ins may also identify
107 zero or more "merge" parents, and zero or more "cherrypick" ancestors.
108 But the merges and cherrypicks can be ignored on systems that do not
109 support those concept,ersion Control Collaboration Protocol
110 ======================================
111
112 <blockquote><center style='background: yellow; border: 1px solid black;'>
113 This document is a work in progress.<br>
114 The last update was on 2019-03-13.<br>
115 Check back later for updates.
116 </center></blockquote>
117
118 1.0 Introduction
119 ----------------
120
121 The Version Control Collaboration Protocol or VCCP is an attempt to make
122 it easier for developers to collaborate even when they are using different
123 version control systems.
124
125 For example, suppose Alice, the founder and principal maintainer
126 for the fictional "BambooCoffee" project, prefers using the
127 [Mercurial](https://www.mercurial-scm.org/) version control system,
128 but two of her clients, Bob and Cindy, know nothing but
129 [Git](https://www.git-scm.org/) and steadfastly refuse to
130 type any command that begins with "hg".
131 Further suppose that an important
132 collaborator, Dave, really prefers [Bazaar](bazaation Protocol
133 ======================================
134
135 <blockquote><center style='background: yellow; border

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button