Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best version control for a one man web app?

I'm just learning how to do things, and want to start using some sort of version control for a web app.

What's most appropriate for deploying a python or php web app on my own? I'm using linux and have a linux server.

Thanks!

like image 226
Rich Bradshaw Avatar asked Dec 01 '08 13:12

Rich Bradshaw


People also ask

Which is Better Git or SVN?

SVN is better than Git for architecture performance, binary files, and usability. And it may be better for access control and auditability, based on your needs.

Is Git the best version control?

Without a doubt, Git is the single most popular version control system in use. Not only does Git offer the strongest feature set for developers, but it also has the most reliable workflow and is supported by the most third-party platforms on the market.

Is SVN distributed or centralized?

Subversion (SVN) Is a Distributed Version Control System? SVN is actually a centralized version control system. It's different from distributed systems, like Git.

Is bitbucket a version control system?

Bitbucket is an enterprise-ready version control system for your Git source code. With Bitbucket, you can use pull requests and inline comments to collaborate with team members, set up deployment models, store large files, and use pipelines for deployment.


3 Answers

SVN, but you need to be able to easily deploy your webapp with SVN.

Since it is not always a simple task, so I just point out this article which may be of interest for your project.

General principle:

  • Configure Apache on your development server so that it picks up your checked out working copies as separate subdomains. Using this, you can simply make a checkout of your project and it will automagically be up and running. No need to touch the Apache configuration. You need a DNS wildcard entry so that all subdomains of dev.example.org go to your development server.

The only problem with using the above Apache configuration locally is the DNS wildcard. Unless your desktop is assigned a hostname by your network's DNS server and you can set the wildcard there, you will have to make do with your localhost address. You can install dnsmasq to act as a local caching DNS server and put the wildcard on your own machine

  • Use dnsmasq so you can achieve the same effect on your own development machine. That way you can develop your web applications locally and you won't need a central development server. In my examples I will be assuming you use subversion for your version control, but it works virtually the same with other version control packages, such as git or bazaar.

Note: (Humor)
This other question on Subversion allowed me to point out to this article about publishing its (source-controlled) data into production, with in it probably the ugliest diagram I ever saw on the topic ;-)

diagram

like image 151
VonC Avatar answered Oct 16 '22 15:10

VonC


If I had not bumped into git, I would've doubtless gone with SVN. Having said that, I would recommend git.

like image 31
ayaz Avatar answered Oct 16 '22 14:10

ayaz


Nowadays, I would certainly go with a distributed version control system. Setup is faster since you don't need to set up a version control server and everything, all you usually need to do is initialize a certain directory within your development box for version control and you're good to go. They also seem like the way to go these days. If it were 2001, I would recommend a centralized system like Subversion. But it's 2008, everyone is moving to distributed systems and user interfaces and supporting tools tend to get better.

Here are some suggestions for you:

  • Darcs: Easy to learn and has all the features you will usually need
  • Mercurial
  • Git: Powerful. May take some time to understand but evolves rapidly

All three of them should be readily available in your Linux-based OS through the usual package management solutions.

like image 24
Thiago Arrais Avatar answered Oct 16 '22 13:10

Thiago Arrais