<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" 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"><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6000.16525" name=GENERATOR><o:SmartTagType
name="place"
namespaceuri="urn:schemas-microsoft-com:office:smarttags"></o:SmartTagType><!--[if !mso]>
<STYLE>st1\:* {
        BEHAVIOR: url(#default#ieooui)
}
</STYLE>
<![endif]-->
<STYLE>@page Section1 {size: 21.0cm 842.0pt; margin: 72.0pt 89.85pt 72.0pt 89.85pt; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline
}
P.MsoAutoSig {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
LI.MsoAutoSig {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.MsoAutoSig {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
SPAN.EmailStyle17 {
        COLOR: windowtext; FONT-FAMILY: Arial; mso-style-type: personal-compose
}
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 vLink=purple link=blue>
<DIV dir=ltr align=left><SPAN class=411353522-25092007><FONT face=Arial
color=#0000ff size=2>Some quick thoughts.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=411353522-25092007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=411353522-25092007><FONT face=Arial
color=#0000ff size=2>We've just made the move from VSS to Subversion (with
TortoiseSVN).</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=411353522-25092007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=411353522-25092007><FONT face=Arial
color=#0000ff size=2>We've got rid of all our shared files. There were
only a few, so we've put them in a common folder. </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=411353522-25092007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=411353522-25092007><FONT face=Arial
color=#0000ff size=2>I suppose an alternative if you've been making extensive
use of shared files, would be to put them in a separate repository, and use an
svn:externals property to pull the shared stuff from the separate repository
into an appropriate folder in the working copy of each of your other
repositories.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=411353522-25092007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=411353522-25092007><FONT face=Arial
color=#0000ff size=2>Also, my understanding is that Subversion locks aren't
actually locks as such. They're more an indication that another user is
currently working on a file, but there's apparently nothing in Subversion which
will actually prevent multiple developers from ignoring that lock if they wish,
and modifying and committing changes to a file "locked" by somebody else.
This is my understanding so far; we haven't got far enough into it to have
experienced that in anger.</FONT></SPAN></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=411353522-25092007>HTH,</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=411353522-25092007></SPAN></FONT> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=411353522-25092007>Conor</SPAN></FONT></DIV>
<DIV><BR></DIV>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
</DIV>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT size=2><FONT
face=Tahoma><B>From:</B> delphi-bounces@delphi.org.nz
[mailto:delphi-bounces@delphi.org.nz] <B>On Behalf Of </B>David Brennan<BR><SPAN
class=411353522-25092007><FONT face=Arial
color=#0000ff> </FONT></SPAN></FONT></FONT></DIV>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT size=2><SPAN
lang=EN-NZ style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">I’m interested in hearing
how people use their source control. <o:p></o:p></SPAN></FONT></DIV>
<DIV class=Section1>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; 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 face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; 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 face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">So the
questions:<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; 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 face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; 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 face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Some thoughts on question
2:<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; 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 face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; 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 face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">So… what’s a developer to do!?
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Cheers,<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">David.<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-NZ
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoAutoSig><FONT face=Arial size=2><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN lang=EN-NZ
style="FONT-SIZE: 12pt"><o:p> </o:p></SPAN></FONT></P></DIV></BODY></HTML>