Up to now I used git to manage my latex-files. However git manages all latex-files in a folder at once.
What I want is a version control system which
- gives me a history for each file separately
- lets me checkout old versions of individual files without affecting the other ones
- lets me make branches for each individual file withoud affecting the other ones
- gives tags to versions of individual files
Perhaps it is possible to do it with git, but I don't know how to do it. So is there any good, handy version control system for this purpose?
Perhaps I should add that I use linux as os and emacs as latex-editor.
I agree with @BasileStarynkevitch -- Git is all you need .
You probably only need a nice GUI for Git , so you can more easily see what's going on.
Git is made for programmers, to handle large amounts of source files, spread over multiple sub-directories.
Your use-case is slightly different, but you can still use Git nicely for it.
Early version control systems (RCS, SCCS) did what you just described in your question -- but it proved to be a mess, because any real project has typically more than just one file ;-) and it's easy to forget to check in a file if each one is handled by it's own version control. (don't do this)
So instead of thinking "I need to get the previous version of file A, and another version of file B" , try to think of making snapshots in time of your complete project when you use Git. e.g. "mini-releases" of your project. If your project is LATEX, then you are writing a book or publication - maybe check-in your changes every time you're done with an update, and think of this as a 'mini-release' ..
Using a Graphical User Interface for Git will help you see the differences between files, branches, tags, etc..
Git has features for merging-in content from earlier versions of a file into the current file -- so that is not a problem with Git. There are also tools for viewing and editing side-by-side diffs.
Previous answers are totally FUD:
- All and any current VCS works with full set of files in repository (name it as changeset or revision or...), thus your reqs 3-4 aren't satisfied as is - branches and tags are global
- Only CVS (if we don't recall ancient VCS) works with single file as object of management, but I strongly do not recommend even thinking about using CVS today
but
- If all your projects are single-file ???.tex, you can use any VCS - you'll not see any difference for your use-case (it seems so)
- Incremental versioning of entire repo in case of single-file change isn't so bad thing and really make life easy - nobody worry about "which version of file B I have to use with version N of file A"
RCS still available and still works fine (and I still use it)
Use case is for example a 'posters' directory (with svg, not so great with binary format) where every file is big so don't want to lump them into a single hg or git dir where will become enormous.
I used to use SCCS btw but RCS much better