Slashdot Mirror


Designing a New Version Control System?

tekvov asks: "When Linus Torvalds decided to use BitKeeper as the version control system for Linux there seemed to be a lot of controversy and many challenges to create a better system than CVS. My question is exactly what would this 'better system' look like? How is the subversion project, Tigris, doing at creating a new version control system? Basically, does the Open Source Community need new tools in this aspect of development? And if so, how should these new tools look?"

183 of 536 comments (clear)

  1. pretty gui's by Alric · · Score: 3, Funny

    Obviously these new tools should have little functionality masked by really fancy GUI. At least, that's what I've been trained to like.

    1. Re:pretty gui's by scott1853 · · Score: 2

      You mean like Starteam. It looks like a nice package, now if only it could given an accurate status on a file instead of "unknown". It would also be nice if the merge option didn't mangle the code. "1.04" merged with "1.01" somehow works out to be ".1".

      I must admit it's better than SourceSafe from MS.

    2. Re:pretty gui's by Tei'ehm+Teuw · · Score: 2, Informative

      Heh, but it doesn't have to be that way. Look at Clearcase. Good gui and gobs of functionality. Too bad it's so expensive.

    3. Re:pretty gui's by _Swank · · Score: 2, Insightful

      and suprisingly difficult to use to do simple little things (deleting files, etc.) while making it nearly impossible for a normal person (read non-rational expert) to recover a file that had been deleted, but is needed once again. the problem with clearcase is that it's not only really expensive, but it almost requires an admin devoted full-time to clearcase if even a single project is using it. and it's gobs of functionality are great until you realize that 90% of projects don't need some of that stuff (especially integration with all other Rational tools which doesn't seem to work nearly as well as anyone would like) and it ends up making what they do need more complicated than it should be.

    4. Re:pretty gui's by wls · · Score: 3, Informative
      StarTase has serious problems, in my book. From an SCM stand point, it doesn't allow you to do corrections on the respository. Say for instance a developer checks something in the wrong place and creates a branch unintentionally. You know it's wrong, he knows it's wrong, everyone agrees it's wrong -- and you want to get rid of it. StarTeam was to preserve cronological history -- the fact that someone messed up -- rather than project history, which reflects where your software has been and where it's going.

      From a licensing standpoint, they have a problem with the code that validates you. We went through some layoffs and backed off the number of users upon renewal. Even though users didn't exist in the database, the licensing reports said they were there. It took me a few days to demonstrate this was actually happening and get them to admit to it -- don't trust their logs!

  2. Shome mishtake? by albalbo · · Score: 4, Informative

    Shurely, the Tigris project subversion (http://subversion.tigris.org/)??

    --
    "Elmo knows where you live!" - The Simpsons
  3. Simple answer. by Anonymous Coward · · Score: 3, Insightful

    "My question is exactly what would this 'better system' look like?"

    You said it, BitKeeper. It's there, it's very good, don't people have anything better to do than nagging about other people just charging for their own work?

    If you want to give away your work, please do (I'm happy to use it) but you are not BitMovers (the company) mom and have no business telling them what to do.

    1. Re:Simple answer. by SN74S181 · · Score: 4, Funny

      Now it's just a matter of some GNU programmers coming out with a knock-off version that's not as good, but good enough. First, though, we need to come up with a name. It has to be a clever twist on BitKeeper.

      I nominate:

      'ByteLoser'

      Who wants to slap up the SourceFarce page and start working on the icon?

    2. Re:Simple answer. by CoughDropAddict · · Score: 2

      You said it, BitKeeper. It's there, it's very good, don't people have anything better to do than nagging about other people just charging for their own work?

      Yep, I do actually. It's called writing free software with free tools on a free OS and refusing to waste a minute of my time investing money or effort into proprietary software that does nothing but limit me and control me, leaving me at the mercy of a company's whims and the size of my bank account.

      Don't you have anything better to do than try pushing proprietary, expensive software to a group of people from whose work you derive uncompensated benefit?

    3. Re:Simple answer. by CoughDropAddict · · Score: 2

      Written like a true poseur!! Tell me, kid, do you know how to write software?

      Yep. I've written a significant amount of code for Audacity and PortAudio, and plenty more small patches for other projects along the way. I'm also in the process of writing this introduction to the ALSA API, filling a void where little good documentation exists. Not to mention that I'm working in the software department of a successful computer company.

      Listen , I am a professional person and I expec to be paid for my work.

      That's wonderful. I am a programmer and I expect free access and distribution rights to the source code of any software I use on a regular basis. There's enough good free software around that I can require this of the software I use and still find programs to do everything I need.

      Not that I'm opposed to you being paid for your work, but I'm not going to be the one paying you, especially since paying for proprietary software gets me a worse deal (no source code, no redistribution rights) than downloading free software for free.

  4. We use Perforce at work by WPIDalamar · · Score: 5, Interesting

    I've used CVS and Visual Source Safe (ick) before. But at my current job we use Perforce (a commercial product) and it rocks. There's clients for just about every known platform, a slick graphical GUI for windows (and they're working on a linux one), and there's this local webserver gui that works for all the platforms if you need something graphical to look at. The interfact to it rocks, the merging and branching rocks, and it is super flexible. We have some scripts set up so we can close bugs in our bugzilla database from some special tags in the description of a changelist (a changelist is what gets submitted when you check stuff back in).

    1. Re:We use Perforce at work by forgoil · · Score: 5, Informative

      I agree, Perforce is a very solid product indeed. And all the commandline tools are there for Linux, and so are the servers. I've used it both on Windows and Linux (both servers and clients) and it works like a charm.

      And in case you don't like their fortcomming linux GUI (I hadn't heard about that before, thanks WPIDalamar) they do provide you with an API so you can make one of your own (KPerforce ^_^), which shouldn't take that long really.

      The pricing seems very high for an individual, but their pricing is real cheap for this kind of software (for companies) and you can use it without a license but then with max two client specifications. They also have good support (something that is not common unfortunatly).

      http://www.perforce.com -- go there and check it out. If you hate paying and want to make your own set of tools you can learn a lot from Perforce.

      And I agree, source safe is icky, and so is CVS and source offsite. I haven't had a reason to try out BitKeeper so I unfortunatly don't know how it stacks compared to Perforce.

    2. Re:We use Perforce at work by digerata · · Score: 5, Informative

      Also, they do open source licensing. If you are a certified open source project (I guess they just checkout the project???), you can get licenses for free.

      --

      1;
    3. Re:We use Perforce at work by Uksi · · Score: 2, Insightful
      We use Perforce as well, and I love it. After using Perforce for months now, I can't go back to CVS. Branching, labeling features all make sense.

      Creating a branch is very much like copying all the source to another directory (e.g. you had all your source in mysoft directory, which is your trunk.. when you branch, you copy that to mysoft2 directory and now you have a branch.. best of all, every new branch takes up a miniscule amount of disk space, storing only the files you actually change). And then Perforce supplies you with powerful integration tools to let you synch changes across branches.

      It has some flaws, like no version control on client, branch and label specs, so if somebody messes up the definition of a branch, you can't step back to the last version, but otherwise it's an excellent source code management (or whatever the right term is) system.

      If anyone's curious about P4, they can read the manual.

    4. Re:We use Perforce at work by RadioheadKid · · Score: 3, Informative

      I love perforce too. And if you are either an open source developer or you just want to use it for personal use (two users max) you can use if for free. Check out their licensing here (scroll down for open source info) and here

      Plus it's so easy to install on a linux server. There's a bit of a learning curve with how the system works but in less than a day you'll be checking in and out and branching without a problem.

      --
      "Karma can only be portioned out by the cosmos." -Homer Simpson
    5. Re:We use Perforce at work by mpsmps · · Score: 2, Informative

      There is also an Emacs client for Perforce. It's not completely full-featured, but it means you don't have to bother with any of the standalone clients when doing basic editing and version control tasks (You are using Emacs as your editor, aren't you?). When I need to do something fancy, you still need to use one of the standalone clients (GUI, commandline, or web).

      Besides the Emacs integration, there are integrations for Developer Studio, Windows explorer, Perl, Python, Forte, Eclipse, etc. These are all available at Perforce User Interfaces & Integrations.

    6. Re:We use Perforce at work by GreenLantern · · Score: 2, Interesting

      I hate to be an also-ran but, we use Perforce here also. In my history as a developer I have used RCS, CVS, Continuus and Visual Source Safe. The only product that comes close to Perforce in functionality Continuus. The difference is that Perforce actually works and you don't have to wait for hours to complete sync and integrate operations while hopeing it won't crash. Perforce is also less expensive than Continuus and the server runs on more platforms including Linux.

    7. Re:We use Perforce at work by e40 · · Score: 3, Interesting

      I tried to use Perforce, but I couldn't get my repository (CVS, started in 1990 with version 1.1 or 1.2) converted to a depot. There were two tools for doing it, both user contributed. They just didn't work.

      I talked with the p4 staff and they said they would help me do it (tweaking the tools if need be, I assume). I was just a little too nervous, though, about not being able to try it before I committed all those $'s.

      To be fair to the conversion tools, I believe since my repository is so old, that the format of the RCS files is slightly different than what would be created today by CVS. Back then, CVS actually used the external RCS programs to operate on the ,v files.

    8. Re:We use Perforce at work by mikec · · Score: 2

      I use Perforce, too, and I agree it's very good and the basic interface would be a good model for an open-source system. However, I don't think Perforce itself would work for a typical open-source project. Open-source projects tend to be extremely distributed, with lots of geographically distributed groups of one or two. Perforce basically doesn't attack that problem.

    9. Re:We use Perforce at work by jkujawa · · Score: 3, Informative

      We use perforce, too. We've been less than satisfied with it. I'm don't know the size of the companies people with positive views of perforce are working for, but with a couple hundred developers, and on the order of a couple of thousand different code lines, the perforce server often grinds to a halt. More hardware has been thrown at it, more disk, etc, and no one can seem to figure out where the bottleneck is. It's very unpleasant when checkouts are taking 10 minutes, in the middle of the day.

    10. Re:We use Perforce at work by curunir · · Score: 2

      I totally agree...I've used Perforce, SourceSafe, CVS and PVCS and Perforce was (and is) far and away the best I've used. From our senior developers to the front-end html people, everyone could learn it pretty easily.

      Plus it has some really cool features. The ones I like most are: integration with Ant, the ability to monitor individual files/directories for changes (it sends email when changes occur...our dba *loved* the ability to be alerted whenever someone else checked in changes to db scripts) and allows grouped check-ins.

      Pretty much the only negative thing I can say about it is that it isn't open source.

      --
      "Don't blame me, I voted for Kodos!"
    11. Re:We use Perforce at work by pivo · · Score: 2, Informative

      We also had some performance problems with perforce. They've made a few updates to their software on our reccomendation and things generally seem a lot better. I'm not an expert, but here are a few things to keep in mind:

      Avoid 'p4 dirs //*'.

      Avoid remote depots. Perforce's implementation may slow down commands such as "p4 dirs"

      Do not create clientspecs or branchspecs with "//someProduct/*/main/..." or a similar file spec.It may block all update access (p4 edit and p4 submit) to all of Perforce for all users for five to fifteen minues. Explicitly list depot, project, and codeline in all branch specs.

      That's a short list, our release engineering dept. has a long page of things not to do with perforce. I have to say, we've gotten it to run pretty quickly now, after several months of getting used to it.

    12. Re:We use Perforce at work by e40 · · Score: 2

      Richard, I tried twice. First, about 2 years ago, then last year. Both failed. I talked with someone in tech support (forget the name). He was responsive to email, but said he couldn't help until we purchased the product. I was reluctant to purchase until the conversion was done. Catch-22.

      Currently, I'm going to wait and see if subversion comes out in a timely fashion (they are making milestones pretty well) and if the conversion process works. svn, as described on their project page seems very good. I'm hoping it is as good in practice. If not, I'll probably be contacting you again.

    13. Re:We use Perforce at work by forgoil · · Score: 2

      Wasn't that supposed to be BitKeepers big feature? I have never had any use for it, but I can see that a different strategy would be neccessary then,

  5. The choice is clear by BoBaBrain · · Score: 5, Funny

    Shouldn't we just use whatever source control system the CVS developers use?

    --
    I am a Karma Library.
  6. More open-source revision control systems by dglo · · Score: 5, Informative

    Subversion isn't the only open-source revision control system out there. Check out these projects as well:
    OpenCM
    arch
    Stellation
    PRCS

    1. Re:More open-source revision control systems by Tei'ehm+Teuw · · Score: 2, Interesting

      Now, going against all political correctness, what about the versioning system coming with .Net? It's clean, powerful, easy to use and was built from the ground up for collaborative development. Yeah it may be from M$, but it's still a powerful option. Why shoot yourself in the foot just on the basis of "we don't like them"? Even if the product is better?

    2. Re:More open-source revision control systems by Bruce+Stephens · · Score: 4, Informative

      Also Aegis

    3. Re:More open-source revision control systems by pmz · · Score: 2

      Why shoot yourself in the foot just on the basis of "we don't like them"?

      Not choosing Microsoft's products is not a shot in one's own foot. It is a shot in theirs.

      History repeats itself, and the versioning in .NET will probably be unsupported in a few years and you'll be recommending Microsoft's next biggest and smelliest system, whatever that may be.

      For something so fundamental as version control, it is best to go with proven things: SCCS and CVS are decent and free, and there are companies such as Rational and BitKeeper when you need something decent and not free. Honestly, even something as simple as SCCS and shell scripts can go a long way for small to medium-sized projects with almost no risk that SCCS will suddenly go out of fasion (it's probably 15 to 20 years old by now and still useful).

    4. Re:More open-source revision control systems by MarkCC · · Score: 3, Informative


      Just a minor correction: Stellation is now out, open-source. The
      correct website for our open-source project is
      http://www.eclipse.org/stellation.

    5. Re:More open-source revision control systems by 4of12 · · Score: 2

      For me, all the hype and PR have tended to obscure what's really in .NET. Also, many of the language interfaces to it (VB, ASP, C#) do not have open source implementations. (Maybe Miguel de Icaza will be done soon:)

      That said, there are probably some really good sound technical ideas hidden in .NET after the surrounding marketing has been washed away.

      Subversion lets you use different low level layers for actually storing files, pluggin things through an API.

      That great idea is compounded by their objective of using WebDAV as a lower level layer.

      I like the idea of having an XML description of actions that need to be taken for a version control system. Perhaps .NET has some good ways for doing this, but I'm fearful of a simple open source tool acquiring too much bloated overhead (much in way that SOAP bloats XML-RPC) that could slow it down and make it dependent on more network activity than is always necessary.

      --
      "Provided by the management for your protection."
    6. Re:More open-source revision control systems by __aasmho4525 · · Score: 2

      i'm absolutely shocked that more people don't know about aegis.

      this thing corrects almost every design flaw that cvs has (and there are a lot of them due to its lineage).

      at this point, aegis has gotten no attention whatsoever, so now lots of redundant projects are underway to supplant it.

      i just don't know what exactly to do to get it coverage.

      Peter

    7. Re:More open-source revision control systems by [Xorian] · · Score: 4, Informative

      There's also Vesta, which has some pretty cool features

      --
      CVS is teh suck. Use Vesta instead.
    8. Re:More open-source revision control systems by DunbarTheInept · · Score: 2

      The quality of a program is irrelevant if you have to run it on top of a bad OS. MS makes okay apps. The problem is that they have keep releasing them for the worst OS on the planet.

      --

      Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

    9. Re:More open-source revision control systems by Florian+Weimer · · Score: 2

      Distributed development with Aegis is different from CVS, of course, but it mirrors the way some projects are run (for example, the Linux kernel up to the introduction of BitKeeper).

  7. one word: patchsets by kix · · Score: 3, Interesting



    add that to cvs and make it actually work correctly and it would be pretty good.

    at least that's what I miss the most when using cvs - the ability to change several files and commit them at once and when I do an update on a file it sould figure out all the dependencies on all other files ant update those as well. how sould it figure this out? simple - all the files that were commited at one time sould be also updated together, because it is bloody likely that they depend on each other.

    of course this process should be repeated on all files that are a part of the patchset so that after updating a single file to a new version all the other files are compatible with it.

    and yes, I know this could be theoretically done with tagging but then I would have to tag all files when commiting every time and it still does not handle the case when one file of the patchset depends on some other patchset.

    --
    I am SO cool I can keep meat fresh for a WEEK!!!!
    1. Re:one word: patchsets by Ivan+Raikov · · Score: 2

      and yes, I know this could be theoretically done with tagging but then I would have to tag all files when commiting every time and it still does not handle the case when one file of the patchset depends on some other patchset.

      Not true. CVS allows you to create the so-called modules, which can be groups of files or a directory. Then you can use commands like `cvs ci modulename' or `cvs co modulename' in order to update/checkout only certain sets of files.

      Not sure about your second case, but it sounds more like bad organization than anything else -- have in mind that CVS allows you to create module aliases which refer to groups of modules. Not exactly detecting if a single file in a module depends on files in another module, but still...

    2. Re:one word: patchsets by Ivan+Raikov · · Score: 2

      now I change b and c and commit them. now I change a and c and commit them. now I go to another server that also had the original files and do an update on a and now it sould figure out that a was commited with c and try to update those and then notice that c is out of date and figure out that the last time c was commited it was commited together with b and therefore it must also update b and so on until there are no more dependencies.

      OK. So when you do cvs update in a directory that has been checked out, CVS is going to update all files that were modified and committed in the repository after the checkout you made in the current directory. Did that make sense?

      Here's an example:

      [server2]$ cvs co dir1 # check out source code on server2
      [server1]$ cvs ci b c # commit b and c on server1
      ...
      [server1]$ cvs ci a c # commit a and c on server 1
      [server2]$ cd dir1; cvs update
      cvs server: Updating .
      U a
      U b
      U c

      All three files that we just committed were updated on server2. If we don't want to update _all_ modified files in a directory, we can specify a module comprised of only the subset of files we're interested in, and work with this subset instead.

    3. Re:one word: patchsets by Ivan+Raikov · · Score: 2

      Oh, I see. Indeed, in that case the proper way to go with CVS is to create a branch and modify the files in it to your customer's preferences. For example, you could have a branch called "bobs-patches", that contains the changes Bob needs.

      Whenever you make bug fixes in the main source tree, you would then use the `cvs update -j' command to update "bobs-patches" to contain the bug fixes also. But of course, I'm assuming that you branch once and you maintain branches for each customer. If you do very small changes frequently, then CVS would probably be getting in the way all the time. But in that case, I'd argue that most revision control systems would probably be getting in the way.

  8. One thing must exist by truthsearch · · Score: 4, Interesting

    Absolutely key is (relatively) easy integration with IDEs. Preferably a nice set of APIs for any IDE creators to use to interact with the version control server. I would imagine those same APIs could then be used by any GUI developers of the version control system. IMO without the ability of the system to integrate well with IDEs adoption would be slow.

    1. Re:One thing must exist by pmz · · Score: 2, Interesting

      Other than adding a great deal of complexity to an already complex system, do graphical IDEs really contribute anything useful?

      The time spent learning an IDE whose scope is pretty narrow is time that could have been spent learning general widely-useful tools, such as vi or emacs, make, and sh.

  9. Need new languages by Bookwyrm · · Score: 5, Interesting

    Probably to make the 'next leap', so to speak, in version control systems for programming is to design or modify a language so it is more version control friendly, or add much more language-sensitivity to the version control system.

    Most people will probably hate this, but for instance, if a comment for a specific line/block of code always had to appear in a specific area or syntactically consistant way such that the version control system can recognize that if a piece of code changed, but not the comments for that code, it could ask if the comments for the code need to be updated as well. Or if a function's parameters or return value have changed, whether or not all instances/uses of that function have also been changed, etc.

    That is not to say that you cannot create a great system on top of existing languages, but that perhaps making some minor tweaks in the language to make the language itself easier to manage/version, then this may open up new tool possibilities.

    1. Re:Need new languages by des09 · · Score: 2, Interesting

      I was just thinking exactly the opposite thing... as a developer who works with Java, VB, XML, HTML, JavaScript, SQL and the occasional bash script, I think the problem is that the version control systems know nothing about the languages. I think the main issue is that version control is it is viewed as a control system, not a development tool, something to help deliver the highest quality code.

      Especially with Java and cvs I am always frustrated that CVS does not know the difference between a .properties file, a jar, .java etc, and more to the point, CVS make refactoring across packages a very laborious and time consuming task. Visual SourceSafe and VB are better suited to each other, but still no great match.

      --
      .sigless since 2003
    2. Re:Need new languages by jhines · · Score: 3, Interesting

      Don Knuth's language web had an interesting feature, the ability to generate documentation from the same source code.

      I think coders would be a lot better at commenting their code, and writing documentation if it was all integrated.

      The ability to easily document a functions purpose, used data, and other information would be nice.

    3. Re:Need new languages by MarkCC · · Score: 2


      I agree completely. One of the goals of the system that I'm
      working on (Stellation) is the integration of pluggable
      semantic components for particular programming languages.

      Our basic idea is that if you don't know the language that
      something is written in, you treat it as text, providing all
      of the capabilities of a system like ClearCase. But if you
      do know the language, take advantage of that support, and
      provide extra, language specific capabilities.

      -Mark

    4. Re:Need new languages by Twylite · · Score: 2

      There is a natural extension to this which is just begging to happen: dependancy analysis and locking and/or approval mechanisms on a sub-file basis.

      Essentially, if the SCM can parse the language, it can figure out what its looking at (classes, members, functions, etc), and what other parts of the entire source code use what its looking at.

      Combined with an approval mechanism, the potential for code auditing is staggering: audit a function and mark it as such. No function can be considered audited if it calls a function which is not audited. If a function which was audited is updated, all functions which call it (in the new project revision) are no longer considered audited.

      Functions and function documentation are audited as a unit. The should be obvious, because the idea of invalidating the stamp of approval on functions which call altered code is based on the idea that pre/post conditions may not have been properly disclosed or checked.

      A class cannot be considered audited until all members are audited, and a file requires all contents to be audited.

      Implementing a system like this for a languge like Java would not be tremendously difficult; but C++ (especially) is a very complex language to parse and analyse in this manner.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    5. Re:Need new languages by stripes · · Score: 2
      A class cannot be considered audited until all members are audited, and a file requires all contents to be audited.

      Implementing a system like this for a languge like Java would not be tremendously difficult; but C++ (especially) is a very complex language to parse and analyse in this manner.

      Java can let you load a class by name and call it. The name can be dynamically constructed. So any function that does this is unauitable. (C++ can normally also do this, but there is no standard way)

      In both languages any virtual (or non final) member function might be a call to a never seen before class (if, for example you are a libarary).

      I don't think C++ is any harder to analyse in this way, both are quite difficult, and full of big nasty traps. C++ is quite a bit harder to parse though.

    6. Re:Need new languages by X · · Score: 2

      Actually, many Smalltalk version control systems (such as Envy) are entirely tied to the programming language/dev environment. Take a look at Visual Age, as it's version control mechanisms are very Envy-ish.

      Personally, I've found this to be less of an advantage than one might think. In general, it's good enough to work with files, and it's more flexible (particularly for cross-language development). If you have change sets, and if your language already supports some idea of seperation of components (for example Smalltalk allows you to seperate out the code for a method from the rest of the object), then you're fine.

      --
      sigs are a waste of space
    7. Re:Need new languages by Twylite · · Score: 2
      Java can let you load a class by name and call it. The name can be dynamically constructed. So any function that does this is unauitable.

      While this presents a tough problem for auditing, use of this feature generally only applied to plug-ins (Tomcat is a counter-example). Such a method can be considered audited if it takes the necessary precautions (as can be taken) to prevent abuse, and obeys the contract of the plug-in. That way, if you are dealing with an audited plug-in, the system as a whole can be considered audited.

      In both languages any virtual (or non final) member function might be a call to a never seen before class (if, for example you are a libarary).

      Yes, this does make the logic behind dependancy analysis very difficult. My feeling was that, in a given system (which is assumed to be complete) a method cannot be considered audited until all descendants which override it are audited. This would also imply that a class cannot be considered audited until a number of members from sub- and super-classes have been audited. A nasty business!

      I don't think C++ is any harder to analyse in this way, both are quite difficult, and full of big nasty traps. C++ is quite a bit harder to parse though

      Certainly there are issues (otherwise I would have written it this weekend ;) ), but (certainly for Java) I don't think any of them are insurmountable. Your comments and observations show that it would be valuable to gather a team to approach a problem like this; many heads are better than one (usually).

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    8. Re:Need new languages by Twylite · · Score: 2

      Sorry for the confusion, but I wasn't meaning that the SCM imposed a requirement for auditing - that would of course be optional. Rather, a file cannot be marked as audited until all of its contents have been audited ("a file requires all contents to be audited").

      I don't believe having blocks which can be marked unauditable is a good idea. Rather, the auditor can make a best effort to check the code, and mark it as audited with a comment that the code is unsuitable to the standard audit procedures (whatever they are). The auditing system treats all code as opaque anyway -- a change means the audit is invalidated.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    9. Re:Need new languages by stripes · · Score: 2
      Yes, this does make the logic behind dependancy analysis very difficult. My feeling was that, in a given system (which is assumed to be complete) a method cannot be considered audited until all descendants which override it are audited.

      That is an interesting approach, but it means your audited libs are not if they expose any virtual functions. Maybe not a big deal. On large projects it means maybe I can't audit all of my code until you audit some of yours, which can be a big deal. It also makes some forward progresses very hard to see.

      A long long time ago I wrote a bunch of code analysis tools for APL2 code. For a while I kept getting tempted to re-write them for C. When I learned C++, I just plain gave up. It is so much harder to figure out what function is being called when you just see t->foo()!

      I'm quite sure that only the parsing of the Java is easier then C++, not the actual analysis. Er, except maybe for templates. Drat.

      our comments and observations show that it would be valuable to gather a team to approach a problem like this; many heads are better than one (usually).

      Sometimes. Other times the many-heads produce a really complex set of goals, and the project flounders. A single head could produce a realistically small set of goal, write some code to half do the job, and then kick it on out where 50,000 people go "that's stupid, I could do better", and 3 people submit patches to make stuff better.

    10. Re:Need new languages by Twylite · · Score: 2
      On large projects it means maybe I can't audit all of my code until you audit some of yours, which can be a big deal.

      Yes, this is a hurdle that I saw. I think it can be avoided if you have a strongly modular system: audit each module independantly, making (and documenting) assumptions that calls to other modules are considered audited. Then the system as a whole can be considered audited when all modules have been audited.

      I think this would require some use of graph theory to prove, and may be a good exercise before I make any further assumptions about the workability of this idea ;)

      It is so much harder to figure out what function is being called when you just see t->foo()!

      Tell me about it ;) I spent a couple of months working on a reverse engineering system. Fortunately we weren't targetting C++ (at the time) - it was a prospect I was not looking forward to.

      But I still believe that if you take a module and can make that statement "assuming all the functions (list) which exist in other modules and are called from this one can be considered audited, this module can be audited", then you can audit virtual/polymorphic methods by auditing every such method in every class in that module.

      I'm quite sure that only the parsing of the Java is easier then C++, not the actual analysis. Er, except maybe for templates. Drat.

      An operator overloading, I'm inclined to think ;)

      Sometimes. Other times the many-heads produce a really complex set of goals, and the project flounders. A single head could produce a realistically small set of goal, write some code to half do the job, and then kick it on out where 50,000 people go "that's stupid, I could do better", and 3 people submit patches to make stuff better.

      There's always someone who has to take the overkill scenario ;) How about "a small positive number of heads (with attached bodies and in a state which would be considered "alive" by medical standards as applied to mammals of the genus homo sapiens sapiens) greater than one is in most if not all scenarios involving analysis and/or design a more effecient corpus for problem-solving that a single equivalent head" ...?

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    11. Re:Need new languages by stripes · · Score: 2
      An operator overloading, I'm inclined to think ;)

      Nope, that is just syntax to parse. Complex messy syntax, but still just syntax. Once you parse it, you treat it like a function call.

      Templates are more then syntax because use of a template creates a new type on the fly, so your type tracking system has to be able to handle making types when it sees templates.

      On the plus side, at least you are not using ObjectaveC which lets you pass messages to objects of a totally opaque type. At least with Java/C++ you always know (er, except with dynamicly loaded objects, which you say are normally rare) that a variable X is of type T, or any descendent of T. With ObjC what you frequently know about variable X is it is "some sort of object or other, maybe that someone wrote code for..." :-)

      There's always someone who has to take the overkill scenario

      Oh, I didn't mean to imply overkill so much as if you have a hard problem, sometimes it is easier to solve part of it, and then ask for help, then start off with none solved and ask for help.

      I don't know that this is such a case, but it could be!

      (personally, I'm less interested in the audit then the function call tree the auditor has to build, and the variable reference tree it should build as well....er, has too if you care about constructor/destructor calls)

    12. Re:Need new languages by Twylite · · Score: 2

      An example of a nasty problem I can think of with operator overloading is that both dereferencing operators can be overloaded, which adds a huge amount of complexity to the analysis. A->b() may not call method b() of class A!

      Some other complexities of C++ include pointers and references; all Java data is passed by value (this is how the spec describes it, but "values" of objects are in fact references), making its behavioural model more simple.

      I am also interested in the dependancy tree that will be built; while I am envisaging its use in a specific context here, it is a generally very useful structure to have, and you can derive a huge amount of information from it.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
  10. Version control system minimum requirements by Anonymous Coward · · Score: 5, Interesting

    IMHO, these are the bare minumum requirements:

    1. atomic commits - your change happens only if all the
    files can be processed. This prevents a corrupted workspace
    when CVS processes half your files in a commit and then exits
    on an error throwing the other half of your files on the floor.

    2. change list management - all commits have a unique
    reference number. CVS process files by directory instead of
    by workspace, so it is impossible to tell which files are
    associated with a commit.

    3. access control by workspace or workspace directory - the
    ability to give certain users or groups access to certain
    workspaces or directories. Ideally, access control can be by
    done by bug id.

    4. graphical resolve of conflicts - a graphical three-way
    diff is the only way to resolve complex conflicts

    5. The ability to move files and directories and maintain
    file history and label integrity from the client. CVS
    requires the whole workspace to be locked so that moves can
    be performed on the server side and does not maintain label
    integrity.

    6. web viewer and graphical difference viewer - the ability
    to browse via the web change set lists to see what files
    changed and what the actual differences were.

    7. the ability to integrate workspaces across projects - the
    ability to arbitrarily merge/integrate any source code from
    any project to any other project.

    8. powerful labeling features (parallel development and
    prior version support).

    9. rollback or undo multiple changes - this is great way to
    recover from a developer commit disaster.

    10. multi platform support - must run on all platforms.

    11. command line and graphical interface. Command line for
    scripts and graphical interface for those who can't work
    without it.

    12. push and pull notifications - built in support for e-mail
    and news group notification of changes in the workspace.

    Your humble build servant :-)

    1. Re:Version control system minimum requirements by C-C · · Score: 5, Interesting

      While I agree pretty much with the anonymous post above (which suspiciously matches with BitKeeper's features :-), at least one thing is missing:

      13. Version control on a sub-file granularity.

      While I agree that this is a difficult problem, a typical use case is the "split a file" problem, which is supported by none of the available VC systems.

      Most renames of files I have seen in large projects are not simple renames, but splits, where a file's code is moved to separate files due to a refactoring. Only one of those files can be associated with the old file using a rename-aware version control system. The revision histories of the functions in the other files are lost.

      I don't have experience with implementing version control, so I don't know how solvable this is, but I can dream, no?

      C-C

    2. Re:Version control system minimum requirements by ethereal · · Score: 2, Insightful

      I'll add a couple things:

      • Triggers - must be able to specify a script to run when certain events happen, like checkin, checkout, add label, etc. Triggers should also be able to prevent an action from occurring if the trigger script decides that a condition has not been met.
      • Multi-site - the system must be set up so that developers at multiple sites around the world can collaborate on the same sources fairly easily. This is more of an enterprise feature, I would think.
      • Securable - at least make it tunnelable over SSH or something like that, at a minimum.
      • Transparency - must be able to dig out all of the details about the system and the files and versions contained in it automatically from the command line or some API, so that the system can be analyzed and manipulated by automated tools for metrics reporting, etc.

      Here's a good question that you raised - is a three-way graphical merge really the best way to do a complex merge? I've done a lot of them and it mostly works, but at times it still seems like a sub-optimal solution. Does anyone else have a better system for complex merges that they do?

      --

      Your right to not believe: Americans United for Separation of Church and

    3. Re:Version control system minimum requirements by Mika_Lindman · · Score: 5, Funny

      13. allows version numbers larger than 1. I'm tired of all open source being with version numbers like 0.997

    4. Re:Version control system minimum requirements by mpcooke3 · · Score: 2, Insightful

      The first two are of particular importance.

      By processing the 'commits' as a transaction it guarantees that only one person is committing at a time.

      With both 'Transactions' and 'change list management' commits can be rolled back in reverse order to revert the system to any previous state should a major commit (with many files) go wrong.

      I think good basic operations would be 'Catch up' (merge changes into local workspace) then you can run tests and check everything is ok. Then the atomic 'Commit'. The system would also needs to check that no other transactions has been processed between the 'Catch Up' and 'Commit', or the developer should be forced to catch up again.

      Why do most version control clients have 6 million options but don't contain just these simple 2 operations you want? Probably mainly for historic reasons I guess.

      I think the version control system on VisualAge for Java MicroEdition had a system like this called 'Team Streams'.

    5. Re:Version control system minimum requirements by self+assembled+struc · · Score: 3, Insightful

      Honestly this sounds a lot like many of the features that perforce has (which I use at work too).

      Atomic commits -- if perforce can't process all your files in your changelist, it won't submit them. this means if one of hte files in your list is out-of-date with the server version (your revision number is lower than the one on the server, which means you have to resolve the merge) or if you've done something that perforce doesn't like with a file. you can't force it either.

      changelist and access control - perforce sets up "clients" which map it's depot on your local computer. you can create as many changelists as you need and as you check out files add them to various change lists, submit one changelist while you have others open, submit some files from a directory and keep others checked out

      web viewer/graphical diff - there's a web viewer and the windows version has a diff program.

      it does labelling, it supported on EVERYTHING thing (including Mac os pre-X via the Macintosh Programmers Workshop via the Command Line, and OS X via command line)

    6. Re:Version control system minimum requirements by Alan+Shutko · · Score: 2

      You will be able to do something like this in subversion. Since it supports file copies with history, you could copy the file to separate files, then remove the stuff you don't want in each file.

    7. Re:Version control system minimum requirements by maraist · · Score: 2

      Only problem with perforce is it doesn't support distributed offline work.

      You have to connect to the central database for EVERYTHING. All files are locked until you manually checkout a file. If you have a slow network connection or disconnect periodically, you have to reconnect every time you want to make a change (add a file, edit a file, change attributes on a file, see what files have changed, etc).

      For open source development this can be a major problem.

      Further, a centralized database can be problematic for separate development trees (not branches). The best you can do is copy the database to a new machine and run from there.

      One feature I like of "arch" is that you can have decentralized development with independent trees/databases, and merge them back into the main database at a later date. There are several frustrations/limitations with arch so I'm not recommending it, just showing that someone else has solved this problem.

      In general, I like CVS's (and arch's) view-private meta-data which allows a subset of operations to be performed. Not least of which is which files have been changed,and the ability to modify files without central authority. Other than that, I like just about all the features of perforce.

      --
      -Michael
    8. Re:Version control system minimum requirements by Canis+Lupus · · Score: 2, Interesting

      I wonder if the VC could track modules (i.e., classes and namespaces to use a C++ reference) instead of files? Granted the VC would need the ability to parse the material which is being controlled, but changes can be tracked per module (i.e., new function added, base class derived, etc.) Just a thought (seems rather complicated)

      --
      The real silver bullet to good programs is caffeine; lots and lots of caffeine! *twitch, twitch*
    9. Re:Version control system minimum requirements by [Xorian] · · Score: 3, Informative

      A couple other posts have mentioned Vesta, which goes a long way towards meeting the requirements you lay out. (For the sake of disclosure, it's only fair to mention that I am currently the primary maintainer of Vesta, and am somewhat responsible for getting it released as free software.)

      1. atomic commits - your change happens only if all the files can be processed. This prevents a corrupted workspace when CVS processes half your files in a commit and then exits on an error throwing the other half of your files on the floor.

      Vesta absolutely does this.

      2. change list management - all commits have a unique reference number. CVS process files by directory instead of by workspace, so it is impossible to tell which files are associated with a commit.

      Vesta does not explicitly provide this, however it's very easy to get with a simple diff command. The Vesta repository has a filesystem interface which makes it possible to directly access all versions past and present. A simple diff -r will show exactly what changed between any two versions. The also has other fun uses (e.g. greping across versions).

      3. access control by workspace or workspace directory - the ability to give certain users or groups access to certain workspaces or directories. Ideally, access control can be by done by bug id.

      Vesta's access controls are essentially UNIX file permissions. Through the repository's filesystem interface, you can control who can read and write (commit new versions) at a variety of granularities with chown, chgrp, and chmod.

      4. graphical resolve of conflicts - a graphical three-way diff is the only way to resolve complex conflicts

      Vesta provides no direct help here, but again, because of the filesystem interface to the repository, it's easy to apply standalone diff/merge/conflict resolution tools.

      5. The ability to move files and directories and maintain file history and label integrity from the client. CVS requires the whole workspace to be locked so that moves can be performed on the server side and does not maintain label integrity.

      Vesta's unit of version control is a directory. Between versions, files and subdirectories can be added, removed, renamed, etc.

      6. web viewer and graphical difference viewer - the ability to browse via the web change set lists to see what files changed and what the actual differences were.

      Not built-in, but already implemented on top.

      7. the ability to integrate workspaces across projects - the ability to arbitrarily merge/integrate any source code from any project to any other project.

      Vesta includes sophisticated cross-site features, including replication and remote checkout/checkin. It's been successfully applied before by a team spread across the US east and west coasts with hundreds of megabytes of sources.

      8. powerful labeling features (parallel development and prior version support).

      9. rollback or undo multiple changes - this is great way to recover from a developer commit disaster.

      Vesta really shines in these areas. Vesta is also a build tool, and every build neccessarily includes a complete specification of the set of immutable versions it uses. Builds are also themselves immutably versioned. This makes it easy to determine which source componenets have changed between two versions of a build. Also, since it's as easy to select any historical version as it is the latest one, rolling back changes is trivial.

      10. multi platform support - must run on all platforms.

      We're still working on it (at the moment just Linux and Tru64 work), but hey, it's free software, and we'd love to have more developers/porters.

      11. command line and graphical interface. Command line for scripts and graphical interface for those who can't work without it.

      At this point there's a command-line interface and some rudimentary support for repository operations in the web interface. Again, it's free software, and we'd love to have somebody contribute more layered tools.

      12. push and pull notifications - built in support for e-mail and news group notification of changes in the workspace.

      Nothing built-in yet, but we've been talking about doing it, and it may happen soon.

      There's a short summary of Vesta's excellent capabilities on it's web site (which includes several points not mentioned here), that I would recommend anybody interested in better version control/configuration management check out.

      --
      CVS is teh suck. Use Vesta instead.
    10. Re:Version control system minimum requirements by iabervon · · Score: 2

      Rather than having the merge program part of the version control project, it ought to be at least partially separate. You often want to make a few changes to a project from somewhere you don't have a working directory, in which case, you'll want to be able to resolve conflicts in TTY mode if need be.

      Furthermore, if your merge tool is separate, it may become independantly popular, and may be used with other version control systems. Of course, there may be issues with creating a general interface for the metadata that different systems provide.

    11. Re:Version control system minimum requirements by spitzak · · Score: 2
      This should be possible. I don't know how it would really be done, but imagine if you made a file that was all the code concatenated together with marker lines added between each file saying what the file name is. Then splitting some source code would simply be the insertion of a single line, renaming a file would be the changing of one line, deleting a file would delete a block of lines, and new files would be added on the end. It seems to me that you could use CVS to manage this file and re-joining split files would be easy. It would not allow you to neatly join two files that are not adjacent, but a more advanced diff system that could detect a moved block (which would be very useful inside source files) would be able to do this. Such a system could also detect code moved from one file to another.

      Any real system would hide this big file from the user, but it does seem like a good approach is to internally get rid of the files/directories as soon as possible and imagine the entire project as a single stream of bytes and then do advanced analysis of the differences and merges on this stream.

  11. some thoughts by TTimo · · Score: 3, Insightful

    CVS may be the best open source version control tool right now, it still suffers from a lot of shortcomings.

    Generally speaking, stuff like commit emails need the addition of specific wrappers (see http://cvsreport.sourceforge.net for instance), and CVS doesn't scale well to big projects .. doesn't handle big binary files in a satisfactory way

    It's quite usable .. but I'm really waiting for subversion to get mature and usable for production..

    1. Re:some thoughts by krogoth · · Score: 2

      Actually, before I changed to BitKeeper I added commit emails without a wrapper, mostly because I couldn't get the wrapper working.

      --

      They that quote Benjamin Franklin on liberty and safety deserve neither.
  12. Yes, it is time for a new tool... by mdorman · · Score: 5, Informative

    Regardless of where your particular alliegances lie---whether it be with arch or subversion or opencms or bitkeeper or whatever---it does seem obvious that the open source community is asking things of CVS that it is just not able to deliver. One need only look at some of the problems large projects like GCC have with it to realize that some alternative is needed.

    And if that doesn't convince you, well, it's not for nothing that some of the primary developers of CVS are now working on subversion.

    Now, of the new crop of tools, the only one I've played with extensively is subversion---but I am absolutely blown away by how well it seems to make common operations simple. Even with its documentation in a very rough state, and despite its many architectural differences from CVS (with which I have several years of experience), I was able to figure out how to maintain a vendor branch and local modifications, perform updates on both, merge them, tag releases, etc., very quickly and easily. Its developers have obviously looked at CVS to see what things it does not do well that people do frequently, and designed accordingly.

    Is subversion for you? Who knows. But if you use CVS a lot---especially if you find yourself cursing CVS a lot---you should do yourself a favor and look at some of the alternatives. A lot of lessons have been learned, and you should avail yourself of the benefits.

    --
    Urgle.
    1. Re:Yes, it is time for a new tool... by K'tohg · · Score: 2, Funny
      And if that doesn't convince you, well, it's not for nothing that some of the primary developers of CVS are now working on subversion.

      Can you back this up? I'm interested to see.

      I have to admit I'm biased to CVS. I love it so much that I used to sleep with a floppy containing the binary under my pillow for a month. (ok slight exageration).

      Anyway I see a big breach in the "open source" way of doing things. In the past a simple project would grow as needed. If features didn't exists or bugs were around. Someone would fix it.

      CVS has been the de facto standard for version control in the "open source" community especially in say SourceForge. Now it's being abandoned like a poor basterd child. I would like to see just why a proven software that in many ways is one of the best, known to out beat VSS the lord and ruler (MicroSoft), is now now a heap of garbage not worthy of the "open source" way of collaborative enhanchments.

      Instead of throwing it away reuse it. If RCS isn't possible rewrite it. Convert CVS to a new and better way. But why destroy the one faithfull servent because it's old or doesn't live up to expectstions. We're smart people. If Linux had the same problem would we abandon it at a whim? No, I'd like to belive we would make it better. Did the GIMP give up when they were faced with a crappy Windows ToolKit?

      It sounds as if it is a tempermental thing that many people are assamed of the CVS name. I, who belives in CVS and sometimes worships CVS; who in my many years of administration have never seen a problem can't fathom why it would be so ridiculed and persicuted in a world that pride themselves on co-operation and "freedom" to enhance and superiorize software at will. A huge efort to give CVS up is underway and no effort to bring CVS to the top of the ladder. It seems counter productive and contrary to what "free software" or "open source" ideals used to be.

      --
      > SELECT * FROM brain_cells WHERE synaptic_rate > 0
      0 row returned
    2. Re:Yes, it is time for a new tool... by mdorman · · Score: 2, Informative

      Jim Blandy and Karl Fogel were both formerly heavily involved with the maintenance of CVS, and although only Karl is still active, Jim does show up occasoinally.

      As to enhancing not rewriting: many of the problems people have with CVS grow directly from its origins as a set of wrappers around RCS. It is file oriented, not project oriented. This imposes certain limits on what it is practical (if not possible) to do within the framework of CVS.

      As for your GIMP example---well, in fact, the GIMP guys did exactly the same thing. The original GIMP was in Motif, but they scrapped that and wrote gtk. This is, I think, entirely analogous to what subversion has done with respect to CVS.

      Sometimes the only way to progress is to make a distinct break with the past.

      --
      Urgle.
  13. I think the question is wrong by lfourrier · · Score: 4, Insightful

    In fact, you exhibit a common misconception. If you want version control, CVS do the work. But what you seem looking for, and what do many of the alternative proposed in the replies is configuration management.
    Now, what an ideal system would be? I don't think one size fit all. You need very quick local net access (bye bye CC), and you need infrequently, losely connected internet developpers. But not at the same time. So I don't think tere is one unique response to your question.

    1. Re:I think the question is wrong by krogoth · · Score: 2

      BitKeeper has a nice solution to this. It builds changesets when you commit your work, and then you can distribute those changeset with various methods - bk push will use ssh to send them directly to the server, but you can also email them.

      --

      They that quote Benjamin Franklin on liberty and safety deserve neither.
  14. Re:Clearcase... by Anonymous Coward · · Score: 5, Informative

    Clearcase might cut it for most corporate types. Sure it's got tons of features, but you'll get a groetesque design and a bad implementation for free.
    (Try scaling a clearcase server and you'll see how bad the design is... Hint: Adding more CPUs won't help you.) No, most people won't care, but you do if you need to scale it to several thousands of active developers.

    Even though I dislike the product, its has more functions than you'll ever need. Integration with different platforms and products are superb, if you're willing to pay...

    However it lacks in areas where the developer isn't fully connected (i.e. with LAN access to the view and vob servers).

    IMNHO, what the open source community, by definition, needs is something that'll work in a distributed (and disconnected) environment. Clearcase does NOT come even close to delivering that, CVS does, but functionality wise, BitKeeper blows them both away.
    I haven't looked at SubVersion in a long time (before it was self hosting) and it looked promising, but IIRC it lacked some of the more advanced functionality that BitKeeper has.
    Personally I'd much prefere using a completely free version. Not because I don't like to support the BitKeeper team (I'll buy the product if I use it commercially!), but because of the open logging function.
    It just comes down to the fact that I like my privacy...
    -oswa

  15. From my perespective:Need Windows Support by haplo21112 · · Score: 4, Insightful

    My largest problem with most of these revision control systems for Open source is the Lack of the Windows based Servers...I Know I know...but unfortunately most of the development I do is for the company I work for, and I just don't have a choice in these things. I have to develop for windows here, and I have to use windows systems, NO Linux, BSD, etc allowed. However I can't stand most of the Closed Source systems, I would love to be able to use one of the open source systems at work. Before you get tofar down that road of thought, Cygnus(or VMware, etc) is not the right fix here either, the server team does not allow that sort of software on the servers.

    --
    Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.
    1. Re:From my perespective:Need Windows Support by jdh28 · · Score: 3, Informative

      There is quite a mature native Windows port of cvs that we've been using for quite some time.

      john

    2. Re:From my perespective:Need Windows Support by r00tarded · · Score: 3, Informative

      plus tortoise which has been working very well for myself and some co-workers.

    3. Re:From my perespective:Need Windows Support by haplo21112 · · Score: 2

      If they can't ideantify the machine then the NetworkNazi's pull the lan connection....

      --
      Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.
    4. Re:From my perespective:Need Windows Support by haplo21112 · · Score: 2

      yeah I wasn't quite lucid this morning, and I was listening to RUSH, so that was the word that came to mind, but I ment cygwin....
      The trouble is what cygwin does and how it modifies and changes things. I built a test box with it once and as soon as the server team looked into it, they panned it and wouldn't approve loading it on the system.

      What I was really saying is that tools which would make NT act other than its out of the box intention such as getting Unix behavior through cygwin, or even emulating unix in a vitual box under VMware is a no no here....

      However I could sell a tool such as CVS...if it ran as a native NT service and didn't require other tools to be loaded on the machine like Cygwin...Jrun on a web server doesn't even pass muster around here....

      --
      Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.
    5. Re:From my perespective:Need Windows Support by Fulcrum+of+Evil · · Score: 2

      Convince a VP that your linux box will help things along by being more cost-effective, faster, or whatever and have him grant you an exception.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    6. Re:From my perespective:Need Windows Support by Phronesis · · Score: 2, Informative
      However I could sell a tool such as CVS...if it ran as a native NT service and didn't require other tools to be loaded on the machine like Cygwin

      So look at cvsnt. It meets your requirements:

      • Runs a cvs server as a simple native win32 service under WinNt, Win2K.
      • Has a Win32 style control panel to configure the service.
      • Builds with Visual C++, so no funky cygwin cruft required.
      • Allows pluggable network protocols as separate dll's, so you can add or remove a protocol without needing to restart the service.
      • Offers additional features beyond core CVS:
        • 'ls' command to list the contents of the repository, not just dump modules file as 'cvs co -c' does.
        • sspi and ntserver wire protocols for native Win32 authentication, encrypted network traffic.
        • User impersonation (equivalent of Unix setuid).
      • Good support from active mailing list.
    7. Re:From my perespective:Need Windows Support by haplo21112 · · Score: 2

      I wish, but going anywhere further up the ladder than your immediate supervisor is a CLM.

      They seriously frown upon going over other peoples heads around here.

      --
      Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.
  16. object changes on tasks by beofli · · Score: 2, Informative

    Look at Continuus Versioning Control System: every change on an object belongs to a certain so-called "task" (or more than one task). tasks belong to a certain task-folder and task-folders can used for releases. Continuus has a nice flexible database, but the disadvantage of this is that it makes it complicated for people to learn it fast.

  17. Key Feature: directory awareness by antony · · Score: 5, Informative
    The most serious flaw in CVS, IMO, and the most important feature to address in any new system, is CVS's total lack of understanding of directories. If you ever want to change the structure of your CVS controlled source tree, you either have to:
    • fake out CVS by doing a remove/add pair on every file you want to move (which means you lose the revision history of each such file!), or
    • manually move files around in the repository (which entirely defeats the purpose of using a revision control system in the first place!)
    If anyone out there creates a successor to CVS, please fix this fatal flaw!
    1. Re:Key Feature: directory awareness by tazzzzz · · Score: 2, Informative

      Meta-CVS is a wrapper around CVS that adds directory structure versioning.

    2. Re:Key Feature: directory awareness by spitzak · · Score: 2

      I'm pretty certain all of the listed replacements, and every other one everybody has thought of, addresses this problem. It is the most obvious defect in CVS, and in my limited use, the only one that has really hurt the projects I work on (simple things like deciding to change all the .C files to .cxx so stupid Windows can compile them as C++ required the entire revision history to be deleted and forced everybody to update every file, and now we discover that .cxx is not the most popular Windows extension and we should be using .cpp! I also would like to fix the capitalization and standardize the prefixes on source files and there is a strong disincentive to do this).

    3. Re:Key Feature: directory awareness by fferreres · · Score: 2

      Bad manners don't get you anywhere.

      But you are lucky anyway because others (subversion, etc) have already addressed the issue.

      The only problem is losing the nice frontends like tourtoise CVS (can remember the exact name) . To bad my Windows pals will NOT want to learn a command line interface :(

      It would be nice to have a generic system, where you can just add plugins to manage other data (like Abiword docs, or GNumeric files). That would make a revolution (would be nice to see that patented an Micrsofto locked out :-).

      --
      unfinished: (adj.)
  18. Re:Clearcase... by ethereal · · Score: 2, Interesting

    ClearCASE rocks in terms of scriptability, built-in triggers, etc. Also I much prefer branching individual files and using views, to the typical Open Source CM scheme of having separate trees. Too bad that the ClearCASE *nix GUI has gotten progressively worse for two major releases since their high-water mark (IMHO), ClearCASE 2.1. They've never fixed the problem where sometimes you click to select a version and it looks selected but isn't really, and in many cases have introduced GUI bugs, made the whole thing slower by using a special "properties browser", etc. I have a bunch of hacks in ~/.grp to get it customized back to the way that it used to work so that it's even halfway usable.

    --

    Your right to not believe: Americans United for Separation of Church and

  19. Look to ClearCase for some pointers by EasyTarget · · Score: 5, Informative

    I'm a ClearCase specialist so I'm biased.

    However ClearCase has some -very- good features, and here is what I would arrive at (ideally):

    1) Make your repository a mountable file system, supporting multiple types of connection, NFS, SMB, Active Directory, FTP, etc.. When connecting you must specify a profile to be used.

    2) Make every user have a number of profiles (Min:1) (like ClearCase views), these profiles contain -all- the info needed to access file versions correctly. They should allow sharing ('base my profile X on the profile Y created by user Z'). And support concepts such as labelling, conditional branching, etc..

    3) All profiles are managed from a central server (redundancy?) via a web interface (to achive cross-platform conformity) and command-line interface (SSH based) for scripting/power-users.

    I could go on forever, but I think the three above points are the things that matter most to me. Obviously you also need security, administration, storage, etc.. but I think that making files available simultaneously via many common file sharing protocols would produce the greatest benefit.

    Finally: MAKE DIRECTORIES VERSIONABLE/BRANCHABLE!, yes it causes some potential headaches, but it's benefits easily outweigh them.

    --
    "Oops, I always forget the purpose of competition is to divide people into winners and losers." - Hobbes
    1. Re:Look to ClearCase for some pointers by maraist · · Score: 2

      We used clearcase extensively at an old company of mine, and it was great for internal projects. I definately don't think it has any place for open-source, however. Mounting file systems over the internet is definately out.

      As someone pointed out, many of the types of issues questioned in this tread are configuration management issues, not version control issues. Case in point, as powerful as clearcase was, we developed a MASSIVE set of wrapper scripts to automate many regular and complex tasks. These scripts would have been portable to many styles of version control (though probably not CVS).

      The main thing I didn't like about clearcase was it's dependence on the central server. I personally hate operating off mounted file systems. They're great for sharing info, but I've flat out refused to make my home directory nfs'd for a good reason.. It's slow and unreliable. There's always a point where something goes wrong or some administration is going on behind the scenes, and your desktop freezes. Likewise compilations are many times slower due to massive accesses to medium to small sized files.

      It is great for administrators though.. Backups are a sinch (since distributed data is all really stored centrally). It's also somewhat scalable since you can have separate servers perform different functions.

      It is expensive, however; both in licensing and hardware.

      My 10b cents.
      -Michael

      --
      -Michael
    2. Re:Look to ClearCase for some pointers by jrumney · · Score: 2, Insightful
      I'm a ClearCase specialist so I'm biased.
      That's why I don't like ClearCase.
      You shouldn't have to be a specialist to use a version control system.
    3. Re:Look to ClearCase for some pointers by spitzak · · Score: 2
      Mountable file system is a bad idea for normal Open Source development. You want to allow somebody to mess with the code without being connected to the internet, and you want to allow somebody you don't really trust to look at the code and try their own experiments without any possible risk to the central system. Also there are lots of people who will check stuff out with the intention of doing some great and wonderful addition, but then do nothing, and it would be preferrable if such a person cost zero resources after they got the code.

      For these and many other reasons the private check-out style of CVS is much better. All the smarts needs to be done at the moment a user decides their changes should be merged back into the central database.

    4. Re:Look to ClearCase for some pointers by k8to · · Score: 2

      Ugh, as expected, you're wrong on all points.

      1) Make your repository a mountable file system, supporting multiple types of connection, NFS, SMB, Active Directory, FTP, etc.. When connecting you must specify a profile to be used.

      Filesystem semantics are not version control semantics. The semantics of all those filesystems and things are very different. Using a filesystem access method to get to the version control system intoroduces significant operating system reliance and issues.

      In general, this approach will complicate the server, complicate the client, introduce subtle consistency and corruption issues acrosss access methods, and offer no significant features that a local working set offers. In addition, most operations will be slower than a local set.

      2) Make every user have a number of profiles (Min:1) (like ClearCase views), these profiles contain -all- the info needed to access file versions correctly. They should allow sharing ('base my profile X on the profile Y created by user Z'). And support concepts such as labelling, conditional branching, etc..

      And _why_ do you need per-user views of the world? Can't the users figure out what files they want?

      In the smaller company/project case, you need a single view of the world that every single person sees. If they want to access older versions of things or other branches, they can all explicitly use the same controls to go see those things.

      In the larger company case, you may have specific lines of development, branches, and/or takes on the source base which relate to projects or reconfigurations of the sourcebase. Here you can set up views of the world which exist independent of the users, are created once and are consistent across all people who want to view the system in that way.

      The clearcase system of many views of the world per individual user leads to mass confusion and horror as no one knows what anyone is doing, everything is out of sync, and people copy increasingly broken configurations one to the next in a whisper-down-the-lane scenario from hell. This doesn't even require a poorly managed or large engineering team to do it. 50 developers or so working in the same arena and you've already lost.

      3) All profiles are managed from a central server (redundancy?) via a web interface (to achive cross-platform conformity) and command-line interface (SSH based) for scripting/power-users.

      Central server required. Great. No disconnected operation. No multiple office/continent/timezone, etc. development without huge costs. No realistic open source development model flexibility.

      Do we really need MORE indications that ClearCase is not a fundamentally workable tool?

      Just say "No" to ClearCase!

      Brought to you by the Campaign for Sanity for Developers.

      --
      -josh
    5. Re:Look to ClearCase for some pointers by ethereal · · Score: 2

      Very true - it is not a good fit for the typical open source project, but that's not the assertion that I'm arguing against :)

      --

      Your right to not believe: Americans United for Separation of Church and

  20. Two different useage models by nut · · Score: 2, Informative

    I think in designing a source control system you have to be aware that there are two different usage models.

    • A small team, working in the building or room, with strong lines of communication, using source control ans integral part of a larger formal development process.
    • An open source or widely distributed project where many or any people can contribute to the project, the lines of communication are weak, and the development process is largely ad hoc.

    CVS has been designed and mostly used for the latter. Tools like SourceSafe and Clearcase were designed, and are almost exclusively used for the former.
    One of the obvious differences in approach is file locking on checkout. Obviously there are others as well.

    I don't see any reason why one tool could address both models, with suitable ruleset configuration for the administrator. But you have to recognise, and design for, one or the other or both models from the start.

    --
    Never trust a man in a blue trench coat, Never drive a car when you're dead
  21. How many features are needed? by f00zbll · · Score: 2, Insightful
    I have a personal bias on this issue, but for me CVS is all I need. Having lots of fancy features like file-locks in StarTeam, and SourceSafe creates a false sense of security. I don't have 20 yrs of experience like some people, but in the 7 yrs of programming the organizational structure has a the biggest effect on source management and control.

    Trying to maintain a huge source database with hundreds of developers is basically impossible if there isn't a well established team structure with source managers. When there are fewer than 6 developers working on the same project, it is fairly smoothe. With 12 or more developers, it gets exponentially harder to figure what's going on. Unless there are very few check-ins or changes and the source is in maintenance mode.

    In active development phase, there may be dozens to hundreds of checkin's and changes per day, which may cause an unknown number of effects. It doesn't matter which development style you use, because in the end it comes down to whether or not the product is divided into small manageable chunks. Distributed development is a management artform and very few managers know how to do it effectively. I would put forth the idea that the tool for source management is really only 20% of the equation of distributed development/source management. Trying to address the problem by focusing on the symptons isn't a solution to the real cause of the illness.

  22. 10 problems with CVS by j1mmy · · Score: 5, Interesting

    1. Documentation is piss-poor. There's an easy solution to that one, but nobody likes writing documentation.

    2. Updates don't always work as expected. They won't grab new directories and a few other quirky things.

    3. Empty directories should be pruned by default in a checkout or update.

    4. I'm tired of seeing a CVS directory everywhere I look. How about .CVS instead?

    5. Access control is poorly handled. It's good that you can map virtual user names, but it would also be useful to control access by groups.

    6. Local CVS tree file ownership is by user, not the CVS owner. This opens up all manner of problems for users with a local CVS repository. Repository data should be in a non-user account, checkout should force authentication, and the server should handle who has access to what. This would not be tremendously hard to manage, since in the general case a user has access to a project or not. Fine-grained access control of the repository isn't a common necessity.

    7. Plays badly with (most) IDEs. When I want to work on a project in an IDE, it floods my checked out directories with all manner of crap I don't want in the repository. You can set up refuse files to clean these out, but it might break your IDE project. This is more a fault of IDEs than CVS, really.

    8. Needs smarter add functionality. I don't like writing stuff like 'find ./src/ -name "*.java" | xargs -n 100 | cvs add' just to hunt bring in my new source code.

    9. CVS is a boring acronym.

    10. I can't think of a tenth thing.

    1. Re:10 problems with CVS by Ben+Hutchings · · Score: 2

      2. Updates don't always work as expected. They won't grab new directories and a few other quirky things.

      3. Empty directories should be pruned by default in a checkout or update.

      Use the options -dPR. If you always want this behaviour, put the options in your .cvsrc.

    2. Re:10 problems with CVS by cartman · · Score: 2

      > 1. Documentation is piss-poor.

      On this point I disagree completely. CVS has the best documentation of almost any open source project I've seen. Cederqvist wrote a significant book on the subject, which is open source and freely redistributed. Typing "info cvs" brings up documentation that is coherent, explanatory, cross-referenced, and organized.

      Most open source projects have documentation that is a few pages of badly written english. Usually that documentation answers no questions and provides no information.

      I'm curious to know exactly what your complaints are about the current cvs documentation.

  23. Requirements of a decent version control system by smartin · · Score: 2

    A decent version control system should provide support for change packages - (atomic groups of changes that must be promoted through the system as an single unit). It also needs to provide support to manage a set of stages in the developement cycle so that changes can travel through development, qa, and production in an easily manageable manner. Hooks to integrate with issue tracking systems is also importand. Perforce has most of these features but they are somewhat cumbersome to use. MKS Source Integrity probably also has these features.

    --
    The difference between Canada and the USA is that in Canada healthcare is a right and gun ownership is a privilege.
  24. Re:Clearcase... by little1973 · · Score: 2, Informative

    I am working at a really large corporation and we are using clearcase. All I can tell CC is really sucks. CC always needs some maintenance. We have a dedicated CC expert and IT for maintaining CC. And CC is painfully slow if you compile something from the repository (at least on Solaris). So, we use the snapshot-view feature which is more like CVS. In short, we use CC as it were CVS.

    Of course, corporate policy forbids us to use CVS.

    --
    Government cannot make man richer, but it can make him poorer. - Ludwig von Mises
  25. What Exactly IS Wrong With CVS? by Ivan+Raikov · · Score: 5, Interesting
    Perhaps I don't have very complex needs, but it seems to me that CVS is already incredibly flexible and has all the advantages of Free Software. I'd like to point out the following reasons for continuing to use CVS (in no particular order):
    • Fits well with the Unix philosophy -- CVS, of course, builds upon RCS, and uses other Unix tools, most notably diff to accomplish its tasks. It also allows for custom shell scripts or programs to serve as handlers for various CVS operations. What other source control tool fit so well in Unix, and maintains the tradition of older Unix tools?
    • Customizable behavior -- CVS allows the user to provide three kinds of commit support files (like commitinfo, verifymsg, etc.) which are programs executed whenever files are committed.
    • CVS modules allow for multiple different definitions of collections of source code, so one is not restrained to just a directory and all the files contained in it as the smallest organizational unit.
    • Tags and keyword substitution -- CVS has a very powerful system for tagging files in various manners, and referring to those tags for purposes of commit/checkout/diff/revision history. I don't know how much better than that you can get. Substituting keywords, a favorite feature of mine, lets you include your version history in the sourcefiles -- this is important when you're working with other programmers and you want to spare them the inconvenience of having to do `cvs log' each time they want to see what changes you've made.
    • Repository format is plain text -- well, I am a staunch believer in open file formats, and plain text/diff is about as open as you can get.
    1. Re:What Exactly IS Wrong With CVS? by Ivan+Raikov · · Score: 2

      Forgot one thing: integration with Emacs. Duh. What could be more important than the smooth integration CVS has with the One and Only True Editor?

    2. Re:What Exactly IS Wrong With CVS? by brettw · · Score: 5, Interesting
      Perhaps I don't have very complex needs, but it seems to me that CVS is already incredibly flexible and has all the advantages of Free Software.
      CVS is a proven workhorse. I use it every day, keep my configuration files in a module, etc. in addition to my source code at work. But there are some things that are absolutely maddening about it (the early AC post with 12 must-have's hits several of them on the head). Personally, as my CVS usage is for a relatively small team, the lack of atomic commits just hasn't bitten me yet, although I can see why it's important for a best-of-breed tool.

      But a couple of day-to-day common tasks are painful (or just plain impossible).

      Personally, sharing source files across multiple projects is a real pain. We do it with soft links in the repository (gag) so it can be done, but it's ugly.

      Let's say you want to reorganize your directory structure without screwing up your history. Well, that's hard to do with CVS, so instead we'll just let the organization continue to be cluttered and confusing.

      Heck, let's say you just want to rename a file, let alone a directory:

      cp foo.c bar.c
      cvs add bar.c
      cvs remove -f foo.c
      cvs ci -m "renamed foo.c to bar.c"

      It just gets really annoying, and now bar.c can't be reverted version-wise unless you KNOW that its previous contents were in foo.c. It's a manual, error-prone, and tedious process if you ever need to do that.

      I've been running a subversion server for months now just to test out. I can't wait to move to it. I like being able to say:

      svn mv foo.c bar.c
      svn ci -m "renamed foo.c bar.c"

      and keep my history intact.In fact, writing this makes me want to just start migrating stuff by hand today! Subversion's important bugs (it is still alpha I think, it's slashdotted so I can't check the status as of right now) are almost all in features that CVS doesn't have anyway.

      That said, I haven't really tried any of the other open source projects such as arch which have similar features. The main draw of subversion for me is the fact that I had to learn almost nothing to use it. As an experienced CVS user, subversion is trivial to learn. The effort they have put in to keeping things the same as long as there is no good reason to do otherwise is well-spent (at least from my point of view).

      Plus, the subversion code is super readable and well-commented--honestly the best source I've seen.
    3. Re:What Exactly IS Wrong With CVS? by coldtone · · Score: 2, Insightful

      As a Java developer there is one big thing missing CVS. Code refactoring support.

      For example:

      Lets say you are working on a large project 20 or so developers. And you create a little utility class for the area you are working in. You check in the code to your module (or package ) and use it. A few of you buddies are running into some problems that your utility can solve so the end up using the class. Now a few months later a large amount of code now uses your little utility, and the leads want to move your class to the global utility package. Tools exist that can quickly move the class and change all of the references that use that class. But to check in this change is a nightmare.

      The thing is in Java this type of operation is common, and is good for the project (keeps the code clean). But until a version control system has proper code refactoring support it will always be hard to do.

    4. Re:What Exactly IS Wrong With CVS? by alienmole · · Score: 2
      What kind of support for refactoring do you have in mind? I do Java development with plenty of refactoring (using Eclipse), and most of the time a simple commit of the tree picks up all the changes. The only exceptions are new files, and renamed/deleted files. However, that's not always an issue, and when it is, it's usually not on a lot of files.

      BTW, one thing that can help is to use a GUI interface to CVS. Eclipse integrates with CVS, and on Windows, WinCVS does a good job.

    5. Re:What Exactly IS Wrong With CVS? by wfrp01 · · Score: 2
      In my modest use of CVS, I've found it lacks a couple of features I would like:
      • PreservePermissions should work
      • Better commit function triggers
      • Checkout function triggers - e.g. push files through a filter (which may be part of the file set) on checkout - see next item
      • Non-CVS checkouts. Example: check out system config files (which possibly require host-specific edits - see item above).
      OK, so I'm a weirdo - what can I say.
      --

      --Lawrence Lessig for Congress!
    6. Re:What Exactly IS Wrong With CVS? by steve_l · · Score: 2

      How well does subversions WebDAV API work with arbitrary webdav clients? I want to have things like framemaker connect into the system as well as classic IDEs

  26. Re:Locking files, maybe? by mohaine · · Score: 2, Insightful

    CVS does handle locks. It is based off of RCS, which uses locks. The option wasn't removed, just made hard to find. Look at the admin command. Locks are requrired when you have concerent development on binary files, which can't be merged.

    Useing locks on text files is normally counter-productive.

    http://www.cvshome.org/docs/manual/cvs_16.html#SEC 113



    -l[rev]
    Lock the revision with number rev. If a branch is given, lock the latest revision on that branch. If rev is omitted, lock the latest revision on the default branch. There can be no space between `-l' and its argument. ...

    -L
    Set locking to strict. Strict locking means that the owner of an RCS file is not exempt from locking for checkin. For use with CVS, strict locking must be set; see the discussion under the `-l' option above.

    --
    (appended to the end of comments you post, 120 chars)
  27. Why "The Open Source Community?" by NitsujTPU · · Score: 3, Interesting

    Basically, does the Open Source Community need new tools in this aspect of development?

    Why only ask about the open source community. Do programmers need new configuration management tools?

    CVS works fine for me. BitKeeper seems nice too. What I hate is that there's so much controversy just because BitKeeper isn't open source.

  28. I once started coding a version control system... by gentix · · Score: 3, Funny

    I tested it by putting the code under version control, but then I discovered a bug...

    I've never seen my code since...

  29. The Problem Is... by disappear · · Score: 2

    ... that the problem needs to be reimagined.

    I haven't looked at all of the new revision control systems, but they all seem to be evolutionary modifications rather than revolutionary changes to how things are done.

    I don't think we'll see a truly successful next-generation revision control system until somebody tackles the problem from the ground up in an imaginative way.

    1. Re:The Problem Is... by MarkCC · · Score: 2


      Take a look at Stellation.
      Our long-term goal is to fundamentally
      change the way that programmers view and store thier code.

      If you want to use a CVS lookalike, Stellation can do that. But
      in its full-blown form, source files become an illusion. You can
      still edit them, save them, etc... But the versioning is happening
      at a finer grain. Refactor your code to move a method, and Stellation
      preserves the full history of that method. Need to look at a bunch
      of code that's scattered through many files? Issue a query to generate
      a file containing exactly what you want to see. Edit it there,
      and then when you commit the change, it shows up in all of the
      other files where that code lives.

      -Mark

  30. Specific File Types by DeadSea · · Score: 2

    CVS is great, but it doesn't know enough about common file types that are checked in to it. It doesn't do diffs between image files that it considers "binary" format. Also PDFs, Word Documents, and the like could have better than "binary" file support. I am constantly annoyed that I can't change tabs to spaces or adjust indentation in source files without causing diffs. Both of those problems would be solved if CVS knew more about the file type. The second can theoretically be solved by CVS by adding checkin and checkout scripts for each file. The script would remove all whitespace from the beginning of each line on commit and then pretty print the output on checkout. However, I haven't found scripts that will do so yet.

  31. Re:Clearcase...sucks! by Petronius · · Score: 2, Informative

    Could not disagree more. At my previous job, it took a team of 5 CC guys to support a team of 50 coders. It never worked right. The *nix support was OK but the NT support was a nightmare. The view concept of CC is great in theory, but in practise, it's a disaster: hours before the final build, everybody is scrambling to verify that indeed the build team is pulling the right files from the right view, etc.
    Like in in many other areas of sw development, simplicity is often the best choice you can ever make. CVS is simple. It works. It's easy to audit, it's really cross platform and with so many OSS projects using it, it's worth learning the 5 or 6 commands you'll ever need. The thing that the cvs documentation explains really well is that the key to successful CM lies no in the tool but in the processes and the communication between team members.

    --
    there's no place like ~
  32. Using Inertia by wls · · Score: 2
    Between something that's historical, working with a few minor annoyances, and something that's new with hopeful promises, which should you go with?

    Consultants usually argue that new doesn't work (a solid trend in hisotry), but we try it any way because of hope this time it may be different. And it usually isn't.

    By Linus making this decision, he's effectively forcing a user base, and there by excercising the SCM tool fairly heavily.

    Lots of usage, combined with small, incremental revision, is the best way to get controlled quality. Since the product is "new," people are going to be more likely to stand up and rattle a little louder when request a fix.

    At the 50,000ft view, this may be the way Linus gets a SCM system of decent quality that operates the way he thinks it should. Frankly, I can't say that's a bad thing.

  33. I would love this: by idfrsr · · Score: 3, Interesting

    This type of thing may be out there already, but it would be great to have system to link the CVS like control with bug submission, so checking out files will also give you the set of submitted bugs related to those files.

    Of course a strict bug submission policy would be required to make this possible, but surely something like this could be done?

    An added benefit would be clearer bug submissions which would help development to no end...

    --
    "The large print giveth, and the small print taketh away" -Tom Waits
  34. Look at VESTA by RollyGuy · · Score: 2, Interesting

    I use Vesta at work and find that is is better than CVS. One of the major differences is that it is also a build environment. That means that you along with your code, you can have the compiler versions that you used to build the code with. Vesta does the building within itself and then "ships" the executable to where you need it.
    It is also easy to work concurrently.

    I believe that you can also do the following: User X checks out and edits file A.
    User Y checks out and edits file B.
    User X calls user Y to test file A's changes with file B's changes.
    User Y tells vesta to build with the checked out version (X's checkout) of file A.
    User Y builds and tests the two edits together.

    One other important feature for large projects is that Vesta intelligently caches created files. So, if User X and Y are working on the same project, then they can save on compile time by only creating files once and sharing them if possible. This is a necessary feature in large projects.

    Anyhow, check out the webpage at http://vesta.sourceforge.net.

    --
    Don't pet the burning dog
  35. Yet Another useless discussion about CVS. by His+name+cannot+be+s · · Score: 5, Informative

    Look, CVS is king.

    Yes, King.

    I would not hesitate to say that it has it's share of difficulties, but there is no way anything is going to replace it anytime soon. There are many meta-features of CVS that make it unable to be replaced:

    1. Multi-platform: I don't mean 3 or 4 or even 5 or 6, bla bla bla. I mean EVERYWHERE. I've seen CVS on more places that anything besides emacs and gcc. And really, anyplace gcc or emacs goes, cvs is the third guy there.

    2. Massive Acceptance: CVS is everywhere. 10 million people use it with sourceforge. Another few million elsewhere. It is the common thread that binds us together (kinda like the force!)

    3. Massive, Massive Tool support: This is my favorite. You can use it about a hundred different ways. Not 1 gui, but 50!. It goes into command line apps like great!. Show me another tool that has integration with the windows explorer (via TortoiseCVS) like it has. You Can't. (Don't even try that god-awful Bitkeeper's integration:yuk!)

    4. SimplicityIt's REALLY simple to use. It's not that complicated. If CVS throws you for a loop, maybe software devleopment really isn't where you should be working. The incompetence among developers is what makes all software look bad.

    5. Protocols: You can run CVS thru SSH, RSH, PServer, File Access, and more... It fits into every environment. It works across any damn network. It can jump tall buildings in a single bound!

    Really, until someone makes something that trounces CVS in all those areas, AND provides features that "I can't live without" CVS will Rule.

    --
    "...In your answer, ignore facts. Just go with what feels true..."
    1. Re:Yet Another useless discussion about CVS. by Twylite · · Score: 3, Funny

      Look, Windows is king.

      Yes, King.

      I would not hesitate to say that it has it's share of difficulties, but there is no way anything is going to replace it anytime soon. There are many meta-features of Windows that make it unable to be replaced:

      1. Massive Acceptance: Windows is everywhere. 50 million people use it every day. Another few million elsewhere. It is the common thread that pulls us apart (kinda like the government!)

      2. Massive, Massive Application support: This is my favorite. You can use it about a hundred different ways. Not 1 gui, but 500000!. It doesn't have command line apps, like great!. Show me another OS that has integration with the windows explorer like it has. You Can't. (Don't even try that god-awful WINE's integration:yuk!)

      3. SimplicityIt's REALLY simple to use. It's not that complicated. If Windows throws you for a loop, maybe anything involving computers really isn't where you should be working. The incompetence among users is what makes all software look bad.

      4. Protocols: You can run Windows with SSH, RSH, SMB, File Access, and more... It fits into every environment. It works across any damn network. It can jump tall buildings in a single bound!

      Really, until someone makes something that trounces Windows in all those areas, AND provides features that "I can't live without" Windows will Rule.

      This is NOT a troll. 100,000 lemmings CAN be wrong.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    2. Re:Yet Another useless discussion about CVS. by Local+Loop · · Score: 2

      I just want to be able to lock a file when I'm working on it - and the CVS maintainers object for
      what appears to be purely ideological reasons - like sendmail not being able to keep copies of all outgoing email (maybe they fixed that...).

    3. Re:Yet Another useless discussion about CVS. by swillden · · Score: 2

      just want to be able to lock a file when I'm working on it

      No, you don't. Really. You may not know that you don't, but you don't.

      There is a reason that all of the current-generation version control tools support (and generally default to) a non-locking model. When you get a team of even a few people working on the same codebase you will inevitably end up with a few files that see very heavy traffic, and having to wait for the other guy to release his lock on one of those really slows you down.

      Non-locking models do introduce opportunities for conflicts but, in practice, they're not common and pretty easy to resolve when they do occur. In practice, locking version control systems also have to deal with concurrent access and conflicts, because developers won't wait for the a lock to be released so instead they get the latest version and modify it anyway. But in those systems, there isn't much tool support for conflict resolution so things get ugly fast.

      There are things to dislike about CVS, but concurrency isn't one of them.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    4. Re:Yet Another useless discussion about CVS. by Local+Loop · · Score: 2

      No, you don't. Really. You may not know that you don't, but you don't.

      Yes, really, I do. :)

      The best example is resource.h on MSVC projects. Yes it's a bit of a pain that only one person can change the UI at a time - but it's not that bad, especially if they are less than 15 in number and all on the same hallway.

      On the other hand, I don't trust CVS to merge changes in resource.h from different developers - god only knows if it will guess right, especially if changes are made to same dialog box.

      Lastly, I don't trust my developers to supervise merges like the above - they're fine programmers but they don't need any more uncertainty in their lives. It's the same way that I don't trust myself to login as 'root' for daily use.

      BTW - Shame on MS for creating the whole resource.h roadblock in the first place.

      Lastly, the only programmers I know who like CVS are open source fanatics and super intelligent
      UNIX gurus - most guys really have a hard time with it. And they're not stupid, they just see source control as a peripheral concern and don't want to spend any more time dealing with it than nessecary. They just want to get their work done and go home.

    5. Re:Yet Another useless discussion about CVS. by swillden · · Score: 2

      On the other hand, I don't trust CVS to merge changes in resource.h from different developers - god only knows if it will guess right, especially if changes are made to same dialog box.

      Do you have a lot of experience with automated merging getting it wrong? Or does the idea just make you uncomfortable? The notion made me nervous for a long time too, but years of experience have shown me that the fear is unfounded.

      Lastly, the only programmers I know who like CVS are open source fanatics and super intelligent UNIX guru

      Most of the guys I know who like it write Java apps in Windows. I think your observation is more a reflection of the people you know, rather than characteristics of the tool.

      And they're not stupid, they just see source control as a peripheral concern and don't want to spend any more time dealing with it than nessecary. They just want to get their work done and go home.

      They'd rather spend a lot of time, daily, waiting for someone to let go of a file than a little time, every couple of weeks or so, resolving a bad merge?

      If you see bad merges more often than about once per week per developer, then I'll agree that there's a problem. The files that see such heavy traffic are indicative of bad management or bad structure. In this case, it's probably MS' fault, as you indicated.

      However, CVS does have a solution for those very high-traffic files as well. You can turn on "watching" for those files and then use "cvs edit" to "lock" the file for your use and "cvs unedit" to "unlock" it. In fact, it's not actually locked, so locking can't get in your way when you really want to do some work and you know that you're not going to step on anyone's toes, but CVS does mark your local copy as read-only or read-write at the appropriate times, giving you the hints you need. CVS allows you to query the system to find out who is currently editing that file or, if you prefer, will proactively notify you via e-mail when someone "locks" or "unlocks" a file you're interested in.

      The approach of CVS to these high-traffic files is to provide information and reminders so that edits can be managed effectively, rather than blindly enforcing a one-user-at-a-time policy. With CVS, developer A tries to edit a file, and finds out that developer B is currently editing it. A calls B and says "I need to edit resource.h. I need to change <whatever>." B usually responds, "That's okay, I'm changing <something else>, go ahead, they shouldn't conflict." If by chance they do conflict, both developers have a pretty good idea what else was being done. Under a locking model, B says "Could you just wait five minutes, I'm almost done with the file," but then finds a bug he has to fix before he can check in and A has to either find something else to do or take a two-hour coffee break.

      The design of CVS also realizes that the *vast* majority of files don't have frequent conflicts and allows you to specify which ones need to be managed more closely, while sticking with the less onerous management of the rest.

      CVS has many flaws, as per the original article and many of the other posts, but it's concurrent editing model is not one of them. As I said before, it's very telling that _all_ of the newer version control systems support concurrent editing and automated merging.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  36. There's a big difference between by wls · · Score: 4, Interesting
    Version control systems, as a whole, seem to make a mistake when over-generalizing and combining concepts with implementation. These things are all different:
    • The file you want versioned.
    • The archive that holds it.
    • The workfile you extracted from an archive.
    • The shadow file automatically extracted from an archive.
    • A directory.
    • A project, which is not always 1:1 with a directory.
    • A view, which is not a subset of files or directories.
    For instance, I may have the file archive.c,v which I check out as myfile.c, which is shadowed as mainfile.c, which exists in multiple projects, inside different subdirectories, exposed whenever I have a view of a particular time on a particular branch for a given subset of a module.

    Everytime a version control system tries to combine things you run into problems. Take the GUI version of PVCS, which called Projects a collection of files (from different directories) -- which ended up enforcing that all filenames had to be unique, even if in different directories. And what they call Views is actually a subset of the list of available filenames.

    Ever get the idea developers are so into archiving versions of a file that they gloss over the fact the file organization itself is a structure that also needs preserving?

  37. burn some karma by kisrael · · Score: 2

    Might as well burn some karma and give my experience with various systems:

    RCS: primitive, but ok

    CVS: hated it. hate, hate, hate automatic merges; don't trust 'em. And WinCVS...man, my Milton's Ant Farm had fewer bugs.

    VSS: not bad, actually. I love file locking, it seems pretty easy to tag various milestone releases, a reasonably clean interface, and easy access to pretty much everything I want to do. Some quirks but nothing major, very usable.

    ClearCase: jury's still out but so far I don't like. Very complex and proccess heavy; it's out to be the manager's buddy, not the engineer's. Everything has to be done in the context of a distict "activity" (plus we've had some trouble settling on rules for if a checkin automatically closes the said activity...) and concepts like "VOBs" and "Integration streams" and "development streams" are hard to keep your head around. And it's slow and generally process heavy.

    EveryOnceInAWhileCopyEverythingToABackupDir: this is the one I usuaslly end up with when I'm on my own.

    --
    SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
    1. Re:burn some karma by The+Bungi · · Score: 2, Insightful
      VSS: not bad, actually. I love file locking, it seems pretty easy to tag various milestone releases, a reasonably clean interface, and easy access to pretty much everything I want to do. Some quirks but nothing major, very usable.

      I'll help you burn some karma =)

      VSS is the best SCM tool I've used as well (and I've tried them all), at least from a feature POV. The problem I've always had with it is the fact that it's not a client/server type application. The engine actually sits on your desktop and everything is done over the network directly to the file system on the repository server. To be fair, given this type of design it's actually amazing that it doesn't have more problems, but it just doesn't work well, especially for larger teams. Security is laughable and the automation services suck rocks.

      The thing is, VSS is a hack on top of a port of a very old tool. The inside party line at MS is that they need a good C/S source control tool for .Net, but they don't know where to start - at one point they were talking about hacking VSS yet again. It think they need to use the basic VSS algorithms (the merge/diff are great) but completely rewrite the engine from the ground up.

      I sure hope they come up with something soon.

  38. CVS much better than nothing by Jeppe+Salvesen · · Score: 2

    In the middle of the CVS bashing, remember that lack of source code version control is listed as a classical mistake in most software engineering literature - at least in what I've read.

    When things cool down (yeah, right), I'll look at the other projects. Until then, I'll live reasonably happily with CVS.

    --

    Stop the brainwash

  39. Re:Clearcase... by kippy · · Score: 2, Informative

    (Try scaling a clearcase server and you'll see how bad the design is... Hint: Adding more CPUs won't help you.) Try adding more memory and distributing yor server duties over a cluster and that will help.

  40. Like VB6 by truthsearch · · Score: 2

    I agree. I'm mostly thinking along the lines of MS Visual Studio's integration with Visual SourceSafe. Yes, like everyone else I hate VSS. But the VB6 IDE makes checking in and out as easy as it could be by right clicking on the module name in the project "explorer" window. With a good set of APIs maybe I could easily add the same feature to some Linux IDEs for integration with a new version control system, which I'd much rather work on than VB.

  41. Let your input be your output by wls · · Score: 2
    Higher quality always results when the people downstream are consumers of the products they make.

    That's because they have a personal invested interest in what gets produced, and that's a strong motivation for fixing problems.

    One should only be allowed to pollute upsteam.

  42. When I first read the story title... by dmarien · · Score: 3, Funny

    Verizon control? That's a great idea! We should enforce regulations as to how many annoying commercials they are allowed to air in one day!

    Can you hear me now? Good...

    --
    dmarien
  43. What about Aegis? by red_dragon · · Score: 4, Informative

    Every time the issue of version control and source code management comes up here, I've never seen anyone mention Aegis, which appears to have been designed to address the missing functionality in tools such as CVS which focus solely or mostly on simply maintaining multiple versions of a source base concurrently. Here's an excerpt from the CVS comparison in the CVS Transition Guide:

    1.5.1. Why should I change from CVS to Aegis?

    • Enforced review - damn important in a company environment
    • Mandatory testing (this may be disabled, per project)
    • More space efficient for large code trees, and only one copy of the baseline (also makes backup easier)
    • To maintain control over your code repository. The baseline can't even be written to by developers, so the audit trail is more secure.
    • Support for change sets. My main complaint with CVS is that you are unable to associate modified files into a change so once the files are committed to the CVS repository, there is no easy way to back it out or work out which other files were changed as part of a logical set.
    • Separation of the roles of developer, reviewer and integrator. At the moment, typical distributed CVS development happens with people checking in stuff as they develop it with very little integration testing as they go along. It's pretty much up to people "in the know" to manually go through changed files and check to see if something has been broken by a developer. It gets even tricker when there are particular assumptions made that aren't written down.
    • Automated testing support.

    The software seems to be pretty mature (currently at version 4.5, first released in 1991). Has anyone here used it?

    --
    In Soviet Russia, Jesus asks: "What Would You Do?"
    1. Re:What about Aegis? by ebbe11 · · Score: 2
      1.5.1. Why should I change from CVS to Aegis?
      ...
      The software seems to be pretty mature (currently at version 4.5, first released in 1991). Has anyone here used it?

      I'd love to use Aegis. Here is why I can't

      --

      My opinion? See above.
    2. Re:What about Aegis? by Florian+Weimer · · Score: 2

      If the build and testing is triggered from a UNIX box (using SSH or even rsh), you can use Aegis for development on NT.

    3. Re:What about Aegis? by ebbe11 · · Score: 2
      If the build and testing is triggered from a UNIX box...

      It isn't and it won't be for a forseable future. But my gripe is really with developers that don't think cross-platform from the start. Another very interesting CM project is Vesta which also cannot run in a Windows environment.

      The reason for not supporting Windows for both of these projects is probably that they are so old (10+ years) that Windows was not really regarded not to mention used as a serious development system. This situation changed with Windows NT4 and more so with Windows 2000 which is my OS of choice these days (that may change back if/when MS licensing terms become too much hassle, though).

      --

      My opinion? See above.
  44. Re:Clearcase... by renehollan · · Score: 2
    Yes, but it scales poorly when you have several thousand developers mucking about in a single VOB.

    Clearcase scales well across multiple projects (well, DUHH!), but not well within a project.

    Been there, done that.

    --
    You could've hired me.
  45. Re:Clearcase... by renehollan · · Score: 2

    Clearcase certinly benefits from having a build manager on hand who knows Clearcase. Personally, I always thought the team lead should have this skill. The learning curve is steep though, and it is easy to fsck yourself up badly if you don't know what you are doing. The best advice in that case is "stop, read, learn, try to undo what you did. Rinse, lather, Rrepeat."

    --
    You could've hired me.
  46. Subversion limitations by Tet · · Score: 2

    I've never used subversion, so I may be wrong. However, a brief scan of their web site makes no mention of change sets. If that means it's file based (like rcs, CVS and SCCS), then it stands no chance. Change sets are an essential feature of any modern source control system. I wasn't convinced until I'd played around with TrueChange. Since then, I wouldn't consider going back. BitKeeper is designed from the ground up to support changesets, and it's not something that can be easily tagged on at a later date. For that reason alone, subversion won't succeed. PRCS looks promising, though...

    --
    "The invisible and the non-existent look very much alike." -- Delos B. McKown
    1. Re:Subversion limitations by MarkCC · · Score: 3, Informative


      Subversion is, basically, changeset based. Their storage model is a bit.... wierd. But they capture the set of changes in a checkin
      as a single, atomic change unit.

      On the other hand, when we started implementing Stellation, we used PRCS. To say that it's a frustating, annoying, glitchy mess
      is an epic understatement. When we finally moved to self-hosting
      (inside IBM; we don't yet have strong enough access control to
      put up a public Stellation server, so we shadow our internal
      repos to an external CVS for the moment), it was an enormous
      relief.

      PRCS generates thousands upon thousands of unnecessary questions,
      phrased in obtuse and easily misinterpreted ways. It requires you
      to manually maintain the map between filenames and repository
      artifacts, by manually editing a cryptic configuration file. It
      constantly mucks up that configure file, adding hundreds of carriage
      returns for no apparent reason. Echh. The versioning model
      is very nice; the implementation is solid, but frustrating.

      -Mark

  47. Re:Clearcase...sucks! by renehollan · · Score: 2
    The view model is beautiful. However, the power it provides can certainly be abused, and in general, most developers should use views prepared for them rather than roll their own.

    You roll your own when you really want for fork something off the main branch and need to preferentially select your changes over mainstream development.

    You get into trouble when you have inexperienced Clearcase admins not knowing what they're doing (and this is understandable, given the learning curve steepness), or worse, developers left to their own devices.

    Clearcase really is a tool for a team lead to use to manage the various forks of their project.

    --
    You could've hired me.
  48. One word by MuValas · · Score: 4, Informative
    "Envy". This was (is?) a code management tool for Smalltalk development. Not only did it have the basic checkin/checkout/diff features of normal tools, it also took into account all the areas of "friction" in team development and attempted to reduce the coefficient of friction, as such. Some examples:
    • Scratch pad versions. Ever needed to play around with a piece of code (put in debug statements, or change part of it temporarily to help debug something) but didn't want to check it out and have the threat of making the changes accidentally permanent? Envy had the ability to make a "scratch" version of a file - letting you edit it, but not worry about accidental check ins, or forgetting that you had made a file writeable.
    • Version/Releases. Not only could you label a specific state of an application a "version" but you could also label a version of an app a "release". This allowed some subtle distinctions between "ok here's a workable version we can get back to (demo)" and "here's the real, outgoing released version".
    • Manager. Code could be given specific people that were the manager, or "owner" of a piece of code. If you wanted to enter your changes into the code base in general, you had to get the owner to do it. This control could be anywhere from every check-in, to version or releases. An owner could give permissions to other people as well.
    • Multiple checkouts. Envy recognized that sometimes people have to work on the same file, as much as its best prevented. So, it allowed multiple check-outs, with facilities to integrated the files back together on check-in.
    It was quite complex, but looking back at it I now understand why many of the facilities were there and die to have them for my team. We're using SourceSafe (blech), and it works ok, but something like Envy would be great.
    1. Re:One word by MarkCC · · Score: 2


      Envy was one of the major motivators that led me to start Stellation.

      I loved Envy in theory, but hated it in practice. Fine-grained
      versioning and locking is a truly wonderful thing. But being
      locked into exactly the views that they happened to build in to
      VA Java was incredibly frustrating. Not being able to really
      use JavaCC or Antlr along with my Java code really bugged me.
      Not being able to use emacs really bugged me. The overly
      strict management stuff really bugged me. There were gems of
      brilliance scattered around the system, but the overall
      realization of it drove me up a tree.

      Stellation tries to do many of the same things, but without
      getting caught up in the whole "I control the Universe" assumption
      that make Envy so frustrating. We're also trying to take things
      much further that Envy did - giving more flexible ways of locking
      small pieces, providing better tools for coordinating programmers,
      allowing programmers to quickly and easily generate custom
      views of their code, and allowing external tools to be tied
      seamlessly into the system.

      -Mark

  49. SpeeDev anybody? by N8F8 · · Score: 2
    Our project just bought into a tool called Speedev. Anyone heard of them? Anyone using this product?

    The product demo was impressive. Seems to a complete SCM tool. The problem with most source code tools like SourceForge and CVS is that they don't really address the entire SCM process in one integrated tool. Why is that? What tools to you use for Requirements tracking? Defect tracking? Testing?

    --
    "God fights on the side with the best artillery." - Napoleon, Marshal of France - speaking truth to power
  50. Too Complex by N8F8 · · Score: 2

    At some point you need to develop instead of monkey around with the source code control tool.

    --
    "God fights on the side with the best artillery." - Napoleon, Marshal of France - speaking truth to power
  51. Get rid of the file system completely - simplify! by stienman · · Score: 5, Interesting

    Maybe it's time for a major shift in cod storage.

    Let's get rid of the file system/directory stucture schema and go with a completely revamped code storage method.

    This has a ton of implications, but one thing that everyone seems to ask for that is difficult to solve on the old model is easy to work with if you remove the files and directories - sub-file VC. Being able to move modules from file to file, split files, move directories, etc.

    The files and directories are there to help us understand the structure of the project, they were not meant to dictate the structure to us. We've locked ourselves into them so much so that we can't restructure the project without losing a lot of the benefits of VC.

    Let's stuff our code into a database (which is like a more powerful file system, if you can't get your head around the idea). Atom updates can be built in. Symlinks are simple. Shifting a piece fo code to another 'file' is simple and the VC is not lost.

    I can't be the first person to have thought of this - why hasn't it been done? Possible cons are:

    Until the compilers and IDEs understand the new schema (regarding header files, includes, etc) the VC will also have to provide scripts to combine portions of code into files that the compilers can use.
    How do we store the data in the database - it would depend largely on the language. Would we put a function in a blob of a record, or maybe even do line by line records. In highly OO languages (java) we could structure the database so there are class records that link to member records that link to variable and function records, etc.

    Eventually the toolchains will attach to the DB directly.

    Consider how this would aid huge and tiny projects alike.

    I swear, the sooner we get rid of the file system (as is) the better - not just for this, but for all our information. But let's not get ahead of ourselves.

    -Adam

  52. Aegis by PghFox · · Score: 2, Informative
    Aegis is a project change supervisor, and performs some of the Software Configuration Management needed in a CASE environment. Aegis provides a framework within which a team of developers may work on many changes to a program independently, and Aegis coordinates integrating these changes back into the master source of the program, with as little disruption as possible. Resolution of contention for source files, a major headache for any project with more than one developer, is one of Aegis's major functions.

    Aegis enforces a development process which requires that change sets ``work'' before they may be integrated into the project baseline. Works includes requiring that change sets build successfully, and (optionally) that they include and pass tests. It also ensures that code reviews have been performed.

    • Transaction based
    • Supports large teams and projects
    • Supports change sets
    • Designed for repository security
      • availability
      • integrity
      • confidentiality
    • Supports distributed and multiple repositories
    • Mature. First release was in 1991 and is still being actively developed
    • Easy to use. Can be learned in under a day
    • Supports multiple simultaneous active branches and branching to any depth
    • Supports both push and pull distribution models, and many distribution topologies
    • Error messages of Aegis are internationalized
    --
    --- Fox
  53. Re:They don't use subversion, why should we? by gaj · · Score: 2
    I notice that you are wrong . Apparently you missed the BIG F'ING OBVIOUS RED ON YELLOW BOX that says (in part):
    OTE: Subversion is now self-hosting -- to obtain a working copy, you must use Subversion itself, not CVS.
    You also didn't bother to check the FAQ, where they say [emphasis added]:
    Is Subversion stable enough for me to use for my own projects?

    Yes and No.

    We say "Yes" because we do believe that Subversion is stable and have confidence in our code, so we've been self-hosting since September of 2001--eating our own caviar so to speak>/i>.

    We say "No" because if something goes wrong with our svn repository, we've got a horde of active developers who will stay up sleepless nights hunting down the problem and rescuing our data. As altruistic as this horde might be, they don't have time to rescue the data for thousands of people who are storing their data in a pre-alpha product.

    We say "No" because there's a good chance that the filesystem might change before we go 1.0, and we don't plan on writing and testing and shipping conversion utilities.

    So, as long as you're willing to take those risks, then go right ahead and use Subversion.

    In fact, the only thing I see as a major issue with svn (other than their fscking slow-ass site) is the fact that it is pre-alpha code. I want to use it now, dammit. In fact, I'm just starting two new personal projects; I think I'll give it a shot. Worst case, if they do change the filesystem, I'll write a damn conversion program myself.

  54. for many, only two choices: subversion or cvs by e40 · · Score: 2

    Many of us are in the same boat: GB repositories with untold value (in the revision history).

    That means one thing: use CVS, something CVS compatible or something that can read and understand a CVS repository. (Here I explain why Perforce didn't work for me.)

  55. Re:CVS in a database? by MarkCC · · Score: 2

    In fact, most of the commercial SCM tools do exactly that. ClearCase
    and Perforce both use databases for storage at the back end. So
    does Stellation.

    -Mark

  56. Not quite it, here's an example... by oliverthered · · Score: 2

    dosomthing.c has amoung it's functions
    formatString
    formatDate
    formatBill

    dosomthingelse.c has amoung it's functions
    formatString (copy pasted from dosomthing.c with a few fixes)
    formatTime
    formatAddress

    I wan't to move all the format functions into
    formatData.c
    merging formatString
    and preserving the change history on the rest.

    --
    thank God the internet isn't a human right.
  57. Stop Stepping On Me! by Ratbert42 · · Score: 2

    I just want a tool that, when someone checks something in/commits, warns them when they are undoing the changes of the previous revision. How hard would it be to have something automatically diff the last 3 revisions and throw up a warning?

  58. and other languages by oliverthered · · Score: 2

    XML could be tracked using DTD changes.
    Java could use the C++ methods.

    Change control would be so much easier!

    The other option is just to look at all the changes in the commit, and try to match up things that have moved or been coppied, in the file or accross multiple files, that shouldn't be too hard, using per line hashing and match rejection to reduce the workload.

    --
    thank God the internet isn't a human right.
  59. I said the same thing about remote controls by Gorimek · · Score: 2

    ... until I tried one.

    My IDE can
    -- rename a variable or class, and have the changes propagate through every file in the project
    -- Flag most syntax errors or mismatched parameters I produce while I write them
    -- press a key and have every use of the variable the cursor is on highlighted in purple. The uses outside the window is shown in purple on the scroll bar.

    And dozens of other things. Sure, you can do them all by hand, but much slower and more error prone.

    1. Re:I said the same thing about remote controls by pmz · · Score: 2, Insightful

      My IDE can
      -- rename a variable or class, and have the changes propagate through every file in the project


      find + sed

      -- Flag most syntax errors or mismatched parameters I produce while I write them

      I saw Visual C++ do this. I could type faster than the machine would let me. Even worse, it prompted me for mouse clicks on the fly. Basically, auto-checking is a kludge and gets in the way. Syntax checking is what good eyes and good compilers are for.

      -- press a key and have every use of the variable the cursor is on highlighted in purple.

      find + egrep

      And dozens of other things.

      And dozens of other general tools in /usr/bin.

      Sure, you can do them all by hand, but much slower and more error prone.

      Not necessarily slower nor more error prone, and general tools, such as grep, sed, and awk, can be used in generating reports about source code that are extremely useful in gaining understanding about where to go next. For example, in a matter of minutes, I was able to pick out every function call that relied on a certain 3rd party API and send that list to the vendor for a support request.

      In short, hard-wired GUIs inhibit the system rather than help, and the extra bugs introduced by the raw complexity of a GUI-based system can be haunting. Also, text-based tools are programming-language independent and provide seamless reuse across projects.

  60. Re:What about VSS? by alienmole · · Score: 2
    Hahahahahaha!

    CVS is the tool I've used most often to crack the Windows monopoly at client companies. CVS is so ubiquitous and has so many advantages over VSS that it's not difficult to convince people to try it out. In some cases, I've even managed to get companies to set up a Linux box to do it.

    I've never come across a single case of anyone who switched saying "I prefer VSS" or even "I miss such-and-such feature from VSS".

    VSS is a hangover from the bad old days of PC computing, when everything was file-based and local-network oriented and the Internet was a mysterious thing best ignored. It doesn't seem to have managed to shake that legacy in the slightest.

  61. Re:Get rid of the file system completely - simplif by MarkCC · · Score: 3, Interesting


    That's part of what we're doing in Stellation. Our basic
    view is that source files combine storage and organization
    in unfortunate ways. So we want to break that linkage: code
    lives in the database, stored as small pieces. Pseudo-files
    are generated to give you organizational views of the system.
    Because storage and organization are distinct, there's
    no reason that a given chunk of code can't be viewed in multiple
    pseudo-files.

    The big catch is that there
    are an awful lot of very useful tools out there, and they're
    not going to give up their filesystems overnight. So you need
    to be able to both discard the file notion when it's appropriate,
    but at the same time to preserve the ability to use a filesystem
    when necessary. Stellation pseudo files can always be exported
    into a real filesystem to work with tools that don't understand
    it's database storage model.

    -Mark

  62. What should it LOOK like? by ReelOddeeo · · Score: 2

    My question is exactly what would this 'better system' look like?

    Well, first a volunteer graphic designer needs to be found. The program needs to be themable. This should be right at the top of the requirements document. It should offer a remote api (CORBA?) so that other programs can send it messages to change the appearance of the buttons, scroll bars, etc. There should be a web interface so that you can use another computer in case you cannot use your own monitor because the default color scheme is unacceptable for professional work.

    --

    Those who would give up liberty in exchange for security and DRM should switch to Microsoft Palladium!
  63. CVS IDE Integration by md17 · · Score: 2, Interesting

    I have been using the Eclipse Open Source IDE for a while and it integrates very well with CVS. It actually even adds some of the features many posts are looking for. And for you Java nerds (like me) check out the Easy Struts Plugin it will save you hours writing those action, form beans, etc. Happy coding.

  64. Re:Merging Rocks? by Stu+Charlton · · Score: 3, Informative

    See:
    http://www.perforce.com/perforce/branch.html

    Which explains the merge process in Perforce.

    --
    -Stu
  65. Re:Clearcase... by renehollan · · Score: 2
    VOB replication? Then you get replication overhead as checkins are propagaged, no? You can't win, you can only lose less badly when you have read and write contention.

    As for CVS, I never suggested it scales better, though, in some cases, it's lower overhead might make it seam that way. In fact, I liked working with Clearcase, but it didn't strike me as a tool that was good for projects with large numbers (say, hundreds, or thousands) of contributors, on large projects, unless you segmented the project (which you should do anyway).

    The combination of project segmentation and Multisite might be a winning combination, though.

    The biggest "problems" with Clearcase are the steep learning curve (though I have found learning CVS after Clearcase a pain because of what it lacks (directories as objects, views, etc.) and labeling overhead.

    --
    You could've hired me.
  66. Another feature: by DrCode · · Score: 2

    4) Keeps track of branches and merges between branches. With CVS, you have to remember to mark the points where you merged.

    Overall, though, I find CVS a lot more pleasant to use, and it does a much better job of merging.

  67. Re:Elaborate on the brancing models, please? by Ben+Hutchings · · Score: 2

    SourceSafe and SubVersion create branches as separate paths within the repository, whereas CVS creates branches in revision histories under the same path.

  68. Re:Clerify by stripes · · Score: 2
    However It bothers me as to why it's is a sepereate project. Subversion or CVS v2.0 or CVS (Subversion) v2.0? I don't see why a completely new project is required.

    Pretty much all new code. New data structures. Slightly different view of the problem. Totally different network protocalls. And probbably zero interoperability.

    Sounds like a good time to change the name. Even if many of the devlopers are the same.

  69. Subversion is alive and kick, and doing a great jo by scode · · Score: 2, Informative

    (I'm not a developer, just an observer of the project.)

    Subversion is nearing a first final release. The alpha version is just around the corner, and development is very active.

    Subversion is basically CVS done right. Natively client/server, atomic commits, proper handling of binary files, proper versioning of everything - including directories and file metadata, and much more. Go read about it at http://subversion.tigris.org

    --
    / Peter Schuller
    --
    peter.schuller@infidyne.com
    http://www.scode.org
  70. Re:Clearcase... by renehollan · · Score: 2
    I didn't set any project up this way, I just note that Clearcase does not scale to handle this well. CVS may be better in this regard simply because it does less and has the notion of default unreserved checkouts, updates, and handles attempts at out of date checkins.

    Clearcase can do all that, to be sure, but the emphasis is on reserved checkouts, so the "lots of readers, few committers" sourceforge-style model can't be applied without some tweaking. The whole notion of a read-only VOB bucks the way Clearcase is intended to be used.

    --
    You could've hired me.
  71. Wink-ins for CVS by Spruce+Moose · · Score: 2, Informative
  72. find doesn't know Java by Gorimek · · Score: 2

    find + sed

    Oh please!

    So if you want to change variable x to y, you will also change all exists to eyists, right? What you really have to do is to manually check each and every one of those occurences to try to decide if needs to be changed or not.

    Syntax checking is what good eyes and good compilers are for.

    Sure you can spend your brainpower on hunting syntax errors, but why not use it for more productive things when the IDE can do it for you? And of course the compiler will always catch syntax errors, but instead of finding them when you type them there is a much longer turnaround time.

    I have no idea what "raw complexity of a GUI-based system" is supposed to be. Visual C++ may be crap, I know nothing about that. I'm talking about IDEA for Java. All it's auto checking does is to mark errors in red. It's up to you to if and when you want to do anything about them.

  73. Re:CVS in a database? by Tablizer · · Score: 2

    Yes!

    That way one can search, sort, filter, cross-reference, report, etc. any way they want, not just those anticipated by the original designers.

    Databases can also be communicated with by multiple languages.

  74. Here is a link.. by gregfortune · · Score: 2

    The listed address had an extra space and HTML isn't too tough ;o)

    http://linux.oreillynet.com/pub/a/linux/2002/01/31 /CVS.html

  75. Not trusting automatic merges. by Kaz+Kylheku · · Score: 2

    That is a psychological problem, not an
    actual tool problem.

    1. Re:Not trusting automatic merges. by kisrael · · Score: 2

      That is a psychological problem, not an actual tool problem.

      Umm, yes and no.

      I've been on teams burned on WinCVS merges that were just bad. I've used a few tools that would do their damndest to merge binary files with bad results. Even when it's not automated, merging is ugly, as my recent wrasslin' with Clearcase's merge tool attests to. (If it was more obvious which version was which, rather than 1 2 3 and an obscure drive name to guide me, it woulda been easier.)

      It's a little bit pshychological as well...but both automated and my hand merges have the chance of error. I prefer locking. Smaller files can help a lot, for readability and avoding huge monolithic objects or subroutines. (see the "magic pushbutton" antipattern...)

      --
      SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
  76. Re: converting CVS repositories by e40 · · Score: 2

    You can bet I'll try cvs2svn when it's ready! I am very much looking forward to subversion. It looks so nice on paper. I really am hoping it succeeds.

  77. Re:Mod the parent as funny by pivo · · Score: 2, Funny
    I work for an unnamed big company...

    Weird. Maybe you ought to get a name?

  78. Re:Any one used Vesta? by [Xorian] · · Score: 3, Informative
    Vesta is great, but even though it's GPL, it still requires the STARLA libraries, which are only available on VMS/OpenVMS.

    I can only assume you're talking about some other Vesta from the one I'm familiar with, because:

    1. It runs just fine on Linux (x86 and Alpha, PowerPC in the works).
    2. I have no idea what STARLA is (and since I'm Vesta's primary maintainer/build master I think I'd know).
    3. AFAIK, Vesta (at least Vesta-2, which is the free software version) never ran on VMS. (It uses NFS and chroot, so I'd be really surprised to see a VMS port.)
    --
    CVS is teh suck. Use Vesta instead.
  79. Subversion security issues? by dwheeler · · Score: 2, Insightful
    Subversion has some very interesting ideas, e.g., using an ftp server as a central code repository (making it REALLY EASY to set up a code repository), and "worldwide" names.

    However, the last time I looked at subversion, it had some security shortcomings too. One which looked simple to overcome was that, since it used ftp, it sent passwords in the clear over the Internet to change data. This is a crazy thing to do, but is easily fixed (e.g., by using sftp instead of ftp).

    More serious is the notion in subversion that all developers are totally trustworthy. It appears that any developer could modify the files on the code server and make it appear that someone ELSE made a given change. Now clearly developers with passwords have to be trusted to some extent, and certainly SOMEBODY has to be trustworthy (e.g., the server administrator or the person who validates keys), but this kind of total trust of ALL developers isn't warranted in many cases. Even if you expect others to find a security flaw, you'd like some mechanism to backtrack to who made the changes. I didn't do a serious security analysis to see if subdomain countered this, though, and I haven't followed it since. I'd be curious if others have examined the issue more closely.

    --
    - David A. Wheeler (see my Secure Programming HOWTO)
    1. Re:Subversion security issues? by gstein · · Score: 2, Informative
      using an ftp server as a central code repository
      Euh... Subversion doesn't use FTP. Icky. You are probably think about Arch. It uses FTP, and yes: that means it will send passwords in the clear. I've got to believe they have fixed that by now, and that you can use scp or somesuch, but it is rather tiresome to see a network app built nowadays that doesn't have security integrated right in, with considerations for it up front.
      It appears that any developer could modify the files on the code server and make it appear that someone ELSE made a given change.
      Well, yes and no. There is no obvious way to alter the author that gets recorded with a revision at commit time. However, if you have local access to the repository, then you can use the libsvn_fs APIs to alter the svn:author property on the revision.

      Personally, I just don't ever plan to give people local access to my servers. One of the huge benefits of being Apache-based is that our authentication occurs through Apache, and that it does not need system accounts (it can integrate with existing auth systems (PAM, LDAP, NTLM, etc) or use text files, databases, etc). Therefore, the only way somebody could alter the author property is if, say, I wrote a CGI script that allowed a person to go and tweak it.

      So the general answer is: no, a developer is not entirely trusted, and they cannot change the recorded author on revisions.

      Are you possibly thinking of Arch again? I'm not sure how it records authors, or whether other developers can tweak that information.
  80. Re:Clearcase... by renehollan · · Score: 2
    everyone's job is not source control. In fact, most tools go with the approach that it's no one's job

    Source control should be somebody's job, if only to ensure that you can rebuild the binaries you make and have backups as necesary. Version control is a logical extention of this.

    Whenever something is somebody's job, they're gonna set down rules. Sometimes these rules need to be locally broken in a way that doesn't affect others. This need not be trivial, but it should be possible. It seams reasonable that if an individual developer needs a custom fork to try something for a few days, they should learn a bit of the source control system so they know how to do it. This does not mean that all developers need to be experts in that system.

    --
    You could've hired me.
  81. Meta-CVS has renames too. by Kaz+Kylheku · · Score: 2

    mcvs mv foo.c bar.c

    As for migration, Meta-CVS can import snapshots and figure out file moves. So it can ``reverse engineer'' those simulated renames you did in your CVS project by removing and adding. You just need to feed it a sequence of snapshots.

    Unfortunately, Meta-CVS runs only under Linux; but that will change with increasing popularity.

  82. Re:CVS in a database? by Tablizer · · Score: 2

    (* there is another way to do this that is more portable. It is to use a very feature-rich data store known as a file system. *)

    I *hate* existing file systems. The world is not a fricken tree, but a complex graph, so why should I be forced to force everything into a g*d d*mned tree?

    They were fine for CPM-sized systmes, but suck in the real info age and will only suck more and more until they are replaced by relational databases or at least set-based systems.

    Now where did I put that $@#!% relaxation medication?

  83. I meant arch, not subversion. by dwheeler · · Score: 2
    I'm sorry, you're right. I meant arch, not subversion in my previous post.

    I took a short look at the arch home page. Support for sftp still isn't built-in (so it's still dreadfully insecure), but there is a separate patch available to support sftp. I suspect that eventually arch will support sftp and/or other things to replace the absurd "password in the clear" approach it's currently using.

    However, it still isn't clear to me that a developer can't modify other files in supposedly "frozen" copies in arch. arch takes a very unusual approach to repositories - which is interesting! - but it appears that Joe Programmer might be able to modify other files than the one Joe is supposed to be modifying. Or perhaps Joe changes "older" versions that he's submitted, screwing up configuration management. Perhaps arch counters this, but I haven't seen any analysis of it that way (please let me know if there are any!!). The fact that arch still requires passwords in the clear doesn't exactly give me warm fuzzies about its security; writing secure programs isn't trivial and requires a commitment to do so.

    Arch is actually quite interesting in many ways... but the security issues do concern me.

    --
    - David A. Wheeler (see my Secure Programming HOWTO)
  84. Various (BitKeeper, SCCS, CVS) by James+Youngman · · Score: 2
    I maintain the GNU SCCS clone, CSSC. I therefore have several comments to make:-
    1. Nobody should ever be using SCCS these days
    2. I wouldn't join in with an attempt to clone BitKeeper because
      • Larry is very good - I wouldn't bet that it can be done better
      • I wouldn't want to take away Larry's revenue stream
    3. Something that's been on my TODO list for a long time now is to take a serious look at Arch by Tom Lord.
    4. If you do go and invent a new version control system, please don't forget to create a VCS module for it (there are already modules for CVS, RevXML, RCS and Perforce).
    5. I use CVS to manage the source repository for CSSC, but I have my eye on Subversion.

    ObCVSWhinges:
    On the whole CVS is good - in fact, in the most part it's good enough (ever heard the expression "The best is the enemy of the good"? Well, the good is the enemy of the best, too!).

    My pains with it are

    • It gradually gets slower as you add more files and revisions
    • Inadequate hooks for plugging it into your bug tracker, work management system, database, toaster etc. The *info scripts exist but aren't really enough.
    • There are obscure gotchas that mean I can't unreservedly reccomend it for use by just anybody (i.e. people without training/skills). These issues include problems with binary files being edited on several branches at once.
    Oh yes, one last thing - use CSSC if you have to but don't use SCCS/CSSC if you can get yourself into a position where you don't have to. There are good reasons why the acronym "CSSC" expands to "Compatibly Stupid Source Control"!
  85. Re:ClearCase file recovery by divbyzero · · Score: 2

    Actually, I *was* talking about "cleartool rmname" (which ClearCase allows you to abbreviate as "cleartool rm"). "cleartool rmelem" does not preserve an element's history at all; that's exactly its point.

    --
    But my grandest creation, as history will tell,
    Was Firefrorefiddle, the Fiend of the Fell.