What version-control system is most trivial to set up and use for toy projects?

前端 未结 18 1776
别跟我提以往
别跟我提以往 2020-12-12 14:37

I teach the third required intro course in a CS department. One of my homework assignments asks students to speed up code they have written for a previous assignment. Fact

相关标签:
18条回答
  • 2020-12-12 14:49

    Bazaar, Mercurial, and Git sound appropriate for your case - trivial to create repositories, and all the students need to share is read access on the filesystem to each other's repositories.

    0 讨论(0)
  • 2020-12-12 14:53

    I see no reason for dealing with setting up the source control system. Review the terms for using e.g. google code and dive in.

    A fellow CS student and I used it last year and it works great and the only precondition is an internet connection :-)

    0 讨论(0)
  • 2020-12-12 14:53

    RCS for linux.

    I've found nothing simpler than RCS for Widows but not all the RCS ports work well so you have to try them which makes it non-simple. Windows just isn't simple for developers. The windows port from http://www.cs.purdue.edu/homes/trinkle/RCS/ is pretty good.

    0 讨论(0)
  • 2020-12-12 14:54

    Setting up a subversion repository is trivial; I frequently set one up as a one-off thing for small projects (such as developing code for an answer on Stack Overflow!), and I doubt anybody else who could learn an SCM system at all would have any trouble with it.

    $ svnadmin create /home/cjs/repo
    $ mkdir my-project
    $ cd my-project
    $ vi hello.c
      [...hack hack hack...]
    $ svn import -m 'Initial project import.' file:///home/cjs/repo
    Adding         hello.c
    
    Committed revision 1.
    

    That said, sharing is certainly an issue. If the students always work together when they work simultaneously, they could use a USB drive, since they can just unplug it and pass it back and forth when one needs to comit, and the person who's going to program alone later can just hang on to it. That's not entirely convenient, though.

    Another option, since they all appear to be working on a shared Unix system, is to create a directory with the execute but not read bit set for the rest of the group (or all users) and use a s3cr3t name for the repo under that, one that only the two students know. Passing that secret name on to the prof would allow him to examine student's repos at any time, as well. ("So you submitted the assignment on time, but the e-mail system lost it? Let me just look at the time of that commit....") A script could help set this up.

    In fact, the more I think about that, the more I'm beginning to like it. In certain ways, it's simpler than the git solution because the student doesn't have to deal with passing patches around (or forgetting to do so) and the student will be forced to deal with merges before he commits, rather than once things are in the repository (with the subsequent ability to delay dealing with that indefinitely).

    0 讨论(0)
  • 2020-12-12 14:56

    I would say something like Git might fit the bill:

    • As it's a distributed system, you don't need to have a central repository, the repos exist with the source directory
    • It is easy to create patch files that can be mailed and applied.
    • Although it might seem that git is difficult to use, the basic ideas of committing, merging, adding and removing files are not that hard to learn.

    Have a look at this site Git Magic or, even this tip site GitReady

    0 讨论(0)
  • 2020-12-12 14:57

    I would recommend Mercurial (also called 'hg'). It is a distributed open-source VCS, and needs no central repository. Using it day-to day is easy. There is enough documentation on official site. For example check out QuickStart.

    Deciding point for me was a great GUI for Windows - TortoiseHg. It seems it is also supported on Linux (didn't try myself). And of course there are command-line distributions for most Linux versions.

    Of course it seems easy from this side of the fence, maybe for busy students concept, advantages, and everyday operation won't be that easy to get used to. But in the end, instant commits, ability to revert to any revision and create a new branch from there automatically, and intelligent diff/merge are just irreplaceable.

    Hope this helps!

    0 讨论(0)
提交回复
热议问题