1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml">
5 <style type=
"text/css"> /* <![CDATA[ */
6 @import
"../branding/css/tigris.css";
7 @import
"../branding/css/inst.css";
9 <link rel=
"stylesheet" type=
"text/css" media=
"print"
10 href=
"../branding/css/print.css"/>
11 <script type=
"text/javascript" src=
"../branding/scripts/tigris.js"></script>
12 <title>CollabNet Merge Tracking Summit Survey
</title>
14 <style type=
"text/css">
15 .question { color: grey
; }
22 <h2>CollabNet Merge Tracking Summit Survey
</h2>
24 <p>Responses to CollabNet's pre-
<a href=
"summit.html">summit
</a>
25 questionnaire are given below. The respondents are anonymous,
26 but we indicate what business each is in.
</p>
29 <div class=
"h3" id=
"web-info-services">
30 <h3>Responses from a
<i>Web Information Services
</i> company
</h3>
32 <p class=
"question">What tools you have used previously had merge
33 tracking features, and did you like them? Why or why not?
</p>
35 <div class=
"answer"><p>Perforce. Its
"integration" feature works very
36 well at tracking what has been merged between branches. It can merge
37 portions, or entire changelists.
</p>
39 <p>P4 branches suck, but the integrate between them works great
40 because P4 remembers the associations between the trunk and the
41 branch, so it knows how to pair up the files for merging.
</p></div>
43 <p class=
"question">What tasks did you use those features for?
44 (Define
"merge tracking" as broadly as you need to answer this --
45 we're more interested in the tasks and how to make them easier than in
46 niceties of categorization.)
</p>
48 <div class=
"answer"><p>We use few development branches, but when we
49 do: the integrate command keeps the branch up to date w.r.t the
50 trunk. The integrate command is also how we bring stuff *back* to the
51 trunk. Since the branch knows that revs N-M were merged onto the
52 branch, it won't try to reapply them to the trunk. You just get your
53 changes brought to trunk.
</p>
55 <p>We also use branches for tracking releases. The integrations bring
56 over all changes from trunk to the release branch. In many cases,
57 we'll cherry pick specific changelists from trunk over to the release
60 <p class=
"question">If you have used Subversion, what tasks do you
61 feel would have been easier with merge tracking functionality? What
62 were you trying to accomplish, and how would you have liked Subversion
63 to behave to help you accomplish it?
</p>
65 <div class=
"answer"><p>My work with Subversion has never involved heavy
66 branch work (and my company doesn't use svn).
</p></div>
68 <p class=
"question">What version control tools have you had experience
71 <div class=
"answer"><p>CVS, SVN, rcs, Perforce, VSS
</p></div>
73 <p class=
"question">What does your organization use branches for?
74 Select all that apply:
76 a) Maintenance/releases
77 b) Experimental efforts
78 c) Customized versions for customers
79 d) Other (describe)
</p>
81 <div class=
"answer"><p>Maintenance/release, and some long-term dev
82 branches. We don't use them for experimental or for customer-specific
85 <p class=
"question">What is the size of your organization's data set
86 and what is the number of branches in your projects?
</p>
88 <div class=
"answer"><p>Big :-). I know svn can handle our size tho.
</p></div>
90 <p class=
"question">Summarize your general branch and development
93 <div class=
"answer"><p>See above.
</p></div>
95 </div> <!-- web-info-services -->
97 <div class=
"h3" id=
"desktop-software">
98 <h3>Responses from a
<i>Desktop Software
</i> company
</h3>
100 <p class=
"question">What tools you have used previously had merge
101 tracking features, and did you like them? Why or why not?
</p>
103 <div class=
"answer"><p>ClearCase: Likes:
3-way merge editor; merge
104 info recorded in version tree; graphical display of version tree with
105 merge
"hyperlinks"; use labels to identify file sets. Dislikes: works
106 only on single files, not on group of files. Impossible to know what
107 changed between two releases (I needed to create my own tool that
108 analyzed the output of
"lsvtree" command).
</p>
110 <p>Perforce: Still learning all the features. I cannot find an easy
111 way to display the branch tree, when a branch was created, when files
112 were merged. So far, I need to look at a lot of (text) history data
113 and create a merge tracking graph by hand. I may need to write my own
114 tool to do this analysis, similar to ClearCase.
</p></div>
116 <p class=
"question">What tasks did you use those features for?
117 (Define
"merge tracking" as broadly as you need to answer this --
118 we're more interested in the tasks and how to make them easier than in
119 niceties of categorization.)
</p>
121 <div class=
"answer"><p>Basically I would like to know at a glace which
122 features/fixes are left out of a certain version/subtree. Too many
123 times in ClearCase we had a bug fixed on a branch but not in the main
124 trunk because a merge policy was not enforced. After we started to
125 merge all the hanging branches, the stability of the product improved
126 considerably. We also prevented any engineers except the Architects
127 from checking code into the main trunk, and have an e-mail sent if any
128 non-authorized person attempted to check into the main trunk.
</p>
130 <p>The same for merges from the main trunk to working branches, so
131 that one can know how different is the branch from the main trunk
132 (i.e. how much work it will be to merge it back).
</p></div>
134 <p class=
"question">If you have used Subversion, what tasks do you
135 feel would have been easier with merge tracking functionality? What
136 were you trying to accomplish, and how would you have liked Subversion
137 to behave to help you accomplish it?
</p>
139 <div class=
"answer"><p>We used Subversion for a large C++ project with
140 3 branches alive at any given time. We mostly used the
"update"
141 command and automerge before a commit to the same branch. We never
142 automatically merged across branches. All cross-merges were done by
143 hand using a
3rd party tool (Araxis Merge).
</p>
145 <p>I didn't like the graphical representation of the history of a
146 file, which was confusing and almost never useful. Subversion does not
147 record info about merges, so each engineer was forced to do double
148 work: fix a bug on the release branch, and at the same time fix the
149 same bug in the next release (development) branch. This was enforced
150 in order to make sure that no bug fix was only done on the branch and
151 never merged back to main. Because of all of this, we tried to keep
152 the number of branches down to a minimum.
</p></div>
154 <p class=
"question">What version control tools have you had experience
157 <div class=
"answer"><p>ClearCase: see above
</p>
159 <p>SourceSafe : Never used for branching/merging, because it was
160 unreliable and sometimes it corrupted the source repository. After
161 finding the corruption/inconsistent state problems we switched to
164 <p>Subversion: see above
</p>
168 <p class=
"question">What does your organization use branches for?
169 Select all that apply:
171 a) Maintenance/releases
172 b) Experimental efforts
173 c) Customized versions for customers
174 d) Other (describe)
</p>
176 <div class=
"answer"><p>A,b,c
</p></div>
178 <p class=
"question">What is the size of your organization's data set
179 and what is the number of branches in your projects?
</p>
181 <div class=
"answer"><p>Minimal data set is approx.
600Mb (core), but could
182 be much bigger if other components are added (tools, tests etc.)
</p></div>
184 <p class=
"question">Summarize your general branch and development
187 <div class=
"answer"><p>One main branch tracks the official (public)
188 development of new code. Personal branches are used to implement new
189 features and are subject to periodical merges from the main
190 trunk. When the new feature is ready, it is merged back to the main
191 trunk or possibly to one active release branch.
</p>
193 <p>[Release branches are created when the main trunk is ready for the
194 next release. Release branches receive bug fixes and are these fixes
195 are usually automatically merged to the main trunk.]
</p></div>
197 </div> <!-- desktop-software -->
200 <div class=
"h3" id=
"medical-systems">
201 <h3>Responses from a
<i>Medical Systems
</i> company
</h3>
203 <p class=
"question">What tools you have used previously had merge
204 tracking features, and did you like them? Why or why not?
</p>
206 <div class=
"answer"><p>We currently use ClearCase with UCM. Developers
207 like the graph tool, the simple merging, the adding of merge arrows
208 when an actual merge is not needed, the ability to see where items
209 came from or where thy where merged, and the ability to trace who
210 actually made the change.
</p>
212 <p>It's dog slow and hard to script nicely in order to get a daily
213 view if everything from one branch has been merged to another. Also it
214 is not
100% reliable and has its share of problems.
</p></div>
216 <p class=
"question">What tasks did you use those features for?
217 (Define
"merge tracking" as broadly as you need to answer this --
218 we're more interested in the tasks and how to make them easier than in
219 niceties of categorization.)
</p>
221 <div class=
"answer"><p>As a medical device company we have to provide
222 trace-ability on a number of aspects, in order to prove that the final
223 product has been made with consideration of prior products and in a
224 good fashion. This is a lot easier with (almost requires) merge
225 tracking, so that we can trace any change anywhere, know who did it,
226 and when. We also have to maintain code for
10-
12 years, which implies
227 a lot of versions and thus a lot of merging, so having merging being
228 as simple as possible is essential.
</p>
230 <p>Merge tracking tasks are:
</p>
232 <li>Easy merging of development work from a development branch to
233 the main archive
</li>
235 <li>Ability to trace a change from any branch to the branch where it
236 was originally done. And as a part of this identify the original
239 <li>Ability to see what branches a change has been merged to.
</li>
241 <li>Ensuring that all changes made in an older project have been
242 merged to a newer project.
</li>
244 <li>Daily merging of changes without repeating old merges or having
245 to specify in detail what exactly to merge.
</li>
248 <p class=
"question">If you have used Subversion, what tasks do you
249 feel would have been easier with merge tracking functionality? What
250 were you trying to accomplish, and how would you have liked Subversion
251 to behave to help you accomplish it?
</p>
255 <li>Basic merging of changes from one project branch to another is
256 rather painful, as one has to remember what changes where merged the
259 <li>When looking at a merged change set to see who made a particular
260 change this is not possible.
</li>
262 <li>When trying to identify what branches a change has been merged
263 to this is not possible.
</li>
265 <li>When trying to identify where a merged change came from this is
268 <li>When merging the already poor information on moves/renames are
269 completely lost.
</li>
272 <p class=
"question">What version control tools have you had experience
275 <div class=
"answer"><p>Mainly UCM and base ClearCase.
</p></div>
277 <p class=
"question">What does your organization use branches for?
278 Select all that apply:
280 a) Maintenance/releases
281 b) Experimental efforts
282 c) Customized versions for customers
283 d) Other (describe)
</p>
285 <div class=
"answer"><p>A, B, C, and D. For D the main usage is developer
286 branches used as a part of UCM.
</p></div>
288 <p class=
"question">What is the size of your organization's data set
289 and what is the number of branches in your projects?
</p>
291 <div class=
"answer"><p>The current data set is about
800-
1000 MB and we
292 have about
12 project branches and about
100 developer branches.
</p></div>
294 <p class=
"question">Summarize your general branch and development
297 <div class=
"answer"><p>The current setup starts with a main archive from
298 which each main project archive is created. The main archive (MIP) is
299 only used to merge the latest project into when a new project needs to
300 be created. The project archives (MIP ?.?V1) are created when the
301 project starts (one new project every half year) and kept alive for as
302 long as
10-
12 years depending on customers usage and FDA regulations.
303 On each project branch there are MultiSite ClearCase stream, from
304 which each developer has one or more development streams. When a
305 project decides to make release (first one after half a year and then
306 based on customer demands) a release branch is created (MIP ?.?V1L?).
307 New versions of the project archives (MIP ?.?V?) may be created if
308 needed for customer specific bug fixing and isolation. This policy
309 does not scale and is being avoided.
</p></div>
311 </div> <!-- medical-systems -->
314 <div class=
"h3" id=
"investment-banking">
315 <h3>Responses from an
<i>Investment Banking
</i> company
</h3>
317 <p class=
"question">What tools you have used previously had merge
318 tracking features, and did you like them? Why or why not?
</p>
320 <div class=
"answer"><p>Perforce. My memory is fuzzy, but I remember not
321 being annoyed by it.
</p></div>
323 <p class=
"question">What tasks did you use those features for?
324 (Define
"merge tracking" as broadly as you need to answer this --
325 we're more interested in the tasks and how to make them easier than in
326 niceties of categorization.)
</p>
328 <div class=
"answer"><p>Rolling changes from a branch into the
331 <p class=
"question">If you have used Subversion, what tasks do you
332 feel would have been easier with merge tracking functionality? What
333 were you trying to accomplish, and how would you have liked Subversion
334 to behave to help you accomplish it?
</p>
336 <div class=
"answer"><p>I have a branch and a mainline. I want to roll all
337 changes from the branch into the mainline- then I want to come back
338 later and pick up more changes. I don't want to have to think about
339 what I've already done. It would be ideal if I saw the history from
340 the branch appear in the history for the mainline, but that's going
341 over the top a bit. I'd be okay if I ended up with an automatically
342 generated log message that tells me that the guy who did the merge
343 isn't the guy who wrote the code and that I can find the real history
344 for the changes on the branch...
</p></div>
346 <p class=
"question">What version control tools have you had experience
349 <div class=
"answer"><p>p4, cvs, vss (*sigh*)
</p></div>
351 <p class=
"question">What does your organization use branches for?
352 Select all that apply:
354 a) Maintenance/releases
355 b) Experimental efforts
356 c) Customized versions for customers
357 d) Other (describe)
</p>
359 <div class=
"answer"><p>mostly a, occasionally b
</p></div>
361 <p class=
"question">What is the size of your organization's data set
362 and what is the number of branches in your projects?
</p>
364 <div class=
"answer"><p>too many to count.
</p></div>
366 <p class=
"question">Summarize your general branch and development
369 <div class=
"answer"><p>Our branch strategy is minimize branches and their
370 associated overhead. We create branches only when we have a past tag
371 that needs work or if we really need it for parallel development.
372 Branches are a sometimes neccessary evil. People always have a
373 tendency to make a mess with them. If anything, the most important
374 part of merge tracking is to protect people from themselves. Warn
375 them when they're about to double merge or do something eqally
376 inclined to cause pain.
</p></div>
378 </div> <!-- investment-banking -->
380 <div class=
"h3" id=
"financial-information">
381 <h3>Responses from a
<i>Financial Information
</i> company
</h3>
383 <p class=
"question">What tools you have used previously had merge
384 tracking features, and did you like them? Why or why not?
</p>
386 <div class=
"answer"><p>Pretty much just base Rational ClearCase -
387 experimented with UCM a bit (didn't like the posted delivery bit)
</p>
389 <p>Nearly all merge tracking done through the CC merge manager. Some
390 tracking done by running findmerge commands and logging results.
</p>
392 <p>Like the CC merge manager gui and the flexibility of choosing
393 between branch, label or view configuration. Do not like the
394 inability to export data from the merge manager into files (for
395 example to export the list of files merged for a report)
</p></div>
397 <p class=
"question">What tasks did you use those features for?
398 (Define
"merge tracking" as broadly as you need to answer this --
399 we're more interested in the tasks and how to make them easier than in
400 niceties of categorization.)
</p>
402 <div class=
"answer"><p>Used the features to first preview potential
403 candidates that would merge between branches and then migrate code
404 changes from branch to branch.
</p>
406 <p>Previews used to:
</p>
408 <p>1) Provide evidence of needed merges so that merge
409 activities could be better planned.
</p>
411 <p>Code migrations used to:
</p>
413 <p>1) provide baselines for new development
416 <p>2) Rebase existing development efforts with
417 production changes
</p></div>
419 <p class=
"question">If you have used Subversion, what tasks do you
420 feel would have been easier with merge tracking functionality? What
421 were you trying to accomplish, and how would you have liked Subversion
422 to behave to help you accomplish it?
</p>
424 <div class=
"answer"><p>I have not really used Subversion much at all. I
425 did not find it very easy to figure out how to actually do a merge in
426 Subversion - it seemed very cryptic in terms of trying to decide where
427 the start and end points of a merge were. I would like it to be
428 easier to merge from well defined points on a given branch (e.g. merge
429 from a label) and I would like to have reports of everything that
430 actually merged. I would also like the ability to preview a merge,
431 getting a listing of potential merge candidates without having to
432 actually perform a merge (note: CC does this in part but it requires
433 merging of directory elements - this is acceptable to me as I can
434 simply cancel the checkout of the directory elements once a preview
435 has been generated)
</p></div>
437 <p class=
"question">What version control tools have you had experience
440 <div class=
"answer"><p>RCS
</p>
442 <p>Rational ClearCase
</p></div>
444 <p class=
"question">What does your organization use branches for?
445 Select all that apply:
<!-- the rest of this doesn't get nicely
446 formatted in the browser, but that's
449 a) Maintenance/releases
450 b) Experimental efforts
451 c) Customized versions for customers
452 d) Other (describe)
</p>
454 <div class=
"answer"><p>How about e) all of the above? We primarily uses
455 branches for a) but we allow for local experiment branches and we
456 reserve the right to branch for a variety of reasons. We look at
457 branches as ways to isolate changes from one another and there are
458 lots of reasons we might want to do that. Our projects and releases
459 tend to be customer oriented so project requirements can differ
460 significantly from one to another.
</p></div>
462 <p class=
"question"> What is the size of your organization's data set
463 and what is the number of branches in your projects?
</p>
465 <div class=
"answer"><p>Our data set currently consists of
23 ClearCase
466 Vobs, the largest of these is around
15 G. Of these there are several
467 that have multiple branches and are merged with regularity. The
468 largest of these contains approximately
9000 elements and has as many
469 as
4-
5 project branches active at any one time (main is not considered
470 a project branch). Each branch represents a single development effort
471 (release) and the same branch type can exist in multiple Vobs. There
472 can be multiple projects that encompass a development effort.
</p></div>
474 <p class=
"question">Summarize your general branch and development
477 <div class=
"answer"><p>Our general strategy is to have the main branch
478 always represent production code and to branch as much as possible
479 from stable baselines off the main branch. We do allow for cascading
480 when the need arises but we prefer to not let branches get more than
481 two levels deep. New development efforts are given a branch when
482 needed. Once a branch goes into production it is merged to main and
483 any other in-progress development efforts are rebased accordingly.
484 The branch that has gone into production then becomes the
"emergency
485 fix" or
"patch branch" so that emergency fixes can be made if
488 </div> <!-- financial-information -->