good version control software for Delphi 2009 [closed] - delphi

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
does anyone have a good idea for what I might use ?

Its not specific to Delphi but SVN is the way to go for version control.
server - subversion (http://subversion.tigris.org/)
windows client - TortoiseSVN (http://tortoisesvn.tigris.org/)

I use Team Coherence, from QSC. This integrates nicely into Delphi (I think the standalone desktop client app itself is written in Delphi too) and it can be used over a network/the web etc.
I'm a 'lone developer' who uses it to get to my source code wherever I am. It does all the obvious source control stuff pretty well (versioning, history, comparisons), and I'm happy with it.
It's not free, but if you want something that really does plug into the Delphi IDE, and that 'understands' Delphi sourcecode and projects (for instance, checking out a form is a single operation - .DFM and .PAS are intelligently linked together in the mind of TC), then it's worth a look. I'm quite happy with it.

All version control systems should work just fine for you. You do not need a specific version control system for Delphi, or any language for that matter.
Some ideas:
Subversion (Central and simple to install and learn)
Mercurial (Distributed and easy to learn)
Git (Distributed; best for Linux, not Windows; does everything)

I have moved away from VSS to Subversion with Tsvn, you can look previous question I asked about replacing the VSS for better VCS with Delphi Moving away from VSS.
And to make the moving to Subversion easy, use VisualSvn server, which is very easy to install and work with.
The good thing about moving to Subversion that next Delphi version will include support to it from inside the IDE.

I use subversion with the jedi integration. I wrote a series of posts on using subversion with Delphi:
http://sourceitsoftware.blogspot.com/2008/07/starting-out-with-delphi-and-subversion.html
http://sourceitsoftware.blogspot.com/2008/07/subversion-server-options.html
http://sourceitsoftware.blogspot.com/2008/07/common-tasks-with-subversion.html
http://sourceitsoftware.blogspot.com/2008/08/subversion-add-ins-for-delphi.html

I would like to recommend Plastic SCM. We used Team Coherance before, but due to multiple reasons (slow, bugs, etc) we have chosen for Plastic SCM: http://www.codicesoftware.com/xpfront.aspx
Very good support (email reaction mostly within 1 hour!) and it has fabulous branch and merging support! Task driven parallel development with multiple developers works much better than traditional version systems like TC, CVS, etc.

I'd recommend a DVCS (Distributed Version Control System). I'm not going to give a specific one to avoid potential flaming, but the big ones are Git, Mercurial, and Bazaar, all of which are quite good.
These allow you the benefit of working offline and working from any computer, while still maintaining version history.
Also, since it's distributed, you don't need some central server, so if a computer crashes, you're still good to go.
Here is a good article about DVCS vs traditional VCS (such as SVN).

First, don't choose your version control system primarily on the level of integration with the IDE!
Subversion, as many have said, is pretty much the de-facto standard for modern version control software.
Personally I just use TortoiseSvn, and don't worry about integration into the IDE.
If you want integration into the IDE, look at SourceConnexion from Epocalipse. They have a D2009 version.
Codegear have hinted that SVN integration could well be in the next release of delphi anyway.

As an earlier poster mentioned Team Coherence, I thought I would add some comments based on my experience of it.
I used Team Coherence (TC) as part of a small team of three to four people for two years, and then we swapped to AccuRev. I would say that for a single developer with simple version control requirements TC would be OK, especially if they use Delphi.
However, (amongst other things) we needed to be able to:
Support mainline development whilst also keeping a release branch for urgent customer bug fixes.
Link items in our bug-tracking system with sets of checked-in changes ("change-set tracking").
We found that using TC to do branching was very confusing. It is much easier to support our branching requirements with AccuRev.
In addition TC didn't support grouping checkins into change-sets, and so it couldn't really fulfil requirement 2.
However, AccuRev is more expensive than TC. Subversion is free, and seems to support branching very well, but as I have only used it for very small projects at home I will leave it to others more experienced with it to recommend it or not.
In short, if you need to support multiple branches, or change-set tracking I would not recommend TC. If, however, your version control requirements are simple (check-in, check-out, version differencing) and you use Delphi, then TC may be an appropriate choice.

The company I work for uses Vault but would I advise it? Well, it's better than VSS that we used before.
We combine this with SourceConneXion which is a Delphi IDE plugin and which supports several source control products, including Vault, Subversion, CVS and whatever else you might think of.
Since we're developing in both Delphi and .NET, these products work quite well for my organisation.
Btw, if you're a single developer and only want one license then Vault is free!

We are using since two years JediVCS (part of the Jedi Proyject). It's stable and work outside the IDE (standalone application) or Integrated with the Delphi IDE.
Work with a lot of servers:
DBISAM 3.x
FlashFiler 2.13 (Open Source version)
Firebird 1.0x, 1.5x, 1.5x embedded (with support for characterset configuration)
Oracle 8.x, 9.x, 10.x
MSSQL 7, 8, 2000 (with both supported security models ("Trusted NT security" or "SQL
based")
MySQL 3.23x, 4.0x, 4.1x
NOTE: Here you can see a video of installation process, the integration with Delphi IDE, Check-in and Check-out files process...
Regards.

Try Plastic SCM together with SourceConneXion integration.
Take a look at the following posts here:
http://codicesoftware.blogspot.com/2008/06/branching-and-merging-with-delphi-part.html
http://codicesoftware.blogspot.com/2008/06/branching-and-merging-with-delphi-part_02.html
Actually it is a very strong combination since Delphi is probably the greatest IDE/language combination for most tasks, and Plastic the strongest for parallel development.

If you are a single developer, then Perforce is a good choice. It's free for 1 or 2 developers. You can use the command line or the gui (P4V) which makes it pretty easy. I've used it for a few years now, and even when I had an issue with it about a year ago, their support was great, treated me like a paying customer, which I'm not. It's easy to set-up, and there's plenty of documentation. It also integrates into other applications like Teamcity and Jira/Fisheye.
Just my 2 cents.

Tortoise SVN
Complicated at first but very reliable

Related

Toolbar 2000 under Delphi XE?

Does the old Toolbar 2000 package (preferably with the TBX extension) compile and work under Delphi XE?
Are anyone using "Tb2k" and TBX these days?
Do TB2K and TBX compile?
Toolbar2000 does. It is used as part of SpTBX (see below.) TBX I'm afraid I don't know - development ceased a few years ago and I upgraded to SpTBX. I would recommend you do the same - it's actively developed / maintained and you probably won't end up asking questions like this about it in a couple of years (hopefully!)
(I know 'upgrade' wasn't what you asked, sorry. It's what I would recommend. I don't like the situation where I'm using third-party code which is no longer maintained, and I have to take that task upon myself and upgrade it each version.)
Is anyone using TBX?
Most people these days do not use TBX - development on it has ceased. Instead, they use SpTBX, developed by Silverpoint Development. It used to be a patch to TBX (so you'd have three layers: TB2K followed by TBX followed by SpTBX) but these days is directly based on TB2K, so it's only two layers.
The installation instructions are easy to follow, and its installer installs TB2K as well.
SpTBX provides extra controls on top of those provided by TB2K, and also provides skin support. It comes with a skin editor if you want to create your own skins. Many of the ones its shipped with I would never use in commercial software, but the Office 2003- and Office 2007-style skins are excellent.
One of the demo SpTBX applications with the Office 2007 Blue skin
Upgrading from TBX: Most TBX components have direct analogues in the SpTBX library, and renaming them in the DFM and form file and opening the form will be a good start. (Or use GExperts.) Some properties and events have changed or gone, which is annoying. I found I could generally figure out how to achieve the same thing pretty easily - it took a day or so to upgrade a large application for me - but you will find it's not a direct smooth transition.
You can download the 2.2.2 sources and modify them by opening the Delphi 2009 package (tb2k_d11.dpk and tb2kdsgn_d11.dpk) files and saving them as a new name, which creates a new copy. Change the NAME SUFFIX from _d11 to _d15, to follow the existing convention, which is useful although a dated technique. For our purposes d15 in this case means a delphi XE package (delphi version 15.0).
Or you can download my copy, which I did this to already (tb2k22_xe.zip). Just open up the project groups, and install the packages. Note that it seems this code is dual licensed, and to "redistribute" such a trivially modified copy of this code, my changes must be licensed under the GPL, and so, to avoid GPL contamination you should email Jordan Russell and ask for permission to relicense these changes/updates under his Toolbar2000 commercial license, if you wish to use them in a closed source commercial license. Or you can repeat the steps I followed, and avoid GPL contamination. Better still, give Jordan Russell $30 and become a paying customer, and prove that the good-old days are not completely gone, when a guy who wrote a nice component for delphi, got people handing him money, left right and center.
I realize this is an old question.
I am still using TB2K in delphi 5 apps. I've also used TBX in combination.
Some people refuse to use newer delphi versions simply because the old delphi products were almost just as good (not quite but still) since they have an infinitely expandable component system.
Doesn't SpTBXLib and TBX violate the Toolbar 2000 licenses considering that it modifies the TB2K without the permission of Jordan Russell? Or did these products get permision from Jordan Russell to release modifications and patches? This all seems to be jumping through a bunch of annoying hoops that a BSD/MIT style license would solve. Even if SpTBXLib and TBX are violating Russell's terms, he's probably okay with it if someone emails him, but I'm not 100 percent certain - it's a bad assumption to make. These projects should clearly say in their README or on their Github site that they have gotten the permission.
Also, I was one of those people who paid Jordan Russell ... to bring back the good old days of delphi developers paying other developers for their work (instead of GPL cult nonsense where programmers go home starving). The trick would be somehow for Russell to offer it BSD while getting paid still, which might prove difficult. It seems the GPL is actually a way for developers to restrict their software, not to free it up.. what a joke.
Free software foundation = Restrictive Software Foundation
One option would be to make it BSD/MIT and ask for donations, but I doubt Jordan Russell would go for it. Might be worth a try. Or if he is only making a few bucks from this every year, then it would be no big deal to just release it BSD. I'm not sure how many copies he sells per year. It's none of our business - but it sort of is in the sense that we are willing to make improvements to his code and not charge money, so we are part of the source too! May the source be with you.
You can check this
I think XE is very similar to D2010
You should check spTBX at http://www.silverpointdevelopment.com
It builds on tb2k without dependancies, installer is there and it works on unicode delphi.

Delphi: Free TSynEdit replacement

What's the best free replacement for TSynEdit? As I can see, it is developed very slow. Want to find some replacement for it. Or, may be, the version from another maintainer.
Need Delphi 2010 compatibility.
SynEdit works fine under D2010. There's one notable bug involving the Enter key not working under certain conditions. A patch for it can be found about halfway down the page on this thread. Search for // GB: BUG FIXED
Aside from that, it should work. Are you having some specific issues with it?
You can try out Scintilla. As of version 2.x it supports "virtual space" (most important feature for me - after syntax highlighting) and has more features like CodeFolding, Annotations http://www.scintilla.org/ScintillaDoc.html#Annotations, MultipleSelections, and many more.
AFAIK there is no wrapper for Delphi that is up-to-date and works with Unicode/D2009+.
I've created a project at http://code.google.com/p/dscintilla/ which should be in 'beta stage' in a week (or so).
I have never used SynEdit myself, but have always believed it to be the best free open-source advanced editor component for Delphi. Because it is open-source, you can yourself alter it to suit your needs.

Single-user source control?

Searching with '[Delphi] "source control"' didn't return much, so here goes: For those of you Delphi programmers working on your own, what source control do you like? I know about TortoiseSVN (which can be used without a server), but I'd like to know if there are better options before choosing it.
Thank you.
SVN will be more than enough as you'll mostly use it for backing up and diff'ing versions.
You can use VisualSVN Server and TortoiseSVN with Delphi IDE Integration. All of these are freeware. If you wish to use any other freeware SCM with Delphi IDE integration you'll need to buy SourceConneXion or Athlant. Also, if you're using D2009 you'll need to convert strings to ansistrings in order to get TortoiseSVN addon for delphi to work.
I use Mercurial, and have used Bazaar and Perforce (free for small teams). All are good, but nowadays I tend to prefer Mercurial. Mercurial comes with its own tortoise
which, while not quite as polished as TortoiseSVN, is perfectly usable:
(source: sourceforge.net)
For users of RAD Studio XE or XE2, Uwe Schuster has published an IDE add-on called Version Insight Plus that adds Mercurial and Git support to the IDE's built in version control support.
For all the systems I have mentioned, no central server is required.
I would recommend Git which is free & open source and:
Doesn't require you to even set a central server even if you want add more developers or machines.
Is Extremely Fast (imo)
Encourages the use of branches
I use it for almost every new project, even when it's just me on the project. It's an extremely fast distributed version control system and was written by Linus Torvalds and is now used in high profile projects like the Linux Kernel and Ruby on Rails.
Git isn't hard to use from the Command line but also has it's own "Tortoise" package (TortoiseGit - albeit not as polished as it's SVN cousin).
SourceGear Vault is free for a single user. I like to use the external client because I work in different environments, but If you want Delphi IDE integration, you can use Source ConneXion (not free).
You might look at some of the responses here (Stack Overflow) if you do have Delphi in mind. As mentioned in the answers there, I use Team Coherence which integrates very nicely with Delphi's IDE, and is aware of Delphi file groups (.pas with .dfm etc). I think it's written in Delphi too.
Having said that, the other comments already made are true - you shouldn't really let your choice of language dictate your choice of VCS.
Even though you've said single user, I would look for a solution that allows you to easily host it on a server/other desktop machine, so you have separated your development machine from your source repository. I'm probably teaching granny to suck eggs but you ought to check that whatever you choose can be easily backed-up too (even to a USB key or external drive would be fine). :-)
I know you have asked for Source Control, but if you are always planning to be a 'single developer' you might like to consider an automatic backup solution like AJC Active Backup instead. Yes, you lose the ability to check in and out specific versions, but at the same time you avoid the need to check stuff in and out all the time when it is only you working on a project. And you can recover or diff any previous source files by date for as far back as you care to configure. It's very much a set-and-forget solution, until you need to recover something, when it is invaluable. And the archive itself can be backed up in the normal way.
I use TortoiseSVN, but store my repositories as files on my laptop (on a share that can be accessed by mutilple VMs), not managed by a server. This means that I have full access to the repository regardless of server access, but also allows me to easily backup the repositories to the company file server when connected.
Since I am the only programmer I have not needed a separate server so far. I have seen Nick Hodges (Delphi Development Manager) say very nice things about VisualSVN Server, and I aim to check this out, to see how easy it is to backup/restore the repository: if that can be automated, and done very quickly, then I will probably adopt that.
Longer term I am going to look at the various flavours of distributed VCS, as that may be better suited to multiple laptop-based developers; I'm not sure yet, as I've not reached that page of my to-do list ;-)
One of the things supposedly in the pipeline for Delphi is integrated support for VCS. I've no details on that, or on any implications for current users of the various traditional or distributed VCS.
The language you use doesn't really matter in the choice of the SCM you will use.
It can matter if your favorite IDE supports or not this SCM.
TortoiseSVN is just a svn client, if you choose svn you can have several client.
I use Tortoise, and subclipse for committing in the same svn repository.
I would suggest using SVN server on a separate machine (either VisualSVN as suggested before or CollabNET Subversion Server) and TortoiseSVN with JVCL integration expert (also as suggested before).
Besides getting all the good stuff from the version control, you'll also automatically have backup on a different computer, which is always a good thing.
I know this will get down voted, but I feel it has to be said.
I've used Version Control software for many years at my job, and it is required when multiple people work together - to make absolutely sure that no two people overwrite one-another's work.
But for my personal development at home I don't use one. I find them overbearing and inconvenient for a simple one-person project. And I've tried several packages including Source Gear Vault and some others that other people have mentioned.
What I do instead is at every significant change to my program that I might want to go back to, I make a copy of the entire program directory. If I screw up in the next change, I can go back to the copied directory.
I also permanently keep copies of all my directories of every release of my program. If I ever need to do comparisons between my current version and previous releases, or between two different previous releases, I use Beyond Compare by Scooter Software - a simply great tool for diff-ing and copying changes between versions. If you use Source Control software, Beyond Compare will integrate into it nicely.
So I mention this simply because I have often heard everyone pushing Version Control Software, even for the individual developer. For some of us, it's overkill.
You may want to consider this simpler solution.
I use Bazaar with Delphi and it works well, especially for solo developer workflows. It has it's own TortoiseBzr but it isn't as good as some of its cousins so I recommnend the excellent Bazaar Explorer instead. One of the great things about Bazaar is it's flexibility and the ease with which you can change workflow or include another developer in a project that started off solo.
A lot of articles about Bazaar will tell you it is a lot slower than Git or Mercurial. They are out of date, now it takes a similar time to acomplish operations as they do and is faster on some operations.
My team use StarTeam and I have never used something else like SVN so it is hard for me to do a good compare. Starteam has both positive and negative sides.
Pros:
You can register Change requests and
connect them to checkins. This make
changes more trackable.
I feel more comfortable with a real GUI compared to commandline or some Shell
extension.
Cons:
Expensive, as most products from
Borland...
Latest version use Java. It is almost like the previous Win32 version and they have added more features, but I still feel that it is some slower and more memory hungry than before.
GUI could be a bit more intuitive.
I'm not big on version control, but use SVN/Tortoise and am quite happy with it. The main benefits that I see for a single developer is being able check out older versions of the application, and use multiple computers for development (desktop / laptop) - other than the obvious backup benefit. I tend to not need it for diffing files, as I find the version control tools within the Delphi IDE fairly good for this - provided the "bug" was introduced recently.
I think most Delphi developers use SVN/Tortoise (making it a fairly safe choice) - but there are trendyer options such as Mercurial and Git.
As a single developer, I have used Perforce for a number of years. It has been great. Aside from a CLI, you can use the P4V client. There's also an explorer plugin available, as well as Delphi IDE integration. I actually just found this free integration on Torry yesterday:
p4delphi
I've installed it in Delphi 2010, and it works pretty good.
Perforce is free for two user, it would require you to install perforce server, but the server footprint is very, very small. you can use P4V (Perforce visual client) which is far more convenient than tortoise, it also provide Windows explorer extension to be have just as tortoise (but you could skip this installation). Delphi integration could be done using P4Delphi.
I am using subversion, bug tracking and simple to use project planning for my latest delphi project from an web service provider. http://www.unfuddle.com has a free account for projects less than 200mb with 1-2 developers and the user interface is easy to use.

Subversion Exclusive Checkout and Subversion Plugin for Delphi

Is there currently a feature that allows a exclusive checkout in SVN?
Is there a good plugin for Delphi that allows the access via IDE?
SVN has a concept of "locking" which roughly corresponds to the exclusive checkout. For example, in TortoiseSVN this is exposed via Get lock and Release lock menu entries.
JCL contains a SVN version control expert which works quite fine. Besides other things, tt gives you access to the locking functionality from the IDE.
TortoiseSVN can be added into the Delphi tools menu. I've not tried this myself, since I'm happy using it as an Explorer extension.
Regarding the exclusive checkout, I'm guessing you mean so only one person can edit it at a time? That's not really the idea behind Subversion, the idea is you have working copies and then check in your changes. It'll then try to merge your changes in (this usually works most of the time). If there are conflicts you'll need to resolve them manually.
I believe one of the reasons why people sometimes enquire about locking items in a Subversion repository is because they have their Delphi DFMs saved in a binary format, which makes committing/merging problematic.
An alternative to changing DFMs etc to text is use Scooter Software's Beyond Compare.
Beyond Compare is written in Delphi, and natively knows how to read binary DFMs. This means that it then becomes less of an issue (or even no issue) whether your DFMs are stored in Subversion in binary or text. Beyond Compare V3 also does 3-way merging which makes it really easy to merge multiple commits etc. Even ignoring the ability to diff binary DFMs, it's still a much better diff viewer than TortoiseSVN's built-in tools. I can highly recommend it, and it's very inexpensive.
Currently the only things that I lock in our repository are COM type libraries (*.tlb and their associated *_TLB.pas files).
Regarding exclusive checkouts. It can be done, but it's a pain and generally not worth the time. If you do have dfms saved as binary, convert them to text.
Regarding delphi addins, I have a post at Delphi addins for subversion.
I use the jedi jcl, and TortoiseSvn.
There are also Delphi svn and Delphi addin in for Tortoise svn that I know of.
Maybe I'm naive, but why would anyone want to go to the enormous trouble of merging their changes? Merging might be a simple matter if programmers were editing text files whose contents are easily understood, and which therefore could be merged by virtue of the programmers knowing the meanings of the changes. However if you're using SVN with MS Visual Studio, where changes to one file frequently case changes to other files you didn't know about, and where the encoding of information in such files may be completely unknown to the programmers (who would therefore have no concept of how to interpret much less merge such files) and may even be binary, why would you go to the enormous trouble and risk of having multiple people simultaneously editing things?
The locking paradigm is simple. Only one person edits at a time. Merging is never required. Programmers don't need to know the encodings of (possibly binary) files that they don't even realize that they're modifying. Nobody can stomp on anyone else's changes. Locking (i.e. locking by default) sounds much preferable to me.
What do you mean by "exclusive checkout"? Do you mean that after you check out, nobody else can check out?
That's called a lock and subversion can do this (see Locking), though it's not recommended in general as the purpose of version control is to allow multiple people to simultaneously work on the versioned item.
For first part, I was using Visual Source Safe which is support locking (you have to check out before use), SVN has locking command, but it's against it's concept, you need few time to get used with it, and you will never use the locking command again.
For second part of your question, The TortoiseSVN can be used as external tool, or you can get it working with File Browser bundled with Delphi 2007 and above, and you can use IBrowser which work with older versions.
and Subversion add-ins for Delphi summarize the available SVN plug-ins for Delphi IDE, beside SourceConneXion which is commercial product.

Incorporate Team Coherence version label into build

The accepted answer to this question suggests using an SVN revision number as part of the version number when building a release. I want to do something similar using Team Coherence, which doesn't do revision numbers quite the same way.
For Delphi 2009 how can I set up a build script so that every release automatically includes a number or tag linking it to a specific Team Coherence check-in or version label? Just a way to access the current version label would be great, though a solution that automatically updates it would be even better.
I don't know how to do this (though I'm interested in the answer, I use TC myself) - but have you emailed Ewan at QSC about it? On the few occasions I've needed some help doing something like this he's replied very quickly and if he doesn't know how to do it, well quite honestly you probably can't - he's the TC developer! :-)
support#teamcoherence.com
QSC web site

Resources