Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

And do you know a tool which meets those demands?

share|improve this question

closed as too broad by gnat, GlenH7, Bart van Ingen Schenau, MichaelT, Kilian Foth Aug 11 '14 at 8:11

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

By "demands", do you mean features? – Gelatin Sep 1 '10 at 20:06
Features, or intrinsic - core - functionality. Stuff that shouldn't be a feature, but should always be there. – Tobiasopdenbrouw Sep 1 '10 at 20:10
Sound like homework. – Toby Allen Oct 26 '10 at 9:21

1 Answer 1

up vote 3 down vote accepted

The minimal features a versioning tool needs to be able to do - apart from versioning itself, of course - are:

  • diff: Given two files, or two versions of the same file, what has changed between them?
  • revert: Replace a file with another version of that file.

Other features that I'd consider essential include:

  • commit/push: Save local versioning information onto a remote server as a means for sharing it with other users or backing it up.
  • update/pull: Update the files with the latest versions as reported by a remote server.
  • blame: Who was responsible for editing a particular line of a file? In which version was this edit made?

Apart from all this, I'd hate to work with a non-distributed VCS. Git has completely spoilt me with the ease of keeping multiple changes in different branches around at the same time without conflict, then combining one branch with another very easily. To say nothing of the ability to keep your entire repository, with its entire history, on your own computer for quick searches. Moving back to the far more static SVN - despite its fantastic tools - would be really hard for me right now.

share|improve this answer
Sounds like all 5 features are offered by dropbox and spideroak! o_O – Cawas Jul 1 '11 at 22:03
Do they really do diff, blame and revert? Definitely push and pull works well for Dropbox, but I'm not sure about the others, and the ability to see where changes come from -- especially a function like blame -- is incredibly useful for a VCS! – Gaurav Nov 7 '11 at 21:58
ok, maybe not diff... but blame and revert yes, in 1 screen:… – Cawas Nov 8 '11 at 18:30
@Cawas: Sorry for the confusion! When I said blame, I meant blame in the CVS sense, such as: It's not an often-used feature, but it's an incredibly useful one to track who wrote a particular line. I'm not sure if Dropbox has that, although it definitely has pretty good revert support. I wouldn't use it to manage code changes, but it might be useful to manage changes in other project documentation? And of course it's a great way to share files! – Gaurav Nov 11 '11 at 20:17

Not the answer you're looking for? Browse other questions tagged or ask your own question.