| | 163 | |
| | 164 | Status |
| | 165 | ###### |
| | 166 | |
| | 167 | Unfortunately I wasn't able to keep up the good work I started many months ago in a dusty branch of Tailor... |
| | 168 | |
| | 169 | With Zooko's recipe as a possible goal, I started hacking the ConfigurationFile format to allow an easier switch of the source and target backends, simply by tagging a project as ''two-ways'' in its section. This is something that shall be kept, augmented with a more general way of "linking" projects and repositories each other (so that it becomes easier to share and reuse common settings). |
| | 170 | |
| | 171 | The pending (read never finished) part of changes were |
| | 172 | |
| | 173 | * a different way of splitting the repositories classes than that landed in master repo |
| | 174 | * first reluctant steps toward moving a few peculiarities from the DualWorkingDir to the SourceRepository and TargetRepository abstract and concrete subclasses |
| | 175 | * the highest level of Zooko's recipe, based on the new ability of going ''one'' patch at a time |
| | 176 | |
| | 177 | I'm gonna trash most of these changes. |
| | 178 | |
| | 179 | Given that my own need of a TwoWaySync dropped quite drastically once I felt in love with Darcs, maybe I don't think often enough about the issue to focus it well enough, so I'll write a few notes here. |
| | 180 | |
| | 181 | The typical case |
| | 182 | ================ |
| | 183 | |
| | 184 | A developer wants to contribute to a well known software which is being developed within a master Subversion repository. He will spend his time mostly on little fixes here and there, and developing a bit more intricated part. He doesn't want to step on main developers feet, so he would like to present clean and well formed patches. Normally, he'd create a branch in the Subversion repository, maybe named after his own name. |
| | 185 | |
| | 186 | Luckily, he lurked something about Darcs, and starts using it doing the most basic form of TwoWaySync: |
| | 187 | |
| | 188 | 1. Check out a current working dir:: |
| | 189 | |
| | 190 | $ svn co http://svn.server/project/trunk project |
| | 191 | |
| | 192 | 2. Put everything under darcs too:: |
| | 193 | |
| | 194 | $ cd project |
| | 195 | $ darcs init |
| | 196 | $ darcs add --recursive * |
| | 197 | $ darcs record -a -m "My own hacking start point, from revision r1234" |
| | 198 | |
| | 199 | 3. Tag this initial state: |
| | 200 | |
| | 201 | $ darcs tag initial |
| | 202 | |
| | 203 | 4. Until satisfied |
| | 204 | |
| | 205 | a. Keep up-to-date:: |
| | 206 | |
| | 207 | $ svn update |
| | 208 | |
| | 209 | b. Hack around, resolving eventual conflicts, maybe even amending already recorded Darcs patches |
| | 210 | |
| | 211 | c. Record new patches in Darcs, or unrecord and redo some previous ones |
| | 212 | |
| | 213 | 5. Commit the whole work to the master repository:: |
| | 214 | |
| | 215 | $ darcs changes --summary --from-tag=initial > /tmp/clog |
| | 216 | $ svn ci -F /tmp/clog . |
| | 217 | |
| | 218 | Another use case |
| | 219 | ================ |
| | 220 | |
| | 221 | Another guy develops his products extending and customizing a set of free-software components. He does not appreciate the fact that each one uses a different kind of version control, so he seeks a way of staying as neutral as possible, keeping together his own patches and those coming down from upstream, possibly collaborating with them on some aspects and thus sending now and then a few fixes upstream. |
| | 222 | |
| | 223 | This is harder, because: |
| | 224 | |
| | 225 | 1. In this context, obviously the "branches" must survive for a potentially long time |
| | 226 | 2. Not all local patches are sent to the other side |
| | 227 | 3. Learning and dealing with different types of VC may not be so funny |
| | 228 | |
| | 229 | Can tailor be of any help? |
| | 230 | ========================== |
| | 231 | |
| | 232 | ... to be continued |
| | 233 | |