<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="place"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p.MsoAutoSig, li.MsoAutoSig, div.MsoAutoSig
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:21.0cm 842.0pt;
        margin:72.0pt 89.85pt 72.0pt 89.85pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>Hi,<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>I’m interested in hearing how people use their
source control. <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>We currently use Visual SourceSafe (VSS) which it
turns out (after some comparison with other options) is quite nice in terms of
core feature set. However is isn’t a true database with atomic commits so
there is that constant risk of database corruption if a network connection
dies. We’ve been pretty luck so far but we have had one fairly minor
scare. It also lacks strong support for branching and changeset type changes.
So I can certainly see benefits in moving to a more powerful tool. The problem
is that the alternatives all seem to be missing one or more VSS features. For
example I don’t like Subversion/CVS because their lack of explicit checkouts
means you can’t tell which developers are working on a particular file
(unless you use Subversion locks but then only one developer can edit the file
at once, unlike VSS’s multiple checkouts).<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>So the current favourite is probably Perforce. I know
several companies on DUG (most notably Accredo) use and love Perforce. It looks
great. Costs a bit but we can probably handle that. The one feature it appears
to be missing is Shared Files. To explain, VSS allows you to share a file
between multiple folders. We have maybe a dozen <st1:place w:st="on">Delphi</st1:place>
projects and most of our source files are used by more than one project. That’s
fine, we put each project into a different VSS folder and share the files to
the projects which require them. Unfortunately this appears to be a VSS
specific ability.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>So the questions:<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>1. Does anyone know how to reliably achieve similar shared
file between folders functionality in Perforce? <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>2. Most development companies must have similar
shared source files. How do you structure your projects and source files? (Note:
I am talking about source files used by projects here, not files which are
compiled into VCL packages) <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>Some thoughts on question 2:<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>One option is to just put all files into a single
directory. No need to share now! However this means that projects could easily
end up compiling in files you don’t think they are (or should be) using because
<st1:place w:st="on">Delphi</st1:place> will always find the file. With our
current separate folders scheme there is some control and you can be fairly
sure whether a project is or is not using a source file.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>Another option would be to put the projects in one
directory, the source files in one or more other directories, and then get the
projects to reference each source file by relative path. This way each project
will only be able to compile in files which are specifically referenced in the
project file so you can easily check which files are being used. The downside
of this (and the previous option too) is that each project is directly sharing the
files with the others. So if you are making multiple changes in one project over
the period of a week or so then it quite probable that none of your other
projects will compile until you are finished because they will be trying to compile
in your changed files. This is particularly frustrating if you need to make a
small unrelated change to another project midway through the week. <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>So… what’s a developer to do!? <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>Cheers,<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'>David.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-NZ style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoAutoSig><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-NZ
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</div>
</body>
</html>