Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I know that this question has been asked many times before in different guises and that I'm an ignorant n00b for thinking that I could add anything to the discussion. However, I'm interested not only in the version control system but also in its hosting options, compatible applications, and Windows compatibility.
If you don't have experience with more than one system, tell me what you use: version control system, code hosting, implementation (vc program), and OS.
I only have a few constraints:
I'd like to use a program that works well in both Linux and Windows. That means at least an equivalent command-line interface.
The implementations must be stable enough that I don't have to constantly re-compile on Linux and I never have to compile on Windows.
The version control must have at least one compatible free code hosting site (for open-source projects). If the hosting site itself is open-source, that would be ideal.
The version control standard must be open-source.
Sorry if I sound like a demanding brat asking for other people to make his decisions. I just want to learn from your experience so that I don't have to switch version-control systems repeatedly.
What major, Windows-compatible version control system would you recommend?
First off, you might benefit from this recently published paper in the ACM Queue:
Making Sense of Revision-control Systems
I'll outline the two which I know the most about, others can tell you about the rest.
SVN:
Probably the best windows support out of all modern open source SCM's
Simple work flow similar to most standard SCM's
Many free open source hosts: http://code.google.com/projecthosting, http://unfuddle.com/about/tour/plans
http://www.svnhostingcomparison.com/
Many good clients. Tortis SVN, Subclipse, straight cli and many more.
GIT:
Extremely powerful SCM
Full source history in every checkout of the source tree.
Not the greatest windows support, but making great strides of improvement currently. http://code.google.com/p/msysgit/
Many free hosts: github, repo.or.cz
The current "cool kid" on the bock.
It sounds like you might just want to go with svn.
It sounds like you just want to have stuff under version control, this way you won't have to worry about the learning curve associated with GIT.
Others to look at, but I didn't detail because of general lack of windows tools: Mercurial, Darcs, Bazaar.
If you do check out mercurial you can use bitbucket and google code as a host.
One of the most used / known revision control system is probably Subversion (SVN)
I use it everyday on both Linux and Windows (for both personnal and professionnal projects), both in CLI and with graphical tools.
Windows : I often use TortoiseSVN
Windows/Linux : I generally work with Eclipse, and its Subversive plugin
Windows/Linux : the "svn" command in CLI is great too, especially when you want to use some scripts to automate struff.
Note that I never had to compile anything for SVN to work (on Windows, using TortoiseSVN is OK ; on Linux Ubuntu, the packages bundled by Ubuntu are OK too)
For hosting, as SVN is used by lots of projects, you have lots of possibility, especially for open source projects.
For instance, Google code allows you to use SVN to host your projects
Same for SourceForge (see), if I remember correctly.
You have other possibilities, of course, like, for instance, Assembla
If you want something a Distributed revision control software, you can take a look at tools like Bazaar, Mercurial, and/or Git. Each one of those is used by some big projects (well, at least for Bazaar (MySQL uses it, I think) and Git (Linux Kernel uses it)).
I've used Bazaar on both Linux and Windows, but only in command-line ; never had any problem with it. I know there are graphical tools for both Linux and Windows, but never used those much, so I can't really say more.
Still, if you don't need a distributed system, I would go with Subversion, with absolutly no hesitation.
I use Git, mainly because I develop on many workstation (at home or at work), and a DVCS is much easier for replicating my repository, but also for the branching, merge facilities, and speed for initializing and importing code into a new repository.
I'd like to use a program that works well in both Linux and Windows. That means at least an equivalent command-line interface.
"git" is your CLI and works in a DOS session as well as in a bash one.
The implementations must be stable enough that I don't have to constantly re-compile on Linux and I never have to compile on Windows.
msysgit is now quite stable on Windows, as stated in the question "Git under windows: MSYS or Cygwin?" (no need for Cygwin).
The version control must have at least one compatible free code hosting site (for open-source projects). If the hosting site itself is open-source, that would be ideal.
GitHub is a good example of free code hosting
The version control standard must be open-source.
Check out the sources of Git at git.git.
Related
which is best sourcesafe system for iphone xcode on backup and proper check-in & check-out on codes
Regards,
sathish
it appears that you're using 'sourcesafe' as a generic term for version control.
for version control of xcode projects:
i have used cvs, subversion, and now git (also serving as a front-end for other systems).
git is my first choice (it is distributed, and quite fast).
svn (subversion) is my second choice - you may have more coworkers/projects which prefer svn, although git may also be used as a svn client.
lastly - i prefer using dedicated visual clients over xcode... xcode seems to be busy doing other things. it is usually faster to disable vc in xcode, and hop to a terminal or other client while xcode builds/debugs/updates indexes, etc.
XCode supports CVS, Perforce and SVN out of the box. Out of the three, I think SVN is the most popular choice.
Setup your project.
Delete the build folder.
Setup repository.
Import project to repo.
Checkout project from repo so you'll get a versioned copy.
Well, first - it is not called sourcesafe system, but version control - way of controlling evolution of source code and its versioning. Sourcesafe is a specific product by Microsoft.
Second - version control is data agnostic. That means you can use any system you know. The best tool is the one you know well.
That being said, there are some advantages in using specific version control systems as Subversion and Git, because those two are going to be supported in next version of Xcode (version 4).
Current Xcode (version 3) has support for Subversion, CVS and Perforce. If you are familiar with any of these, use them, but do not restrict yourself only to these. Stability of version control support in Xcode 3 is mediocre, at least with Subversion which I've used. Xcode 4 is going to be a huge improvement in this area.
Lots of developers, me included, prefer not to use integrated support for version control in Xcode (or any other developer tools), but use specific clients - like Versions for Subversion, or command-line tools for Git.
I want to comment on use of Git, which I personally use and love. It is a distributed system, and for beginners its concepts might be a bit hard to grasp. Consider the experience of your teammates when deciding to use it - for lots of teams it's better to use something more traditional like Subversion.
SmartCVS is also one of good tool which we use for co working with teammates
I am doing my study's final year project and would like to do a little survey here. The topic is about configuration management and version control system for an industrial product (such as a piece of software, a furniture design, a car engine or even an aeroplane design etc...)
1.) What is you field of expertise (IT, engineering, manufactuing etc..) and what is the configuration management and version control system you use (previously or now) for your work?
2.) What is your opinion/comment (good, bad, what is it lack of or what can be improve etc...) about them? Much appreciated if you can include some real life examples for your opinion/comment.
Of course you are welcome also if you simply wish to share your thought on the current configuration management and version control system in market.
Thanks all in advance for your help.
I'm in the Computer Security field, and we use Perforce. It's pretty good for my needs (I'm a Development Manager) - supports easy branching (not as easy as git, but we don't really need something that flexible), the conflict resolution is pretty good, and the command-line tool lends itself to easy scripting.
The downside is the price - from what I hear, P4 is rather pricey (I'm not involved in purchasing, so I don't know the specifics), and I don't think we're getting anything out of perforce that couldn't be found in an open-source solution (again, I look at git). However, we're a large (>1000 person) software development company, we have offices scattered across the world, and perforce is quite entrenched already, so I don't think we'll be switching any time soon.
In the past, I've used Perforce at a different company and Visual Source Safe (awful!).
I'm not sure this is a good topic for SO... In any case:
For developing software we're very happy with git. If your developers are particularly inexperienced or you have "people who need graphical user interfaces" on your team you might be happier with Subversion.
For tracking our system configuration files (DNS, puppet, nagios, that sort of thing) we use Subversion.
About tracking configuration files with version control system: that is not what VCS are for, but for example for Git there are many tools built on top of Git to manage configuration files: IsiSetup, etckeeper, and other that can be found e.g. on http://git.or.cz/gitwiki/InterfacesFrontendsAndTools web page.
This question might extend to less technical focused, semantic markup and generative designs.
Software and Systems Technologies:
[D]VCS'es
Git is, by far, the most popular DVCS in open source these days. [Thanks Linus!]
Mercurial [Hg] is functionally almost identical to Git due to history.
Bazaar [bzr] is another DVCS similar to Git and Mercurial.
Subversion [SVN] is a CVS common in small-to-large businesses.
Perforce [P4] and ClearCase are common is giant, traditional organizations.
Fossil is for the "ultra-cool" startup daring to be different.
Older VCS'es
CVS [not to be confused with CVSNT] is a predecessor to SVN.
RCS is the non-networked predecessor to CVS.
System Configuration Management
Cfengine 2 and 3
Puppet
Chef
MCollective
Chef knife
fabric
Software Configuration Management
Java
Ivy
Maven (mvn)
pom.xml
Python
pip
setuptools
virtualenv
C/C++
autotools
Ruby
capistrano
rake
rubygems
rvm
Haskell
cabal
Erlang
epm
Node.js
NPM
I am a web developer (J2EE application developer) and just want to expand what tools I use. I want to use Open Solaris for my personal projects. I have nothing against Linux and It looks like a lot of the same tools are on both systems.
Have you jumped to Solaris, was it a good experience?
DTrace, zones, switch between 32 bit and 64 bit mode with a single GRUB switch, ZFS, stable libraries (I can't really emphasize that one enough). Solaris 7 software generally runs on OpenSolaris, otherwise known as Solaris 11. glibc changes between minor kernel releases.
Xen is integrated pretty tightly, and setting up lx zones or virtualization to keep your Linux environment is dead simple.
OpenSolaris now has /usr/bin/gnu, where all you favorite utilities can be found.
Expect, though, to end up fighting the ./configure && make && make install cycle a little bit. A lot of developers assume you're running Linux, and don't prepend -m64 for Solaris, among other things. Compiling wxPython is an adventure, for instance.
Edit: I forgot to mention one (possibly important) thing to you. Package repositories aren't nearly comparable. It's neat that pkg image-update (equivalent to `apt-get update && apt-get upgrade && apt-get dist-upgrade) makes a ZFS snapshot that you can get back to via GRUB at any point, but you have nowhere near as many packages in IPS as apt. All the biggies are there, though.
If you're planning to switch, Sun's documentation is fantastic, and the BigAdmin tips of the day are worth reading for a while to get you up to speed.
For J2EE work per se, probably not much. As a more general developer you may appreciate DTrace. As an admin you'll love ZFS & zones. You'll hate the outdated utilities (mostly user-land) though. FreeBSD is a nice in-between Linux & Solaris though. :)
I guess the underlying OS doesn't matter much for a J2EE developer, as long as you stick to the java platform and don't make use of native libraries through JNI. Having said that, the most important factors to choose an OS would be cost and performance. Now, both Linux and OpenSolaris are open source and free to use, but I'm not sure about using OpenSolaris in commercial deployments. I also don't know how java performance differs from one to the other, but I'm strongly convinced that Sun's implementation for Linux is damn good.
Note: I've never used OpenSolaris and I use mostly Linux.
I'm not certain from your question if you mean for your development desktop or your hosting solution but I can take a crack at both. About six months ago I got hold of a free year of hosting on OpenSolaris running GlassFish. I hadn't used Solaris before and thought it would be a good learning experience. I built a test server, installed OpenSolaris and GlassFish, and used it to practice. It was very strightforward to configure GlassFish and deploy applications. Managing services in OpenSolaris is also simple once you read the right documentation. I like OpenSolaris and I like GlassFish.
Obviouly, I found similarities and differences from previous experience with Java application servers and operating systems. However, I thought so highly of the OS that I switched my desktop over last month. It has been a good experience.
Eclipse is not available on OpenSolaris, unfortunately. If you are an Eclipse user you would have to migrate to NetBeans.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I consider myself fairly versatile when it comes to O/S selection. I have used DOS/Windows PC's all my life, switched my main laptop to Mac two years ago, and have used numerous flavors of Unix/Linux/BSD while studying for my Comp.Sci. degree.
However, as I'm trying to improve my development environment, I'm starting to wonder if I'd be better off scrapping the Macbook for a PC with a different O/S flavor (to support a different set of tools and IDEs).
What O/S do you prefer for (web) development, and why? (prefer answers from people who have real-world experience coding on multiple platforms)
(Note: I am aware of this question discussing client vs. server O/S - what I'm interested is the whole development environment, and not limited to the 'Windows crowd')
It's really going to depend on the type of web development you want to do. If you are doing PHP (or LAMP, Perl, Python, Ruby), then Linux is probably the best way to go. If you are looking at doing .Net development, then Windows would be your best bet. I think if you're on Java, then Windows or Linux would be equally good.
For LAMP development on Linux, you are probably best going with Netbeans or Eclipse for your IDE. Personally I prefer Netbeans, but it depends on which you are more comfortable with. If you want to pay for an IDE, Zend is one of the better options. As far as distros go, any popular distro should be fine. I hear Ubuntu is pretty popular although my personal favourite is Mandriva.
You don't need to scrap your Macbook to use different operating systems. Many developers run multiple OSs without giving up the Macbook experience.
I prefer my Macbook and despise the fact that I have to go to work and use a Windows environment (I keep hitting the ALT key looking for COMMAND!). Ruby and rails development is easier because most of the developers are using OSX and therefore any help you need is tailored for your development environment, it just doesn't work as smoothly or as fast on Windows.
I haven't run into anything I've got in my work environment (Emacs, IntelliJ etc.) that I can't get for Mac and it even looks a whole lot better. Ubuntu even looks better and is a lot more reliable than any Windows system I've ever used.
If you're locked into the .Net world, then Windows is really the only choice.
Otherwise, the "big name" web environments (Apache, Tomcat, Spring, Glassfish, Rails, JBoss, Grails, Weblogic, ...) are all commonly deployed on some flavor of *nix. A Linux-based laptop gets you max geek cred; OSX gets you a full-fledged Unix environment with a very polished UI and less do-it-yourself maintenance.
If you're doing Java, then Eclipse, NetBeans, and IntelliJ will run on all of the above (Windows, Linux, Max), so you can choose based on what else you want to have in your environment.
I got 3 systems,
Windows XP, Windows 7 RC, Ubuntu 9.04
Windows Vista
Mac OS X
Mac OS X would be my choise, since you can get good enivroment to work on. I got Adobe Create Suit and Textmate, they aren't free. Free alternatives GIMP/Inkscape and many free text editors are available for mac.
LINUX is fine but Adobe suit doesn't work on it, you have to use GIMP and Inkscape, obviously they are nowhere near Adobe Photoshop and Illustrator. Although if you aren't interested in using Adobe CS you can use Ubuntu distro which is easier than other LINUX distro and quiet popular, so you won't have any problem finding solution. Eclipse would be my text editor if I use LINUX.
Windows is another good choise if you are familier with Windows but risk of losing important files which took you hours to develop ;-) , you know its main problem is Virus and spywares. If you can get decent Anti-Virus (like free Avast ect) you can live with it.
In my opinion, there is "nearly" no reason to choose Linux over OSX for web development. OSX is unix'ish, so you can run almost any server on OSX almost the same way as on Linux.
One big reason to choose OSX is the accessibility and comfort. I do not know any other operating systems that are nearly as enjoyable to work with, as OSX.
And no, I'm not an Apple fanboy. :)
I like to keep my source files on a USB drive for the portability. To date I have been using Visual SourceSafe for this purpose. What is a good alternative to VSS that fulfils these criteria:
Entire database can be held on a USB "pen" drive
Code / documentation duplicated on local drives
Does not require a central server
Easy to backup and restore using standard backup tools
Integrates with Visual Studio
Has a small footprint
Easy to clean the database and keep small
Compatible with Windows XP, Vista and Vista x64
A good reference on setup would be good too.
I would use SVN (Subversion).
You can use SVN in "file" mode (w/o using the network).
combine this with tortoiseSVN, which integrates to explorer, and you have a nice little portable repository.
For Visual Studio integration, there is the commercial($49) VisualSVN (which I believe is the setup used to develop StackOverflow).
Someone also mentioned AnkhSVN which I haven't used, but some people find it less than satisfying.
Don't use SourceSafe. There's major problems with it. See this:
Article1
Article2
I'd recommend using SubVersion instead.
If you're using Windows, you can use TortoiseSVN.
If you're working on Linux or other Unix variants, try RapidSVN.
Use Subversion. The FSFS style repository will work best as older BDB ones can have issues when moved from computer to computer. With AnkhSVN you'll have full integration with Visual Studio (AnkhSVN 2.x is a source control plugin; older versions still do the job, though).
Bazaar does what you're asking for (in terms of working very well standalone), and there was a 2007 Summer of Code project to build a Visual Studio integration plugin which appears to have produced an at-least-partially-functional product.
Bazaar (and other distributed tools, such as Git, Mercurial, Darcs and the like) are ideal because you can have your repository stored in multiple places (ie. on your pen drive, but also copied up to a server on a regular basis), make changes in one or the other branch (let's say you leave your pen drive at home -- you can build changes against the copy on a remote server, upload them via WebDAV, SFTP, etc, and be able to seamlessly merge them into changes done locally to the pen drive; non-distributed solutions such as Subversion don't have that capability).
There are two common free front-ends Ankhsvn integrates into visual studio
and TortoiseSVN integrates with explorer ( my preference).
There is also sliksvn a self contained svn server for windows.
I'd recommend SubVersion as well - you can find a hosting provider who offers SVN for really cheap, this way your source code is always backed up and available, all you need to keep on your flash drive is SVN client...