Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Free Version Control for single user on single machine [closed]

There are a few similar questions but some of them are 5 years old (so there may be new stuff which are better) and the others don't cover all my requirements.

I am looking for suggestions for version control software.

  • Has to be free for commercial use.
  • All development will be done by one person.
  • All development will be done on one machine - 64 bit Windows 7 machine.
  • Lots of small projects - each project small - just a couple of weeks worth of work. So it should be very quick to start a new project.
  • should have a command line for checkin.
  • should have a graphical way to look at version history for a file - i.e. I type "history file.cpp" - it should give me a window with all versions for that file & a easy way for me to do a visual diff(with a pluggable difftool - I like windiff) of any two versions in the history.
  • The work will be on different programming languages - (C, C++, Java, VBScript, etc).
  • IDE integration not required at all.
  • Creating a tag/label should be quick and easy.
  • Merging and branching will never be done, so any features related to these aren't relevant.
  • Conflict resolution will never need to be done.
  • very quick learning curve for the basic stuff.
  • should have a single command to checkin all checked out files under a directory including sub-directories. This should happen without a UI being thrown up on running the command. i.e. comments common to all files should be accepted from the command line.

i.e. checkin -r *.cpp -c "Added new stuff".

  • I liked some features in the perforce client I used
    • Though there was a checkout command, I could also just force save a file without checkout & continue working. Then afterwards running just one command searched for all files in a directory/sub-directory which have been force saved & checked them out for you.
  • Shouldn't require me to add new directories in the repository. Adding a file in a directory should automatically add the directory - i.e. I need to create a new file A.java inside directory new. I will do

    md new
    cd new
    // edit and create the file A.java
    // create and checkin the new file A.java into the repository 
    // without complaining that the directory doesn't exist in the repository.
    
  • Should be easy to backup. i.e. Once a week I use SyncToy to backup stuff to an external harddisk. I don't mind using a different way to back the version control repositories into the external HDD, but it should be simple to backup - in case my laptop crashes, I should be able to recreate all the repositories including version history from the backup.

  • I am looking for something lightweight. i.e. doesn't require me to setup a separate server etc.

At different times in multi developer huge project environments, I have used perforce & CVS - liked perforce very much. Never liked CVS much but using the Tortoise UI for CVS made it bearable.

However, for these Version Control Systems, I was always a user - never an admin (i.e. the devs didn't manage the Version Control system - there were separate version control experts for that) - i.e. I have never created a new repository - so my knowledge is just client side stuff.

I know all my requirements may not be satisfied by any one system - but something which comes as close as possible would be great.

like image 453
user93353 Avatar asked Feb 24 '26 02:02

user93353


2 Answers

[Disclaimer: I use SVN for my job and personal projects, and have no experience with Mercurial.]

Most of you needs are covered with most of popular version control systems.

I was going to suggest SVN until read item about not adding directories. As far as I recall from description of Mercurial philosophy, it manages files, not directories, so it automatically adds any missing directories when a file is added.

Of course, with any popular version control system it's possible to implement such thing, but if you are looking for such functionality out of the box, probably you want to check Mercurial...

like image 189
maxim1000 Avatar answered Feb 25 '26 19:02

maxim1000


Although the subject is very offtopic here, I'll try

  • Subversion (TortoiseSVN and file:/// protocol for repositories)
  • Mercurial (TortoiseHG)
  • FossilSCM (with Fuel)
like image 32
Lazy Badger Avatar answered Feb 25 '26 20:02

Lazy Badger