Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Distributed Version Control Systems (Mercurial, Bazaar, Git) are nice in that they can be completely self-contained in a single directory (.hg, .bzr, .git) in the top of the working copy, where Subversion uses a separate repository directory, in addition to .svn directories in every directory of your working copy.</p> <p>Mercurial and Subversion are probably the easiest to use on Windows, with TortoiseHG and TortoiseSVN; the Bazaar GUIs have also been improving. Apparently there is also TortoiseGit, though I haven't tried it. If you like the command line, <a href="http://www.gnome.org/~newren/eg/" rel="nofollow noreferrer">Easy Git</a> seems to be a bit nicer to use than the standard git commands.</p> <p>I'd like to address point 4, common libraries, in more detail. Unfortunately I don't think any of them will be too easy to use, since I don't think they're directly supported by GUIs (I could be wrong). The only one of these I've actually used in practice is Subversion Externals.</p> <p>Subversion is reasonably good at this job; you can use Externals (see the chapter in the SVN book), but to associate versions of a project with versions of a library you need to "pin" the library revision in the externals definition (which is itself versioned, as a property of the directory).</p> <p>Mercurial supports something similar, but both solutions seem a bit immature: subrepository support built-in to the latest version and the "Forest Extension".</p> <p>Git has "submodule" support.</p> <p>I haven't seen anything like sub-respositories or sub-modules for Bazaar, unfortunately.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. CO@Sam, Thanks for this. Regarding Items 4 & 5, I'm wondering if something like this would work: Let's say I have a library folder, `C:\Libararies` and a solution folder `C:\MyProject`. If I want to check in a new version (version 2.4), I could do this: (1) Check in my library folder with identifier "MyProject - Version 2.4" to LibararyRepository and (2) Check in MyProject with identifier "Version 2.4" to MyProjectRepository. If I ever need to go back, reverse the process. Would that work? Meanwhile, I'll check out Externals.
      singulars
    2. COIf I get your meaning, then yes, if you manually tag the project and the library like that, then you could always get back to that revision. However, the main way that SVN externals (and subrepos, etc.) work is that you would have a copy of the library in a subdirectory of the project, i.e. `C:\MyProject\Libraries`. When you wanted to go to a newer version of Libraries, you update the externals property and update the `MyProject` working copy, and then commit. Then if you switch to or check out an older version of `MyProject`, it would automatically have the correct version of `Libraries`.
      singulars
    3. CO@Sam, sounds good, but I have one concern. Let's say I'm on version 2.5 and I want to revert back to version 2.4. When I do this, will SVN put my library files back where they originally were (in `C:\Libraries`) or will it put them in `C:\MyProject\Libraries`? If it's the latter, my project wouldn't compile in Visual Studio (I'd have to re-add the library projects under their new location). With the (manual) system I outlined above, I get a little added flexibility (I could, say, stick with the latest library but still revert my project to version 2.4) at the cost of a little added work.
      singulars
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload