Fossil SCM
Initial check-in of the documentation for the proposed VCCP. Very incomplete. This is just to save my work.
Commit
b37bb7dc79aacde3e0b3ae0b021445c266e1d9845cd52c052dee602aeee21819
Parent
35c8103e6d90413…
5 files changed
+135
Binary file
Binary file
Binary file
Binary file
+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></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></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></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></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></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></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></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></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 |