Slashdot Mirror


Ask Slashdot: Selecting a Version Control System For an Inexperienced Team

An anonymous reader writes: I have been programming in Python for quite a while, but so far I have not used a version control system. For a new project, a lot more people (10-15) are expected to contribute to the code base, many of them have never written a single line of Python but C, LabVIEW or Java instead. This is a company decision that can be seen as a Python vs. LabVIEW comparison — if successful the company is willing to migrate all code to Python. The code will be mostly geared towards data acquisition and data analysis leading to reports. At the moment I have the feeling, that managing that data (=measurements + reports) might be done within the version control system since this would generate an audit trail on the fly. So far I have been trying to select a version control system, based on google I guess it should be git or mercurial. I get the feeling, that they are quite similar for basic things. I expect, that the differences will show up when more sophisticated topics/problems are addressed — so to pick one I would have to learn both — what are your suggestions? Read below for more specifics. These are the requirements I can see so far:
- __Server_running_locally__ (as opposed to in the cloud) on windows (IT departments choice, non-negotiable)
- Good/easy to use Windows clients (IT departments choice / company policy, again non-negotiable)
- Use windows credentials (maybe, single sign on)
- Open source server/client (personal preference)
- Well established Project that will not disappear/ get unmaintained within a foreseeable future
- Do basic test on the code (Syntax errors, pytest/nose/or alike with coverage (of tests), check coding style)
- email notifications
- good documentation
- reasonable price for 5 — 10 users : free — 500€

Things that would be great ...
- web interface (like github) would be nice
- integration of bug tracking / bug reports
- possibility to do and print out a code review
- some kind of jupyter / ipython integration

Things I am not sure I will need but seem to be a good idea at the time of writing...
- Include other files/ file types for measurement data, documentation and user manuals (docx, xml, xlsx, gz, ...)
- When thinking about measurement data /reports it would be great to have digital signatures (--> FDA compliant). I know this is extremely hard, if this exists I would love it, if not I am fine. Somehow this feels like mixed document/version control, but I would love to have data + code + text = report at the same place to easily find implications of a bug — which data has to be re-evaluated and so on.

325 comments

  1. UH oh by Anonymous Coward · · Score: 1

    You sound like a hardware company. Nothing worse than getting EEs to see the logic in versionning. They'll all be in their corner doing it their way because it's better....

    1. Re:UH oh by __aaclcg7560 · · Score: 3, Insightful

      Or a hardware company being run by a marketing hack: "Python is new and popular! Let's get all our programmers and code base on Python yesterday!"

      As the summary makes no justification for switching away from C and Java, I'm just assuming the worse possible reason for switching programming languages.

    2. Re:UH oh by TechyImmigrant · · Score: 1

      The hardware company I work in has all the usual languages and tools available. It's up to the engineers to use the right tools for the job.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    3. Re:UH oh by Anonymous Coward · · Score: 1

      Everyone at work who "does hardware" (in our group) uses version control.
      Some of the other groups don't, but they don't get anything done anyway.

    4. Re:UH oh by Anonymous Coward · · Score: 0

      ..It's up to the engineers to use the right tools for the job.

      You'd think that, wouldn't you (Btw, apropos your engineers, lucky them...)

      I was 'instructed' last week on how to use a lathe (after 30+ years of ummm, using said device in various forms, both manual and CNC), by a prick who has never used one *ever*..same story wrt other tools (both physical - chisels etc and software) by said prick and his cohorts.
      There's naught so dangerous as a half trained monkey put in a position of power.

      (Yes, I'm about to bail...I see the brown stinky stuff about to hit the whirly bladed thingie sometime real soon now, I'd like to be gone before I need an umbrella and a full CBW suit).

    5. Re:UH oh by TechyImmigrant · · Score: 1

      I'm so sorry.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    6. Re:UH oh by Grishnakh · · Score: 1

      Which summary did you read? The one I read said they're looking at switching to Python, away from LabVIEW. That's perfectly understandable. LabVIEW is completely proprietary, and on top of that, it's really hard to find someone to take the job. I had some company try to talk me into a LabVIEW job a while ago, even though I had precisely zero experience with it, and no interest. Just because I have a EE degree and a lot of background in software (mostly embedded programming), they figured they could convince me to take the job and they'd train me. No thanks: the last thing I want is be stuck as a LabVIEW programmer forever.

      That whole "best tool for the job" thing really isn't true. When looking for candidates, employers usually want someone with prior experience in the language (/tool) they're using. So this tends to make everyone gravitate towards certain popular tools and languages. Thus, we have C, C++, Java, Python, JavaScript, etc. which have become very popular, depending on application and industry of course, and a fair amount of trying to force one language into a role it might not be best-suited for, because it's the language people know and favor, and because you can hire people more easily who already know it. Other languages keep trying to make headway, but usually don't go very far: Rust, Go, Ruby, etc., and other languages which are dying out: Perl. Becoming an expert in a proprietary language and toolset is a bad, bad idea for career longevity.

    7. Re:UH oh by __aaclcg7560 · · Score: 1

      I'm not familiar with LabView. I just saw C and Java being replaced by Python. Depending the situation, it might work. Or might not. If the summary said, "we're moving away from a proprietary environment," I wouldn't be complaining about summary.

    8. Re:UH oh by Grishnakh · · Score: 1

      The summaries on this site are always awful.

    9. Re:UH oh by Anonymous Coward · · Score: 0

      I'm so sorry.

      Thanks, it was a fun and interesting job up till the start of the year, the only saving grace about the current monkey regime is that as it is doomed by their gross incompetence, its decline and eventual fall should be a most entertaining spectacle (especially seen from a distance..)
      Hopefully they won't take out too much of the company with them.

    10. Re: UH oh by Anonymous Coward · · Score: 1

      Was their suggestion insightful or truly wrongheaded? A wise person never ignores advise, although he may choose not to follow it.

    11. Re:UH oh by PerlPunk · · Score: 1

      Yep. Python uber alles. And you would think that if people have the chops to program in Java or C that they have a pretty good handle on versioning, too. So I think there is a problem with the way the original poster is thinking of the problem.

    12. Re:UH oh by mysidia · · Score: 1

      Yep.... Different programming languages have different merits. "Rewrite everything in X" or "use X for all new work" is a bad idea, unless all the things you are writing happen to be most suitable for X.

      I can see switching from Java to Python, as they have a very similar use case. I think recoding C code into Python just to standardize on a language, would be insanely idiotic.

      Choose the best language for each job.

      If you have a choice: standardize on a few best of breed languages for all common jobs..... more often than not, in the real world, you have to maintain code that wasn't written in the ideal language for the job.

    13. Re:UH oh by Anonymous Coward · · Score: 1

      He's not saying C and Java being replaced by Python, he's saying that most of the people involved have experience with C and Java, but they're using Python for this project.

    14. Re:UH oh by Megane · · Score: 3, Insightful

      LabView is not only proprietary, it's a visual programming language (connect a bunch of boxes with lines) that stores its stuff in binary blobs. So you can't do version control on it, or even diff it. If someone changes one of those little boxes in a big LabView project, you will likely never know who did it or when it happened, and good luck finding where it was changed. Or you might not even know that it happened at all, just things start acting screwy.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    15. Re:UH oh by __aaclcg7560 · · Score: 1

      I think recoding C code into Python just to standardize on a language, would be insanely idiotic.

      Not quite. You can write a Python script and use Cython to convert part or all into a C extension. I did that for a trivial script to roll dice a million times, which produces a noticeable lag on on my AMD 3.2GHz quad-core processor. The Python script took 123 seconds. Converting the dice rolls into a C extension reduced the time to two seconds.

    16. Re:UH oh by Anonymous Coward · · Score: 0

      FYI there is a LabView diff tool (provided by NI). It doesn't always give the most helpful feedback just because as you said its a visual programming language, so the "diff" information is a blinky-highlight of the changed elements. For local diffs, you can tell your version control tool to diff *.vi files with the LVCompare.exe program.

    17. Re: UH oh by Anonymous Coward · · Score: 0

      Not only is there a diff tool, you can force the environment to require comments on save operations (configurable). In addition there is support for all the major versioning systems built right in (SVN is more manual, but I've used it for years successfully).

      This idea that LabVIEW is a toy is persistent in the larger development software world. If folks spent a tenth the time learning the environment as they do slogging through forums to hack Linux kernels to work, they might learn the reality of the situation. It's great for some things and sux at others, but what language can that not be said of (that don't suck at everything)?

    18. Re:UH oh by Anonymous Coward · · Score: 0

      You CAN do version control with LabVIEW and it works as well as with any other language (branching, regression, change history, etc.), however I would agree that DIFF is more challenging as you point out LabVIEW saves everything as binaries. LabVIEW has a "graphical diff" tool, but its integration with the repository is not as easy to use as the text-based diff integrated into version control tools like GIT or Mercurial.

      Because you can't use the DIFF in the version control tool, most of the LabVIEW houses I'm familiar with use Subversion, which is cheap and easy to implement, and as the OP's requirements state, can be run in-house on a Windows machine.

    19. Re:UH oh by ClickOnThis · · Score: 1

      I think recoding C code into Python just to standardize on a language, would be insanely idiotic.

      Not quite. You can write a Python script and use Cython to convert part or all into a C extension. I did that for a trivial script to roll dice a million times, which produces a noticeable lag on on my AMD 3.2GHz quad-core processor. The Python script took 123 seconds. Converting the dice rolls into a C extension reduced the time to two seconds.

      Setting aside the virtues of Cython, I can't believe you're suggesting that the GP convert C code to Python, and then convert it back to C code with Cython.

      There are ways to connect C and Python code together directly, without any conversion of either language.

      --
      If it weren't for deadlines, nothing would be late.
    20. Re:UH oh by interval1066 · · Score: 1

      I like the ads asking for "...10+ years of python experience."

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    21. Re:UH oh by __aaclcg7560 · · Score: 3, Interesting

      I gave a trivial example where I wrote a Python that took 123 seconds to do one million dice rolls. I then use Cython to convert dice rolls into an C extension, which resulted in Python script that executed in two seconds. I didn't convert the entire Python script into an C extension. If the goal is to standardize the code base from C to Python, Cython can fix the performance issues.

    22. Re:UH oh by __aaclcg7560 · · Score: 1

      Python will be 20 years old in 2019. Programmers with 10+ years of Python experience shouldn't be hard to find.

    23. Re:UH oh by ananamouse · · Score: 1

      LabVIEW zealot here. Yes, it looks like spaghetti until you poke highlight execution. After that experience you will wonder how you ever managed.

      The latest versions have functionality to insert space making things easy to clean up; also, you can scoop up a bunch of stuff and make it into its own little box - like a subroutine. I will not go back to Fortran (or Basic).

      LabVIEW home is available for about the price of two bottles of Jameson.

      We use Team Foundation Server for Version control with LabVIEW. It was probably a bitch for who ever set it up but I get along with it just fine.

  2. CVS or Subversion by benjfowler · · Score: 5, Insightful

    As far as I can tell, you're describing the classic CVS or Subversion small team setup. You can run a server on the network (via Apache, or via SSH), run ViewCVS, set up checkin hooks, and give your clients a nice client like TortoiseCVS/TortoiseSVN built into Windows Explorer.

    If you want integration with bug tracking tools, then have a look at Bugzilla and Bonsai.

    All your users need to know about, is check in, and checkout, so the cognitive overhead is low.

    It would take one engineer half a day to set all this stuff up on a spare machine, and you could try it out fairly quickly.

    And best of all, this setup is gratis as well as Free. This has worked really nicely for me in both an academic and a commercial environment.

    1. Re: CVS or Subversion by Anonymous Coward · · Score: 0

      Ya those magic cloud servers magically take care of their cloudy selves patching their exploits and soing all their own configuration while sucking money out of your wallet month over month. Thats the answer for sure. Especially for all those inexperienced users taking careful care to craft firewall policies, authorization and authentication, backups, etc. Ass.

    2. Re:CVS or Subversion by benjfowler · · Score: 1

      He's specifically asking for a locally-hosted solution, unfortunately...

      There are some great cloud-based offerings these days -- BitBucket will let you have free private repos for small teams (up to 10 people). The only problem I could see that (besides not being allowed by his IS department to consider a cloud-based solution), is that Git's user experience is not for amateurs, although that could be ameliorated somewhat, by using Attlassian's or Github's noob Git clients as "training wheels"...

    3. Re: CVS or Subversion by Anonymous Coward · · Score: 0

      Hate to break it to you but employees who maintain all that stuff in house also "suck money" every month too.

    4. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      version control systems are immensely useful. but without a deep understanding of how the tools operate
      and the history of the repository they can destroy your ability to function capriciously. you know how
      this works. everything is great, you've been using this tool for months, and right before the big release
      something goes funny, and now all this work thats supposed to go in needs to get untangled by hand.

      what you really need is a version control system that presents the least amount of surprise, then
      cvs and subversion are fine - if you never need to branch, and in the former case if you never
      need to delete and rename files (even svn can get squirley)

      otherwise you can upgrade semantically to git or mercurial. they don't even require half a day to
      set up, really just seconds. if you use git in a mercurial-like way, its a great solution. unfortunately
      people feel thats its necessary to constantly be modifying public history, which can lead into
      an arena of quite unsettling behavior

      or you just use mercurial. very simple, easy to understand data model - never stabs
      you in the back. certainly slower and less popular than git. but really just a nice, powerful, pleasant
      tool to work with.

      why would you ever use cvs or svn instead?

    5. Re:CVS or Subversion by rainmaestro · · Score: 4, Insightful

      Agreed. For small / inexperienced teams, we've always recommended VisualSVN. GUI to manage most of the project admin tasks, easy integration with AD for user/group auth, and a fairly simple workflow.

      Git is has some really nice features, but I wouldn't push it onto a team with no VCS experience.

    6. Re:CVS or Subversion by gonz · · Score: 5, Insightful

      For a small-to-medium team that has easy access to a centralized server, choosing Subversion instead of Git could save you a TON of time. In my experience, Git has a constant overhead of messed up merges, "brown bag" discussions to educate new devs about various gotchas, and ongoing debates about the right usage strategy (merging versus rebasing, branch management, how to keep histories from growing too large, etc).

      By contrast, I've also worked at several different companies that used Subversion, and basically you just show new devs how to sync and commit, and they figure out the rest themselves. The reason is that having a single always-up-to-date master is an order of magnitude simpler than Git's model of working-copy/branch/master on your local PC and then also branch/master on a remote PC and push/pull/fetch/merge between them.

      With Subversion you still have to manage branches sometimes, but there is typically a maintainer person who handles that. Whereas the model of Git is that every dev is doing merge algebra from day 1.

    7. Re: CVS or Subversion by MightyYar · · Score: 1

      Yeah, because the submitter who professes to have absolutely no idea what he's doing will surely do a much better job staying on top of security.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    8. Re:CVS or Subversion by bre_dnd · · Score: 1

      I use SVN at work and for a small number of developers it works decently well. SVN is quick to set up and to learn -- it somehow feels easy. I agree with the TortoiseSVN as a client -- all of that works quite well. However. Doing merges in SVN is an absolute nightmare. The "cherry picking" model of implementing features and merging them back in, one by one, as code gets ripe is painful in SVN. There is a learning curve for git, but not much more so that for SVN, and the habit of using a feature branch and merging back feels logical and the right thing to do.

    9. Re:CVS or Subversion by bre_dnd · · Score: 1

      SVN works well with a single up to date master, but that model eventually breaks if you want to have experimental features. At some point that will become a need -- trying something outside the main branch that is actively being deployed. Git is a bit of a pain at first but you simply can't do the things git does in svn.

    10. Re: CVS or Subversion by Anonymous Coward · · Score: 0

      Yes, but not as much, especially for a small team. Since the maintainer also works with/for them, he's much more in tune with their needs. Then there's the security and network connectivity implications/costs.

    11. Re:CVS or Subversion by Z00L00K · · Score: 1

      I'd pick Subversion or Git.

      Mercurial isn't something that I have had any good experiences from. Seems to require quite some learning threshold.

      Of course - the merging of branches - that's a source for curses in many version control systems since it's hard to make smart stuff around merges.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    12. Re:CVS or Subversion by TechyImmigrant · · Score: 2

      Branching works fine in SVN.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    13. Re:CVS or Subversion by sugar+and+acid · · Score: 3, Informative

      It is perfectly possible to branch in SVN and manage it. Git is better for branching and developing in complex and large team environments. But this is not the case here. They probably have max 3 guys maintaining and max 3 guys on a development branch. SVN is more than capable of handling that.

    14. Re:CVS or Subversion by houstonbofh · · Score: 2

      >

      why would you ever use cvs or svn instead?

      Lighter weight, more mature and stable codebase, and a smaller footprint on the clients? Just to name a few things... It is a fool who has only one tool in their toolbox.

    15. Re:CVS or Subversion by houstonbofh · · Score: 1

      Another vote for SVN (Subversion) here. You can spin up an SVN server on Ubuntu in about 30 minutes. Then add the web front end in another 10. A WEALTH of clients in both GUI and non-GUI for all platforms. And it is lightweight on the client side. (Only has a single version locally) The code is very mature, and you do not have to worry about patches often, and it is just easy to use.

      However, it is missing some things on your "Things that would be great" list, but not many. Not at all with some of the larg ammount of tools and addons built for SVN.

    16. Re:CVS or Subversion by Antique+Geekmeister · · Score: 3, Interesting

      > classic CVS or Subversion small team setup

      Yes, but I'd recommend _really strongly_ against either today. Both have considerable difficulty establishing disaster recovery or failover, and the tendency to set either of them up with the passwords stored locally in the user's home directory present profound security problems. And neither of them allow developers to make their own branches, and record their changes locally on their own systems, and submit them only when needed. The result can be a profound amount of clutter in the main repository, especially if anyone accidentally commits bulky binaries to a branch. CVS at least allows deletion of accidentally committed bulky objects: Subversion does not, not without extraordinary effort.

      I'm afraid that building your own bug tracking systems from scratch, even with tools like Bugzilla or Bonsai or RT or any of the major toolkits, is a blackhole of support work. Git has proven _very_ good for developers, because it allows them to branch, and to merge, far more cleanly, with very good mechanisms to make a "pull request" and get code review, and much more reliable and verifiable GPG signed tags. For small private repositories, github.com has proven very robust and resilient, with very good tools for Wikis and bug reports and integration with build systems.

      The only compelling reason I see to use Subversion today is the very, very good "TortoiseSVN" inteface for Windows users. "TortoiseGit" simply does not work well enough, and the X based GUI's aren't as good.

      > It would take one engineer half a day to set all this stuff up on a spare machine, and you could try it out fairly quickly.

      And it can take a full day every week to support just this one service, even in a small shop, with backup, high availability, bug fixes, security updates, end user support, and the hand management of user access and privilege management that is common to these small setups.

      > And best of all, this setup is gratis as well as Free. This has worked really nicely for me in both an academic and a commercial environment.

      I've unfortunately had to clean up from a number of "free as in beer" source control systems mismanaged over the long term.

    17. Re: CVS or Subversion by Anonymous Coward · · Score: 0

      Probably. As he stated it is a requirement that the server should be hosted locally.
      It is very likely that the IT department will make sure that it can't be accessed remotely. At that point it is already safer than any "cloud" solution. (And cloud is a very bad word since it hides that it's just "a computer of someone else".

      If there is any service you should take care of yourself it is version control.
      The legal part of having someone else control the access to all your sources and designs is a nightmare.

    18. Re:CVS or Subversion by Zero__Kelvin · · Score: 1

      I'll say this about your post of misinformation. No. Just NO.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    19. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      Branching works fine...

      But merging branches doesn't.

    20. Re:CVS or Subversion by Zero__Kelvin · · Score: 1

      SVN doesn't work. If you think it does, it because you have never used a real VCS. Linus explained this quite way back in 2007. That was 8 years ago. There is no excuse for using a tool that literally can't do proper version control, when there has been a kickass tool available for free for close to a decade.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    21. Re:CVS or Subversion by srichard25 · · Score: 1

      I agree with the Subversion recommendation. I've been forced into using git because its the next "great" thing in source control. Subversion met all our needs and worked well without much fuss. git is a pain to use, with cryptic commands and plenty of ways to screw yourself.

    22. Re:CVS or Subversion by ToasterMonkey · · Score: 1

      Another vote for SVN (Subversion) here. You can spin up an SVN server on Ubuntu in about 30 minutes. Then add the web front end in another 10. A WEALTH of clients in both GUI and non-GUI for all platforms. And it is lightweight on the client side. (Only has a single version locally) The code is very mature, and you do not have to worry about patches often, and it is just easy to use.

      However, it is missing some things on your "Things that would be great" list, but not many. Not at all with some of the larg ammount of tools and addons built for SVN.

      If it doesn't REALLY need to be on a Linux system, you can get Apache+SVN up and running in about a minute with VisualSVN Server. Domain integration, GUI for fine grained access controls, and it's all brain-dead simple and free.

      CollabNet seems to have something similar called Subversion Edge for multiple platforms, but I haven't used it and they were late to the game.

      I wouldn't recommend anyone roll their own svn+apache system. It's not worth even ten minutes of your time when those tested, out-of-os-distro stacks are available free.

    23. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      I was going to say, their work flow probably involves a solitary engineers working on one out of a number of small to medium code bases, as opposed to a team working on one big code base. So likely just one person is mucking with the code base at a time. And few of the engineers have much experience with version control.

      Probably better to use SVN/TortoiseSVN than say if you want adoption and compliance.

    24. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      I've never had issues with TortoiseGit. Anything simple I wanted was available at the push of a button and anything more complex I don't know what it's going under the hood and wouldn't trust it. :)

    25. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      Mercurial isn't something that I have had any good experiences from. Seems to require quite some learning threshold.

      From personal experience, I've found Mercurial to offer a pretty easy migration path for teams that haven't used DVCS before. It's been trivial to get teams to move from SVN to Mercurial. I've not found git to be such an easy migration path, indeed for some inexperienced devs it's been downright dangerous - and I still see many problems even by seasoned developers.

      Merging, however... jeez, I agree it can be a pain in any (D)VCS, but I'd argue it's mainly a developer issue or sometimes down to merge tool. Too many times I've seen people blindly choose a default merge or just pick their own changes, without thinking through what's changed.

    26. Re:CVS or Subversion by Anonymous Coward · · Score: 2, Funny

      Jeez, you really drank the git Koolaid didn't ya?

    27. Re:CVS or Subversion by Anonymous Coward · · Score: 1

      We recently switched from SVN to git. This was largely driven by what I can only describe as git zealots who had management's ear, and where any suggestion that git wasn't the second coming of Christ was treated with emotional bursts like the above. Beware of anyone describing technologies as "stupid" or "the only ... solution" or, as always, using ad hominem attacks.
      We're a mid-sized organization with 100+ developers with multiple releases per year of different software products. We branched a lot and merge. Short of custom-developed tools, nothing really works perfectly, but SVN handled our setup quite well. SVN is definitely easier for the average developer to use than git, and easier to manage administratively. There are some things that git does better, and some things that SVN does better. But one key thing is that when we used SVN, after the initial month or so of new hires learning how to use SVN, they got it. With git, almost a year after, people are still making mistakes with it, and we still have to have the one git expert come explain why something screwed up. This source of problems, while not overwhelming, has been a non-trivial burden on the development process. For the scenario described, I'd strongly recommend SVN.

      There were several different SVN gui tools we used, but for us TortoiseSVN seemed the most popular for Windows.

    28. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      Wow, someone drank the coolaid.

    29. Re: CVS or Subversion by Anonymous Coward · · Score: 0

      For my employment we use subversion (svn) and are moving to git. I would recommend svn as git will be overkill. Git is is good for larger teams and complicated process but when thats not necessary its bad for the same reasons. The commits are to your local machine and then you push back to the repo as a second step. Thats good if your working remotely but bad if you forget the push step. Adjusting your master is a pain to commit back to a branch, or from a branch to trunk. Gitlab is a web based tool you can run on a server to browse your git repo (and more).

      Svn is simple. Checkout, commit, branch, tag. Probably most the functionality you'll need. Tortise svn is a nice windows client. Commercial product 'fisheye and crucible' aka fecru is a nice server side web tool to browse, or else the svn server provides this too and there are probably other options too. Jenkins is a test server in which you can automate tests, including build, style, or run built in test suites in your code.

      Alternatively if what your doing is simple enough maybe throw your data in splunk and generated pretty graphs there.

    30. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      Branching works fine...

      But merging branches doesn't.

      Merging branches in subversion works to some extent. For example, branching out bugfix release branches and merging the bugfixes back to the trunk works fine so far as all merges go in a the same direction (from the release branch to trunk or the next release branch when it's branched off the trunk). OTOH, creating merge loops or any other three-point scenarios will get you in trouble. Also, merging works best if the full branch is always merged, merging a subfolder separately just creates lots of log noise later.

      IOW: merging works in subversion as long as you keep it very simple and straightforward. This requires a bit of discipline, but can be done.

    31. Re:CVS or Subversion by angel'o'sphere · · Score: 1

      If the team has no experience at all it does not matter what their first VCS is!!!!!

      Especially if they have to consider to switch to git later.

      Git is only difficult to grasp if your mind is polluted by CVS/SVN.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    32. Re:CVS or Subversion by linuxrocks123 · · Score: 1

      Dude, wow. I've used both git and svn, and there's little wrong with svn. git is nicer for extremely distributed projects, yes, but 15 people is not extremely distributed. They'll probably have about 10 people working on the trunk and 1-5 people on experimental branches. That's not a situation that is going to require git's advanced branching/merging capabilities.

      And in any case, get a grip. We're talking about version control systems, not insulting your personal honor.

      --
      vi ~/.emacs # I'm probably going to Hell for this.
    33. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      I continue to see people insisting that SVN functions without branches. I don't think any of these people have ever used SVN. It has branches and they work fine. Branches of branches work fine. Merging between branches works fine too. You can get the occasional conflict but GIT is no smarter at resolving that than SVN is.

      As more and more external projects use GIT and have their usual GIT advocates I'm baffled by the arguments against SVN that are flat out not true.

    34. Re:CVS or Subversion by angel'o'sphere · · Score: 1

      Except that the author of the story does not need merges.

      They only want to have a version history on automatic generated reports ... reading sometimes helps.

      If your team messes up merges with git, they will mess it up in any other VCS anyway.

      A merge is a merge, there is no difference what tool you use for it.

      The reason is that having a single always-up-to-date master is an order of magnitude simpler than Git's model of working-copy/branch/master on your local PC and then also branch/master on a remote PC and push/pull/fetch/merge between them.
      That is true, but they likely don't do that. I never managed local branches e.g. ... there was no need so far.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    35. Re:CVS or Subversion by angel'o'sphere · · Score: 4, Insightful

      SVN might have drawbacks, one is its name. However this: SVN doesn't work. is simply wrong.

      Linus had special requirements, hence he wrote git. If he claimed SVN does not work, he is not smart as he looks like.

      That does not mean that SVN etc. does not work. CVS is another thing. Having non atomic commits (how retarded is that anyway????) is a huge problem.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    36. Re:CVS or Subversion by F.Ultra · · Score: 1

      SVN works just fine for tons of projects, developers and companies. It would probably not work great for a project such as the Linux kernel but top poster does not seam to have that requirement.

    37. Re:CVS or Subversion by DutchUncle · · Score: 1

      If you think SVN doesn't work, you don't know what you're talking about - and you never used the systems that came earlier. Linus is a bright guy, but he did not invent software development, and his "not-invented-here" complex is sometimes counterproductive.

    38. Re:CVS or Subversion by DutchUncle · · Score: 1

      Subversion is very easy to teach to beginners. I got a bunch of hardware people to join me in using it by starting with a very simple shared-file system just for myself and one other person, and over a year or so even the nay-sayers saw that it was trivial to use - and so used it.

    39. Re:CVS or Subversion by DutchUncle · · Score: 1

      Merge early and often. In a 5-person group new to using ANY kind of VCS (plus me with experience), we had one user insisting that merging was impossible; when it turned out that his code base had not been updated for 3 months, while everyone else's gap was a week or less, other newbies were more annoyed than I was, because the absence of the stuff he had been working on had been slowing everyone down for weeks, and his insistence that it was now ready turned out to be totally wrong because it was connected to totally outdated contexts. This object lesson convinced the only other nay-sayer that maybe a VCS had actually been worthwhile.

    40. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      CVS is the worst piece of shit ever conceived. SVN is better. Perforce is probably the best of this "style".

    41. Re:CVS or Subversion by X0563511 · · Score: 1

      Serious question, as I'm not really a coder... what makes Git harder on newcomers than svn, cvs, and so on? I've touched git, hg, svn, and cvs, and of them, git/hg seem to be MUCH easier to work with than subversion or cvs (especially cvs - I hate more than is healthy).

      From my layman experience I'd consider git and mercurial more or less equivalent. The only downside I could see is how clients effectively get the whole branch history locally, which can grow to be pretty large if people aren't disciplined about avoiding large binary files and such.

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    42. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      100% agree. Unless all participants are software guys it's a recipe for disaster. We went through this in our company (HW+SW). Git obviously works great for professional programmers because we can visualize and "get it" within 10 minutes of working with it. It works perfectly because this matches the tree mindset we use everyday to develop software.

      But the hardware and non-technical types were toast; they needed a central cvs system because that's the way they think, even with all of the shortcomings and cruft. In the end SW got git, the HW guys and human resources, etc. got subversion. So far it's worked out great.

    43. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      I suspect that have one person working on any particular program at a time. In which case most of what git provides is just complexity.

    44. Re:CVS or Subversion by Maxmin · · Score: 3, Interesting

      The ONLY reason git gained popularity is Linus Torvalds. If an unknown engineer released a VCS with similarly confusing, incoherent command-line semantics? It would NEVER have taken off. git survived because Linus Torvalds. That's it.

      But git is the lingua franca. It has a learning curve, but because of that there is a virtually unlimited selection of learning materials out there. There is NO EXCUSE for not having some expertise in git, as engineers. Why rebase? How to cherry-pick? Only stubborn engineers don't know these things, and it's odd because they're smart enough to grasp the concepts, do the katas and gain proficiency.

      I work with a bunch of engineers that refuse to branch in git! They're terrified of it! Because, once they branched, worked out of that branch for three months, then had a disastrous merge to master (of course). So now master is the development branch! master is the release branch! THAT is terrifying. Although they do tag releases, but still.

      --
      O lord, bless this thy holy hand grenade, that with it thou mayest blow thine enemies to tiny bits, in thy mercy.
    45. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      I would never go back to svn or a classic centralized version control system. With centralized version control you get the joy of constantly being locked out from your commit and pain any time you want to do something beside check in / out.. Once you get a taste of the distributed model and all the easy to use features of git there is no going back. The learning curve of figuring out what you can do in a merge or branch workflow would payback in the first month.

    46. Re:CVS or Subversion by JoeMerchant · · Score: 1

      I'd recommend away from CVS, and even Subversion - to git.

      I lived in svn long enough to regret it, git is billed as "scary and hard to learn" but it's gotten past that stage, and the price of not using a distributed version control system is just too damn high.

    47. Re: CVS or Subversion by Anonymous Coward · · Score: 1

      Git gives you way more control over things, which makes it much easier to get yourself into a sticky situation. Rewriting commit history after a push is one of the more common mistakes.

    48. Re:CVS or Subversion by Zero__Kelvin · · Score: 0

      The fact that you think in terms of "trunks and experimental branches" as though some work on one and others work on the other cuts to the core of your complete misunderstanding of version control.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    49. Re:CVS or Subversion by Zero__Kelvin · · Score: 0
      Bullshit. When someone commits to a completely different codebase and my version bumps, that is not working. When you can't guarantee that I get back what I put in, that is not working.

      "Linus had special requirements, hence he wrote git."

      Yes, he required that a version control system actually, you know, works. You obviously never watched the frigging Google Tech Talk. Here's a wild idea. Actually have a clue what you are talking about before you post, and you might finally stop spouting your ignorance to the world.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    50. Re: CVS or Subversion by Anonymous Coward · · Score: 0

      If you think subversion works fine you have never done any merges.

    51. Re:CVS or Subversion by Zero__Kelvin · · Score: 0

      Bullshit. I have used SVN. People who think it works don't know what they are talking about. Watch the frigging Google Tech Talk and get back to me in a couple of hours after it has all sunk in.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    52. Re:CVS or Subversion by Zero__Kelvin · · Score: 0

      "If you think SVN doesn't work, you don't know what you're talking about"

      Now that is frigging hilarious.

      " Linus is a bright guy, but he did not invent software development, and his "not-invented-here" complex is sometimes counterproductive."

      Well that explains why he was perfectly happy to use BitKeeper until Larry McVoy asked him to stop. You should probably get a clue about what you are talking about before you post. Trying googling "bitkeeper wiki", clicking on the wikipedia link, and reading it. Your apology is accepted.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    53. Re: CVS or Subversion by Anonymous Coward · · Score: 0

      Linus is an asshole. Brilliant, but an asshole. When he says something doesn't work, what he really means is that it doesn't work in a way he likes. It's not because he doesn't understand.

    54. Re: CVS or Subversion by Anonymous Coward · · Score: 0

      A moron with a tool is still a moron. Sad but true. If you mess up a merge with git you simply don't know what merges are. In subversion typically there is one feature branch for everyone so you end up doing daily checkin & updates keeping everybody at the same pace. Complex merges need assistance and are typically handled by one person. That slows down everyone to the slowest team member.

      In git people have their own branches and get to work at their individual full speed. Using pull requests merges are mostly done automatically once dev branches were rebased on upstream. Rebasing is in the hand of those that contribute so it frees the main branch committer from having to figure out what went wrong.

      In short if you want speed & quality use git. If you want a brittle versioning system that keeps everybody at the same pace, use subversion and install a strong policy.

      Of course independent of whar you end up using, get unit testing from day one.

    55. Re: CVS or Subversion by Anonymous Coward · · Score: 0

      A local clone with pending commits is effectively a type of branch.

    56. Re: CVS or Subversion by Anonymous Coward · · Score: 0

      Git may not be smarter at merging than svn (though in practice it is), but it sure doesn't mess up things as easily as svn.

    57. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      Like anything else there's multiple philosophies on version control systems. They all have their pros and cons. Please get your head out of your ass. No one method is best for everyone. Git is definitely not the end all of version control systems.

    58. Re:CVS or Subversion by houstonbofh · · Score: 1

      I wouldn't recommend anyone roll their own svn+apache system. It's not worth even ten minutes of your time when those tested, out-of-os-distro stacks are available free.

      Because consistency among your distros is overrated anyway... :) Really, spend the extra 5 minutes to install it on the Linux you use for everything else and are familiar with. (Or in his case, install it on Windows because that is what they want... smh)

    59. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      Merge early and often.

      Merging in SVN is broken. When you resolve conflicts in the merge you change the commit being merged. This means that you didn't actually commit what was originally written, and you don't solve the issue of conflicts when the work is merged back the other way.

      Depending on how you work, this is a huge problem. For the case where you have a team working on an experimental or feature branch, that's a problem. Your commits from trunk are changed by resolving conflicts while your commits on the branch are not changed to keep pace with trunk. When you come to merge back, you don't take the (modified) trunk revisions too. You'll see the same conflicts again.

      Git (and a number of other VCS tools) solve this by implementing a proper rebase operation. Throw away the work that you've added to the top of the branch. Bring the head of the branch up to speed with the head of the source branch. There can be no conflicts here because the starting point in the branch was temporarily the same as the same commit on trunk. Re-apply the patches from the branch one-by-one. This gives the dev a chance to resolve conflicts in each of their commits, making them apply cleanly to trunk in the process.

      Why the hell would you want to use the nightmare that is SVN if you need more than trunk?

    60. Re: CVS or Subversion by Gr8Apes · · Score: 1

      This was brilliant! I literally LOL'ed. I don't think most people realize this. Yeah sure, you have to pay every month for cloud services, but how much would you in effect pay to have a high paid engineer tied up for a couple hours.

      Yep, and how much is not having your source code available to everyone everywhere worth to you? "Cloud" can be rewritten as "insecure", . In-house doesn't necessarily equal secure, but at least you have a chance.

      --
      The cesspool just got a check and balance.
    61. Re:CVS or Subversion by savuporo · · Score: 1

      Uh, no.

      Just use Git. I thought i was sane trying to keep inexperienced teams on Mercurial because of sane command line interfaces and whatnot. Its a losing strategy. Use Git/Github and you'll never be alone in trying to find supporting workflows, tools, documentation or people to help.

      --
      http://validator.w3.org/check?uri=http%3A%2F%2Fwww.slashdot.org Errors found while checking this document as HTML5!
    62. Re:CVS or Subversion by Anonymous Coward · · Score: 2, Interesting

      I am watching this talk and so far I have learnt (or perhaps reaffirmed) that Linus can display narcissistic and a control freak tendancies and has no trouble abusing people who disagree with him. If he wasn't so talented or hadn't hit upon Linux at the right time I would not be surprised if he was homeless instead, because no one would work with him.

      To call any SCM broken because is in fact ugly and stupid. Note that I did Linus the courtesy of not calling him ugly and stupid as he called everyone he disagreed with ugly and stupid - I just called his statement ugly and stupid. People can and do work with centralized SCM ssytems every day and a lot of excellent systems have been written using them.

      To call an SCM broken because it doesn't protect against disk or memory corruption is also unreasonable. You can offload those duties to the operating system and focus on designing a good system.

      It is true that distributed source control requires a distributed system but for a lot of organizations having code in one central repository is actually seen as an advantage. I have more of an issue with the lack of fine grained security for individual projects, branches or commits. But it's nothing that can't be worked around.

      The fact that Linus built git in such a fashion that when he'd finished after his 2 weeks it was unusable "by mere mortals" but he considered it finished speaks volumes.

      This talk is proof again, as if it was needed, that one can be technically brilliant and socially inept.

    63. Re:CVS or Subversion by jrumney · · Score: 3, Informative

      I never thought I would see a recommendation for CVS in 2015. The OP is on the right track looking at git and mercurial to start with. The only probem with his requirements are the Windows server. Maybe a virtual machine running on the Windows server would be acceptable to IT? While it is possible to run a git or mercurial server on Windows, there are a lot of good tools that would give the "things that would be great" that are not supported on Windows. On the client side, TortoiseGit and TortoiseHg are available, giving the same Explorer integration as TortoiseSVN/TortoiseCVS.

    64. Re: CVS or Subversion by MightyYar · · Score: 1

      If there is any service you should take care of yourself it is version control.

      Maybe. Or maybe you realize that every team member has a complete copy of the repository and so - while server security certainly protects you from poisoning the well, such as it were - it does nothing to protect you from having your source code stolen. And I doubt many hackers care much about this obscure data collection program.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    65. Re:CVS or Subversion by jez9999 · · Score: 1

      Yep. Linus eviscerated CVS and SVN (and classic TFS, by extension) in this talk. I've watched it a few times over. I encourage any SVN enthusiast to watch it and really try to take in what he's saying, because it did quite a lot to change my opinion towards using git.

    66. Re:CVS or Subversion by JoeMerchant · · Score: 2

      You see, I'd say git is better for compliance... as a solo developer, I have used svn and git extensively, and there's basically no difference between them - EXCEPT - git works when the server is down, or you are mobile with no connection.

      And if you happen to be working collaboratively, you are always branched, so you aren't really forced to merge something back to trunk or get all sorts of crap permissions worked out to continue to use version control - if the branch won't merge easily - F it, it's a branch, it can stay that way permanently.

    67. Re:CVS or Subversion by jrumney · · Score: 1

      It is perfectly possible to branch in SVN and manage it.

      SVN doesn't have branches. It has copies, and as of some quite recent version some kludges to track merges across those copies. There is a convention to create a top level directory in your repository called "branches" where you put all such copies, but merely calling them branches doesn't make them so. This is something that even CVS does better than SVN, as it supports true branches (that maintain history beyond the branch point), though its support for tracking merges is similarly non-existent as earlier versions of SVN.

    68. Re:CVS or Subversion by swillden · · Score: 4, Interesting

      So now master is the development branch! master is the release branch! THAT is terrifying. Although they do tag releases, but still.

      Developing on and releasing from master has its risks, but given appropriate QA, including code reviews, extensive automated unit, functional and integration tests, and extensive release tests, it can work very well. That's what Google does. 25,000 engineers, one source repository, 45,000 commits per day, developing on and releasing from HEAD.

      Well, almost. Developers create local branches for their work and don't commit into master until code review is complete -- including of automated tests. The actual commit into master doesn't go in unless the commit and everything else that could possibly depend on it builds and passes all of the tests (the build/test/submit cycle is automated; engineers kick it off and then get informed of the results). Releases are branched off to freeze them while release testing is done, and sometimes a few commits are cherry-picked into a release to fix issues, but mostly the release either passes the tests and goes out, or fails the tests and is abandoned. Most projects operate on a weekly release cycle, so the impact of abandoning a release is small. As long as it doesn't happen too often.

      Note that I'm speaking of the web properties; search, Gmail, etc. Obviously other groups have different approaches. For example, I currently work on Android, which has a roughly annual release cycle. That drives a very different strategy. One with lots of branching, actually.

      Also note that I'm not claiming that this is a good strategy for every team or company. I'm just pointing out that it can work, if you manage it well. Of course, the same is true of virtually every development process, though different processes are better suited to different contexts.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    69. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      those are all not-things. all the tools in question require a simple one-step install

      you're seriously going to claim that a toolchain based on shell scripts on top of RCS
      which requires to to keep your branch point on a post-it-node on the side of your
      monitor is a good tool

      only a fool tries to use a piece of shit as a hammer

    70. Re: CVS or Subversion by KGIII · · Score: 1

      I have been retired for a while and I'm kind of grateful for this because I'd be awfully confused. See, we did have proprietary, in-house, code and lots of intellectual property - a lot of it. Like, terabytes of data...

      Now, I'm no expert - I'm usually pretty clear about this, so correct me if I'm wrong. But, when you give your data away it does't really belong to you any more, does it? I mean, yeah, you still legally own it, I'm sure. But if you take your data and put it into the 'cloud' then aren't you essentially relinquishing control of said data? You no longer control who does and who doesn't have access to that data. You can no longer ensure the validity of that data. You're explicitly allowing another party to access that data, to manipulate and store that data.

      I don't get it... Email? Well, maybe - we didn't host email in the cloud, we had our own internal network for proprietary stuff and an external network for customers, etc... Hosting? Absolutely not... That stayed in-house. We're already running a giant server farm, adding a small blade server to handle internal and external hosting was pretty damned trivial and much more secure. I know - I hired people who told me it was. I trust them, that's why I hired them. They were good at their job.

      I don't understand this trend. With compute cycles being as cheap as they are and storage being absurdly inexpensive - what's the benefit? What sort of things are these people putting into the cloud and why? We had cloud computing back in the day - it was dumb terminals and a mainframe and we had to rent time... *sighs* It wasn't a good idea then, really. It's not like we need to do that today? I've got more compute power in my phone than the entire network had, combined, back when I was in college. Hell, I've got more storage too.

      Sure, I can see putting the kids pictures up there. I can see your personal email in the cloud (I use online hosting for email). I can see a website that's not got anything proprietary on it being relegated to a data center. But, your core business assets? I don't understand... It can't save money in the long run, can it? That and, well, even with an OC-48, I can't imagine how long it would take to upload data in the quantities needed. Encrypted backups makes some sense.

      Maybe I'm missing something... It wouldn't be the first time.

      --
      "So long and thanks for all the fish."
    71. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      At in your video 35:38. Torvalds agrees that centralized systems can and have worked for 35 years. He modifies his argument to state that they can't work "as well" whatever the hell that means.

      Torvalds is clearly an excellent developer but an immature human being and a terrible communicator.

    72. Re: CVS or Subversion by Gr8Apes · · Score: 1

      Maybe I'm missing something... It wouldn't be the first time.

      The only thing you're missing is why would you put your kids pics in the cloud, or anything else personal. Unless you're going to publish it for worldwide consumption, the "cloud" is not the place to put it.

      --
      The cesspool just got a check and balance.
    73. Re: CVS or Subversion by KGIII · · Score: 1

      Me? No, I wouldn't but I could see other people doing it. It's easy enough for them to host them elsewhere and they have nifty tools that make it simple. Myself? I'd go for a far more geeky and unworkable solution that didn't actually work for anyone but the person who followed my workflow. I can't say which is better. Probably not my way. At least I'd maintain some modicum of control with that.

      If I were to put them up then I'd encrypt 'em locally before doing so and share the password via phone or something similar. I'd actually probably just build my own system and host it locally. But, I don't think most people will go that route.

      --
      "So long and thanks for all the fish."
    74. Re:CVS or Subversion by Malc · · Score: 1

      Don't forget to setup a backup system with that server too.

      In fact that's one of the dangers of the dangers of git: ensure your work gets pushed to another server and isn't just on your local machine. At least committing it with git gives you a local duplicate I suppose.

    75. Re:CVS or Subversion by Durrik · · Score: 1
      I'm fighting the fight right now of moving from SVN to Git/Bitbucket Server. So I'll give it a shot in explaining why Git is harder on newcomers than Svn, Cvs. I also work for a hardware company that isn't very good on software discipline. But we have a much larger project than what was explained above.

      To start with, its Git's complexity. One of our customers (who pulls more weight with management than the engineers do), recommends that we don't move away from SVN to Git because 'Git is too complex for embedded engineers'. There is definitely something to this. The client/server architecture of SVN is easier to understand to people dealing with the basics of networking. It works very much like a filing cabinet that hardware centric engineers can wrap their heads around. You basically have a copy of what's on the server.

      With beginners they look at the power that any VCS can provide and then go crazy with it. They store things that shouldn't be in there, because its convenient. Binary artifacts for instance (.a files, installers, pdfs, etc). With a new team just discovering the joys of VCS your repository is going to explode with these things, because they won't understand how it affects things. With a distributed repository like Git this will explode the repo that needs to be cloned. And people will not understand why its slower than SVN at least on the initial clone/checkout. I'm not saying there aren't any solutions to this (I'm deploying git-lfs backed by JFrog Artifactory to handle my binaries), but you have to make sure you have everything sorted out before you go to Git.

      Branches are another problem, some engineers can't get their heads around it. In SVN it looks like just another copy in the repository. Almost like another directory. With Git its completely different, branches in Git are wonderful and probably its killer feature over SVN. But it adds in complexity and newbies won't appreciate them, and really know how to deal with them.

      Git also gives you enough rope to hang yourself, and then gives you plenty more. You can treat it like a normal VCS system, but that removes a lot of its power.

      Newbies also haven't had the pain of a malfunctioning VCS, or the pain of when it starts to go wrong. With the centralized repository the pain can be concealed better with SVN. Git rips off all the band-aids.

      Git can be merciless when it comes the power it provides. A lot of the complexity can be trained away. The Pro Git book is a good place to start, but how are you going to make your developers read it and understand it? For my own migration I'll be training the entire team on how to use Git when working in our project along with JIRA, Bitbucket server and Bamboo. I think the training will last for 2 days or so. Do you have enough time to put together the training for your own team, and then conduct the training? If you don't need Git's features, SVN's simplicity is definitely easier to train for.

      I hate to say it, but engineers and developers are stupider than they think when it comes to things outside their direct experience. Giving them SVN is like giving them a bike with training wheels. Its good for them to learn, and maybe you can take off the training wheels (using the CLI instead of GUI), but you wouldn't trust them out in the street. Giving them Git is like giving your 3 year old the keys to your SUV even with limiting them to a GUI. You want them to learn a bit before they get that power.

      I'm moving my team from SVN to Git to get a better workflow together. With 2/3 of the team in India I have a very hard time keeping the builds clean. Running with SVN right now the developers have been instructed to commit all their changes at the end of the day. I want to find the guy who said this and shoot him, because we have people breaking the build, then running off home for the weekend, leaving the people 12 timezones away stuck. With Git, Bitbucket, and JIRA workflows set up (and permissions on who can actually commit to th

      --
      Software Engineer & Writer of Military Science Fiction and Fantasy Blog: petermwright.com Twitter: WrightPeterM
    76. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      As nice as VisualSVN is, SVN itself is not one for beginner level. It has a lot of gotchas that don't make any sense until you run into them and when you do run into them they are often hard enough to fix that no visual tool is of any use. I ditched SVN for Mercurial myself and found SourceTree shortly after. So many hours would have been saved if I could have found a visual tool for SVN that was even half as good as SourceTree is for Mercurial.

    77. Re:CVS or Subversion by phantomfive · · Score: 1

      Also, it's worth adding that merging in SVN has improved quite a bit since Linus complained about it.......

      --
      "First they came for the slanderers and i said nothing."
    78. Re:CVS or Subversion by Zontar+The+Mindless · · Score: 1

      SVN has been working just fine for my group for a number of years. We have a total of about 35 people across 7 or 8 teams using the same set of repos and build server. We've discussed moving to git because our dev organisation use it, but if and when we do, we'll probably continue to use SVN as our front end, because git introduces complexities that most of us simply do not need in our day-to-day work. We sometimes branch but very seldom merge. (*My* job unfortunately includes the major exception to the latter case, but due to the nature of things, I'm *always* going to be stuck with doing this manually no matter what CVS we use. BTW, SVN rocks when it comes to performing reverse merges when you've committed something stupid and just need it to go away ASAP.)

      We use SVN in maintaining both the huge set of docs for which we're responsible (XML plus pulls from software sources plus various other text and binary assets) plus the backend for processing them (Perl, Python, PHP, ruby, shell, XSLT, FOP, javadoc, Doxygen, heaps of Makefiles, etc.) and it does just great.

      --
      Il n'y a pas de Planet B.
    79. Re:CVS or Subversion by Zontar+The+Mindless · · Score: 2

      Have you considered getting over yourself?

      --
      Il n'y a pas de Planet B.
    80. Re:CVS or Subversion by swilver · · Score: 1

      I spotted the mistake. You have branches that last 3 months. In our team we have branches that last at most 1 sprint (two weeks) and often much shorter than that.

      A branch should be something short-lived. Split that 3 months of work into much much smaller pieces that can be added to the develop or master branch without breaking anything (if necessary with a functionality switch). In a code base that is not somekind of tangled mess, small refactorings and changes are the way to go. Often we have several refactor and clean-up commits (that donot change functionality) before actually implementing a feature (which after the refactorings and cleanups is often trivial).

      No version control system is gonna save you from the merge or rebase problems you'll have after working in your own little bubble for 3 months.

    81. Re:CVS or Subversion by swilver · · Score: 1

      Unfortunately, most people that use Git, used to use SVN. They think that merges solve all problems, as that was the only tool available in SVN.

      In Git however, you have two tools to solve your problems. Rebase and Merge. Rebase is just as fundamental a tool as Merge, so one of the first things you should learn is the difference between the two. Once you learn how it works, you'll look at merges as something evil unless it was a merge to integrate something in the main branch.

      One of the most compelling reasons to use Rebase is that it makes it possible to make all your merge commits fast-forward commits. What this means is that even though something took 20 days to build in a branch, once you put it back into the main branch you can make it appear as if all the work happened instantaneously and was added as one nicely packed change right on top of the current state of the main branch.

    82. Re:CVS or Subversion by goose-incarnated · · Score: 1

      Bullshit. I have used SVN. People who think it works don't know what they are talking about. Watch the frigging Google Tech Talk and get back to me in a couple of hours after it has all sunk in.

      You're off to a poor start if the only way to present your argument is via TV. I view very little TV and have even less time to view 60 seconds of material stretched over 10 minutes.

      --
      I'm a minority race. Save your vitriol for white people.
    83. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      Truly, nothing. The only people wh think git is harder are the people using all of the features because they think it makes them more hardcore.With a sensible branching strategy (which you can teach anyone new to version control in less than 30 minutes) and a small howto (git clone, git checkout, git commit, git pull and git push) you've got most of what any newcomer needs.

      We've dealt with this a dozen times, introducing junior developers, some who have never written any code, never mind needed version control, to become productive in a day.

    84. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      Um...not backing anything up and keeping it all locally is dangerous on ANY type of file management.

      At least with distributed version control systems (of which git is one), if you're central server goes down and you cannot put it back together from backups, you can get the team to repush their work to a new server and you're running again. This is not going to work quite so painlessly with a centralised system.

    85. Re:CVS or Subversion by angel'o'sphere · · Score: 1

      Sorry, your writing is incomprehensible.

      SVN worked in al organizations I worked for with out any single incident. SVN: just works.

      No idea what you are talking abut ad how your "version bumps" (what is that supposed to mean?)

      When you can't guarantee that I get back what I put in That is what SVN does, perhaps you are mixing it up with CVS? With subversion you always get out what you put in.

      Yes, he required that a version control system actually, you know, works. Which SVN does just fine. Seems you made mistakes with it, no idea. Linus special requirements where others, seems you don't know them ... actually have a clue what you are talking about before you post, and you might finally stop spouting your ignorance to the world. The ignorant guy is obviously you, as you neither know Liuns' requirements ;D nor where you able in your dozens of rants I see here in this thread to coherently explain a single problem you had with SVN.

      Indeed I did not watch the tech talk :D why should I? I prefer reading books or life talks, I never ever watched a video talk ... does not make any sense to me. I can't do that in a train or a plane, had to download it, then I would forget to watch it. I can not do that at work ... because I would disturb my coworkers. And actually it never occurred to me that there might be a tech talk about git on youtube.

      Frankly: I prefer the man page. It covers everything I need to know. And I have a good book about git, but well, my current company is not using git yet.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    86. Re:CVS or Subversion by gbjbaanb · · Score: 1

      I'd say git is a non-starter for compliance. Any SCM that lets you rebase your history away so it is actually deleted is not a SCM that was designed for business. (which is true, it scratched Linus' itch)

      For these guys, I'd possibly recommend Mercurial (works better on Windows than git) if they needed distributed development; Subversion if they are all in the office (as it has the best client tooling on Windows) or Fossil if they want to try something good that is half-way between the two.

      Fossil might actually be the tool for them - its a DVCS but does auto-updates to the server so it can look like a traditional VCS, if 1 developer works on 1 code branch at a time, then this is a bit of a killer feature - you just do work and your changes are uploaded for you, almost no thought required about using the system :-)

    87. Re:CVS or Subversion by JoeMerchant · · Score: 1

      Adding one script to git that does a "commit, then push if you have connection" makes it much harder to misuse... you can make the script for your team and tell them to use it only, or just train them to do both steps every time, depends on the audience which approach would be preferable.

      I tried training an established git shop to make named branches (they were all in master, and visibly suffering the consequences), it was a hard sell since 1/2 of them were actively interviewing for other jobs.

      In 2008, a git fanboi attempted to move me off of svn - at the time, I told him to get stuffed - git didn't integrate with any of the svn integrated tools we were using. The story changed pretty dramatically by 2010, I'd say it was on-par for ease of use (with offsetting + and - on both sides), and it has improved some more since then.

      Another DVCS may actually be better right now, but I can't see one with more widespread adoption or support, and that will translate to better integration with your tools (TFS, even), and development that will likely incorporate the best features of the competition before the competition gets much market mind-share.

      If you're in a stable development environment, and most of your team is going to stay put for 5+ years, use whatever you want - odds are, if it doesn't work for you completely, you can customize it (I've seen some of this done with git, too). But, if you have a fair amount of turnover, people coming in from the outside, you'll be better off if they don't have to learn your own special flavor of everything before they can be productive.

    88. Re:CVS or Subversion by T.E.D. · · Score: 1

      As far as I can tell, you're describing the classic CVS or Subversion small team setup.

      That's my impression too. It looks like this list of requirements were thought out by someone who doesn't really understand how modern DVCS works.

      __Server_running_locally__ - There's really no such thing as a "server" in Git. You can certainly (and probably will) set up your repositories in a fashion that there is effectively a parent repo everyone pulls from or pushes to on a server somewhere. But that's entirely up to you.

      Use windows credentials - You can set up file permissions up on the underlying files any way you want, but I think that's not what you are talking about. This "requirement" seems to again be picturing a single "server" somewhere with a single monolithic tool used to access it.

    89. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      Everyone else understood what he meant by "version bumps", so just because you don't have the relevant experience to get what he's talking about, that doesn't mean his writing is incomprehensible.

      Also, are you from the fifties? Anyone working in tech today (and I mean working, not sitting in a basement pretending they are just like everyone else) watches video talks, and they remember to download them for trains and planes (even though you have wifi on both nowadays), plus they use headphones when watching them at work.

      For someone "working" in tech, you are way behind the times when it comes to basic modern technology. If you're not a COBOL programmer, you should probably be fired.

    90. Re:CVS or Subversion by TechyImmigrant · · Score: 1

      Yup. Branches should be from the trunk and should go right back there.

      If you don't do that then you must enjoy complexity.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    91. Re:CVS or Subversion by TechyImmigrant · · Score: 1

      SVN doesn't work. If you think it does, it because you have never used a real VCS. Linus explained this quite way back in 2007. That was 8 years ago. There is no excuse for using a tool that literally can't do proper version control, when there has been a kickass tool available for free for close to a decade.

      You neither understand my problem nor SVN. It works just fine. It does what it says on the box. It maps to our problem well.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    92. Re:CVS or Subversion by Zero__Kelvin · · Score: 0

      There is no TV involved, and you aren't even the person I was replying to; that being said, I don't need to "make an argument". If you think you are too important or smart to watch an hour of Linus at his best talking about one of the most important software development tools on the planet then you have no chance of ever becoming a truly good software developer.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    93. Re:CVS or Subversion by david_thornley · · Score: 1

      It's arguable that CVS may be better suited to a particular application than git or mercurial, since they're a different kind of VCS. I don't see any good argument to use CVS when Subversion is available. It was designed as a better CVS and works very well in that role.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    94. Re:CVS or Subversion by gbjbaanb · · Score: 1

      Maybe, but I find git is just too "unprofessional" for my taste and my work dev is on Windows so thhat counts against it as well - TortoiseSVN is possibly the best thought-out and helpful tool I just feel I should use it :-)

      Fossil is my preferred DVCS go-to nowadays, its a bit better thought out and comes with lots of good stuff that all system should have. I worry a little about its scalability (after having used SVN with a 10s of GB SVN repo) but it seems solid.

      It seems to have all the good stuff the competition has, in a single package that makes TFS look like the monstrosity it is. It just needs a bit more exposure - so go have a look at it and see what you think.

    95. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      It's been trivial to get teams to move from SVN to Mercurial. I've not found git to be such an easy migration path, indeed for some inexperienced devs it's been downright dangerous - and I still see many problems even by seasoned developers.

      We did that switch from Subversion to Mercurial years ago. I agree with this commenter: Mercurial was easy to pick up and did not involve all that network traffic that Subversion required. It was a huge improvement. Gahh on those client/server VCS's.

      The feature set between Mercurial and Git is pretty well equivalent, but Mercurial is a sight easier to use. Mercurial is slower and uses more disk space that Git, but I find things like being able to refer to commits using simple integers to more than make up for that. Mercurial does use far less disk space and is far faster than Subversion or CVS.

    96. Re:CVS or Subversion by ClickOnThis · · Score: 1

      Branching works fine...

      But merging branches doesn't.

      I have yet to find a VCS for which this is not true.

      At some point, you'll encounter a merging problem that will defeat whatever VCS you're using.

      --
      If it weren't for deadlines, nothing would be late.
    97. Re:CVS or Subversion by F.Ultra · · Score: 1

      I saw that Tech Talk went it first aired and there is nothing in it that has anything to do with SVN. Linus does not like CVS and he then jokes that the people behind SVN is insane since they believe that they can perform "CVS done right". He has no opinion what so ever about SVN, he hasn't used SVN and if you don't get that he is joking in that video then I'm sorry for you.

      If you want to claim that a piece of software that works for millions of people "doesn't work" then you have to come up with some proof of that and not just post a satirical video of Linus. I have personally used SVN for years in multiple projects and workplaces and it did indeed work just fine.

    98. Re:CVS or Subversion by Zero__Kelvin · · Score: 1

      He says that every point he is making about CVS also applies to SVN.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    99. Re: CVS or Subversion by Gr8Apes · · Score: 1

      I've actually done some of this route, except for the encrypting content separately part. Since I host the server, locking it down is simple enough, so only those I wish to share things with can get there. Works for me, and was relatively trivial to setup, for me. Like you, I don't believe most people will go that route. And that's a shame, really, because setting that up shouldn't be so hard nor difficult that people have issues with it.

      --
      The cesspool just got a check and balance.
    100. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      I've worked with SVN, Hg, and git in that order, and git is by far the most robust and easiest to NOT screw up. I've never known an SVN repo that wasn't restored from an offsite backup at some point because someone ran some command that literally wrecked the whole repo beyond the point of fixing it. In fact, every place I've worked that used SVN, that was a somewhat regular occurrence, and it was the dev lead's job to make the restore once someone inevitably broke the repo. It does what it needs to, but one command can literally cost the business everything if your software is important, and nobody knows how to recover from it.

      Hg I've only used once, and it was ok, but nothing special.

      git is the only VCS I've worked with where it is practically impossible for a normal user to break things with regularity. The only way I know how (and have seen in practice) is for every dev work on develop branch. This is of course the absolute wrong way to use git, but there are Fortune 50 companies that I won't name here that do just that, and they end up with a very SVN like problem where they have to have a regular backup of the entire repository for whenever upstream inevitably gets broken. Granted, since every developer literally HAS a backup, fixing these problems with git takes 30 seconds rather than six hours with SVN.

      My takeaway: If you know what you're doing, use git and don't screw up. Use git-flow as a methodology, and use it religiously. Used with rebasing and proper review, you will never see a merge conflict that can't be fixed easily. Don't even attempt a setup like git-flow with SVN, you may as well be farming toenail fungus from your shower mat.

    101. Re:CVS or Subversion by F.Ultra · · Score: 1

      Because of the "CVS done right" yes, not because he actually have used or even tried SVN. When you see or read what Linus says you have to first understand that he is very satirical most of the time. I know that this is a foreign concept to many people (mostly Americans) but this is very common among the Nordic countries (from which Linus orginates).

    102. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      I had exactly the opposite experience. Git was working fine in a development group of three or so, and we had SVN foisted upon us -- The relatively regular problems that arose from that took a lot of otherwise productive development time and ... redirected it. We'd had quite a bit of experience with CVS, so the management model of SVN wasn't the basic problem; SVN didn't cope well with lots of experimental branches, intermittent network connections (disasterous), or complex/conflicting merges from multiple sources. At least not in our experience. I am perfectly willing to believe that there are practices that could mitigate at least some of the problems we had (some of the group members *really* preferred SVN).

      I won't come out in favour of Git over subversion or otherwise, rather I'd suggest you actually test your candidates live for a week or two -- the burden of parallel systems won't last long, and by the end you will know what works best for you. We had a decision made on the basis of a superficial, faulty assessment, and it was a horrible mess. Test them all out first and collect data.

    103. Re:CVS or Subversion by Zero__Kelvin · · Score: 1

      You don't understand what you saw and heard. He clearly understands SVN as I have had to use SVN. Everything he says applies to it, so don't try to obfuscate things.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    104. Re:CVS or Subversion by F.Ultra · · Score: 1
      What Linus did say about SVN was exactly this:

      When I say I hate CVS with a passion, I have to also say that if there any SVN users (Subversion users) in the audience, you might want to leave. Because my hatred of CVS has meant that I see Subversion as being the most pointless project ever started, because the whole slogan for the Subversion for a while was 'CVS done right' or something like that. And if you start with that kind of slogan, there is nowhere you can go. It's like, there is no way to do CVS right.

      Which is what I have said consistently in each post. Then he talks about branching and merging which is a huge pain in CVS, a fact that no one argues. In fact it's one of the main reasons that SVN was created in the first place. So no that does not apply to SVN as well. And finally he talks about using SCM in a distributed model which is completely uninteresting for what we argue (since the project in TFS is not distributed and that no one here have argued that SVN would be a preferred choice in a distributed project).

      So no I actually think that it's you who don't really understand what you saw and heard, you don't like SVN and that bias made you interpret his talk in a different way than what he actually said. Nothing strange about that, it's just the way the human mind works.

    105. Re:CVS or Subversion by Zero__Kelvin · · Score: 1

      No. I think you are avoiding the important parts. Version bumps when nothing in your project has changed and the fact that SVN doesn't guarantee that you'll get back what you put in. Indeed, it is broken to the degree that it allows code to live in the main repo and then have that commit completely undone, with no record of the code ever having been improperly committed to the repo!

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    106. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      Git isn't confusing, you just don't understand the problem it's solving. It's not really something that maps well to the way humans normally think about this issue. For what it does, it's very hard to improve on. If all you've read is how to use it, you've missed out on why it was written the way it was, and you're gonna have a hard time.

      You work with a bunch of stupid engineers who would have the same problems with any other revision control system. That must be fun.

    107. Re:CVS or Subversion by Anonymous Coward · · Score: 0

      "Serious question, as I'm not really a coder..."

      Then STFU and let people who know speak.

      TortoiseHG. Don't need a server. If you can't figure out TortoiseHG then I suggest you might want a job at McDonalds.

    108. Re:CVS or Subversion by F.Ultra · · Score: 1

      Version bumps only happen if you insist on putting several project into the same repository. And even then you can get per project version in "svn info" and "svn log" (and probably via other means as well).

      As to your second statement, what? Please explain because that is nothing that I have ever seen after using SVN for decades.

    109. Re: CVS or Subversion by KGIII · · Score: 1

      Thanks. I'll have to mull it over and do some more research. I'm not really sure what to think - it makes sense with some things and there's lots of data that really needn't be proprietary. I'm really not sure what to think. There's so many things that seem to be returning to the way things were but, at the same time, we've enough compute resources that we probably can work on data remotely and do so in new and interesting ways.

      It'd be interesting to have the massive data sets (my company does/did - I sold it and retired - traffic modeling) and actually off-load the processing while keeping the visualization internal but we already did that to some extent - we just housed our own servers and kept extra hardware on hand to roll out new metal as needed. Virtualization was a thing back then but still not that advanced. We did do a lot of clustering which helped with scalability.

      I'm not really sure where the benefit lies unless there's a real price decrease because of economies of scale? We employed talented people and listened to them. We gave them the tools they needed and asked for. I dunno... I'd probably still be keeping it in-house. Some of it, specifically the pedestrian traffic, would have been data belonging to another company and not something we probably would have risked hosting in the cloud. It probably would never have seen a public facing network, for that matter.

      --
      "So long and thanks for all the fish."
    110. Re:CVS or Subversion by rp · · Score: 1

      So if you won't need to merge much, and development is going to be pretty much linear, SVN is OK. If not, use Git or another distributed VCS. There is no excuse for using CVS for new projects these days. SVN improves on it in every possible way.

  3. Perforce by Anonymous Coward · · Score: 0

    Perforce is what I would recommend, but it may not fit your budget.
    Although, anything but git will work.

    1. Re:Perforce by Impy+the+Impiuos+Imp · · Score: 1

      Perforce is excellent. Their concept of changelists is clean and easy to use.

      I have been stuck with abominations like Microft SourceSafe and IBM's godawful Rational suite, the latter of which is purchased by the same kind of idiots who like SAP, i.e. people their sales staff can easily suck on.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
  4. PlasticSCM by Anonymous Coward · · Score: 0

    We use in my company. Excellent merging, and good support for branch per task. Also user friendly, and good support. If you are allowed open source, git is the obvious choice.

    1. Re:PlasticSCM by naris · · Score: 1

      I should also mention that Plastic SCM cab used as a client/server and/or a distributed SCM at the same time. To act as a distributed SCM, you install both the client and the server on your local PC. You can also have hybrid environments involving some PC connecting to a server ant others with local server that can sync with other server, such as the master one, similar to git.

      Plastic SCM can also be setup to have Active Directory (windows) authentication (or LDAP or it's own user name/password file)

      Plastic SCM can also be used as a git client and can push/pull changes to/from git as well as plastic servers

  5. Subversion by Anonymous Coward · · Score: 0

    Easy to learn, cross platform, enterprise grade, supports atomic commits (unlike CVS), free and open source, well documented and (even better) easy to google the answer to "how do I..." questions.

    The capstone of the evolution of 30 years of traditional version control development.

  6. git by Anonymous Coward · · Score: 0

    Git. Everyone is using it now. Next question.

    1. Re:git by benjfowler · · Score: 2

      I love Git myself, but for newbies who can only cope with a shallow learning curve, I'd make do with Subversion to begin with. At a recent employer, we adopted Subversion as a "gateway drug" to Git. Sometimes, you don't need anything more powerful than that.

    2. Re:git by murdocj · · Score: 1

      I'd agree. Git is very powerful, in the same way that a double-ended chainsaw is very powerful. You can cut a lot of wood but you can also get seriously hurt. The thing is, Git isn't something where you can just follow a few simple formulas and have it all work. You really have to understand what it's doing and what the underlying model is, and even for people who are experienced with version control, that's going to take some time. I used Subversion for a while and it may not be as powerful, but for a small team in one location it's the simpler choice.

    3. Re:Git by EmperorArthur · · Score: 1

      Actually you can do that with git.
      Just set the right pre commit, or pre upload hooks and it'll do it all.

      One project I contribute to on github preforms automatic coverity and travis-ci builds/tests every time someone asks to merge their code to the master branch.

      Easy way to see if the thing even builds, without the maintainers having to do a thing.

      --
      So lets pretend that we've just completed writing this code, as opposed to having just completed sabotaging it -Altera
    4. Re:git by houstonbofh · · Score: 1

      Everyone also watches Reality TV. That does not make it a good choice.

    5. Re:Git by houstonbofh · · Score: 1

      Is that git, or build scripts on the git repository? Which could also be build scripts on a subversion repository.

    6. Re:git by ATMAvatar · · Score: 3, Insightful

      I don't know that I share the same experience. There are plenty of UI tools that help make git easier to work with, such that I wouldn't have much hesitation in making it the first VCS for a team.

      I certainly don't expect them to be doing rebasing, bisecting, or force pushes anytime soon, nor would I suggest they start by setting each other as remotes to take advantage of the distributed aspect. However stage, commit, merge, pull, and push operations on a central origin are all pretty simple, and not much different than they would be doing with any other VCS.

      --
      "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
    7. Re:git by murdocj · · Score: 1

      I haven't used git for a while so I don't recall the details, but I was with a small team of very experienced developers, and even for us going to git had a bunch of surprises. For me it's not so much the UI tools, it's understanding what's going on, and why git does what it does.

      That's what I mean when I say there's no simple formula of "do these 3 commands to do this, those 2 commands to do that". You have to understand WHY the commands are doing what they are doing.

      I'm even farther away from SVN, but as I recall SVN was more centralized and had more of an obvious "get the current version from the central repository, edit, check it your changes" approach. With git, you are always doing a distributed approach, and I think it just makes it a little harder to figure out. More powerful, but not as clear.

    8. Re:git by Anonymous Coward · · Score: 1

      No. Just no.
      If they cannot "understand" git, then how does using an inferior tool with broken fundamental concepts help them in any way toward learning good version control semantics?
      If they must be taught, teach them something that is foundationally not broken, even if it takes longer to teach it will be worth more to them and to the team in the end.

      There are git workflows that mimic almost exactly ways they would be using svn--you can start with a simplified workflow, but built on good concepts and teach them the underpinnings as you go. The core concepts are not really that much to begin making use of it.

      It is really hard for a noob to mess anything up with git--which is part of the beauty of it.

    9. Re:git by Electricity+Likes+Me · · Score: 3, Insightful

      No you're not? With Git its not at all distributed unless you really really work at it. The simplest and most naive git model is "get latest head, edit, commit and push". This is what everyone is going to be doing with any other tool.

      The difference is, when they get more advanced, you'll be in the good company of the *massive* git ecosystem and featureset which will make your life a lot easier. If you're dealing with people who don't know version control, then it doesn't matter what you pick - they are not going to understand it and you will be doing a lot of support.

    10. Re:git by Anonymous Coward · · Score: 0

      Would you really want anyone messing with version control that doesn't understand what they are doing with it?

      Much easier to understand solid concepts than broken ones anyways.

      git FTW.

    11. Re:Git by EmperorArthur · · Score: 1

      Git has what are known as hooks. Things that are run whenever you do something, like committing a file or trying to push to somewhere. It's how you get E-Mail notifications. These aren't anything new, so I think subversion offers something similar. The large difference is in what these let the maintainer do when it comes to integration.

      Take a look at this page: https://github.com/OpenMW/open...
      Click on the green check marks or red 'X's. This is something github has integrated into their system, but there are other options as well. The advantage is that developers could add a new feature, or fix a bug without committing directly to the master branch. The primary maintainer can easily view if the patches compile cleanly, and if the patch is acceptable or not.

      This is a consequence of how easy it is to branch and merge using git. I know subversion has branches, but they can be harder to deal with and it's hard to spin up a branch for every feature and patch. Combine that with git's local storage and swapping/reverting branches is a sna

      --
      So lets pretend that we've just completed writing this code, as opposed to having just completed sabotaging it -Altera
    12. Re:git by Pseudonymous+Powers · · Score: 4, Informative

      I was with a small team of very experienced developers, and even for us going to git had a bunch of surprises. For me it's not so much the UI tools, it's understanding what's going on, and why git does what it does.

      That's what I mean when I say there's no simple formula of "do these 3 commands to do this, those 2 commands to do that". You have to understand WHY the commands are doing what they are doing.

      That's certainly a common view of Git, but after using it for the last few years, I think that a lot of the problems that beginners have with it are happening because of this assumption. That is, when a developer asks how to merge their code into the shared Git repo for the first time, the wise old Git gurus point them at a site that explains how Git works at the molecular level, called The Git Book. This is almost never helpful, because your average Joe C. Programmer doesn't have time in his schedule to read an entire book, and even if he reads it over the weekend instead of, you know, having a life, he just ends up with his head full of crazy circles-and-arrows diagrams, which, divorced from any concrete, hands-on practice, only serves to confuse the issue more.

      What the inexperienced Gitsperson actually needs at that point is a short and to-the-point workflow that he can use to get his goddamn code in the goddamn repo, like (commands for illustration purposes only, I use a Fischer Price GUI): "git clone MyRepo; git switch master; git pull; git branch MyFeature; git switch MyFeature; [implement the code changes]; git commit; git push; git switch master; git pull; git merge MyFeature; [fix conflicts, resolve, commit again if necessary]; git push". And for the love of God, Newbie, please don't try to use "rebase", you'll just cripple our entire product at 5:30 pm on a Friday.

      There's documentation of that kind out there, admittedly, but it's really hard to find among all the indistinguishable-from-autogenerated-prank-nonsense man pages and fifteen-part seminars on how the version hashing algorithm works.

    13. Re:Git by Anonymous Coward · · Score: 0

      FYI, Subversion also has hooks. As do other version control systems. Git didn't invent pre-commit hooks, they just adopted a good idea from existing systems.

    14. Re:git by Anonymous Coward · · Score: 0

      My team's first run at git was to create the origin on a network share and push/pull against that. It was incredibly simple to set up.

      We eventually set it up for ssh instead on a debian vm which happily did its job without any fuss (at least until someone drank the kool-aid and convinced management we needed to pay $2.5k/year to put everything on github... because github).

    15. Re:git by gargleblast · · Score: 1

      (commands for illustration purposes only, I use a Fischer Price GUI): "git clone MyRepo; git switch master ..."

      $ git switch
      git: 'switch' is not a git command. See 'git --help'.

      I must say you're not painting a pretty picture.

    16. Re:git by Pseudonymous+Powers · · Score: 1

      $ git switch

      git: 'switch' is not a git command. See 'git --help'.

      Sorry, it's actually "git checkout". You know, even though you're not actually "checking out" anything. Hey, I said I didn't use the command line.

    17. Re:Git by houstonbofh · · Score: 1

      This is a consequence of how easy it is to branch and merge using git. I know subversion has branches, but they can be harder to deal with and it's hard to spin up a branch for every feature and patch.

      In some cases, this can be a good thing. Easy branching can lead to code sprawl... If you want to more tightly control a project, branching my need to be controlled.

    18. Re:git by BlackPignouf · · Score: 1

      Plus, you can use a git client on a svn server.

  7. So many options by Anonymous Coward · · Score: 0

    For side projects I use git (github by there are other hosted options or you can run your own server). At work we use TFS. I've been at this a while, seen CVS, SVN, Source Safe and there are many more out there. Try a few out, pilot one or two, find what fits. Read a book or two about whatever you choose so you get the most out of it and learn the best practices for using whatever you choose.

    1. Re:So many options by benjfowler · · Score: 4, Informative

      Oh God, stay the fuck away from SourceSafe.

      SourceSafe is an absolutely terrible choice, since it is actively user-hostile, and has the alarming habit of eating your source code at the worst possible time. Rational Clearcase is almost as bad.

    2. Re:So many options by hsa · · Score: 1

      SourceSafe is a dead product. TFS is the new Microsoft offering.

    3. Re:So many options by Anonymous Coward · · Score: 0

      TFS also supports GIT, so if you think you might eventually want to go that route, GIT is probably your best choice.

      Personally, I've used CVS, SVN, and GIT on major projects and I will take GIT hands down anyday. I have had far fewer problems with it than even SVN.

      If you want a github like interface but it has to be hosted locally, look at gitlab

    4. Re:So many options by Anonymous Coward · · Score: 0

      TFS does not support Git. It's an alternative to Git. In fact, it's basically SVN with a Microsoft-integrated task/ticket management system, a sharepoint site, and some dev team organization stuff tacked on.

      You're thinking of Team Explorer, the TFS client. It supports VCS plugins, including one for Git. You can download Team Explorer for free (as in beer, of course, since it's a Microsoft product). It includes the Visual Studio shell with the Team Explorer and Source Code Explorer utility panes. I don't recommend it unless you use Visual Studio anyway. It's a terribly heavy-weight way to access source control. (The only reason I've had to use it, personally, is because one of our ex-managers upgraded us to TFS2013, but wouldn't upgrade our clients to VS2013. Now he's gone and nobody can create new team projects without TE2013.)

    5. Re:So many options by Anonymous Coward · · Score: 0

      Nah, VSS is not that bad if you are exclusively using Microsoft products. BUT, its a dead product, and has been for a while now so that sort of takes it off the table regardless.

    6. Re:So many options by mattyj · · Score: 1

      Actually, as a version control tool, it is extremely dangerous because it actively loses your code. And even their 'analyze' tool, which shouldn't be necessary in a version control tool, often refuses to recover lost data (which, as mentioned, a version control tool should never do.) VSS 'technology' is almost as old as CVS and is not geared toward modern code bases.

      If I was a manager at a company and someone even uttered the words 'visual source safe' I would fire them immediately. They don't deserve to have a job.

    7. Re:So many options by antdude · · Score: 1

      I last used Visual SourceSafe during the dotcom days. It was OK. Is it worse now? I recently use Perforce from my previous employer, which was nicer.

      --
      Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
  8. Git by beck24 · · Score: 2
    Seems to be the defacto standard almost everything these days. It's got everything you mentioned.

    Except

    Do basic test on the code (Syntax errors, pytest/nose/or alike with coverage (of tests), check coding style)

    That's not really a function of version control

  9. Fossil by Anonymous Coward · · Score: 0

    Fossil: http://fossil-scm.org/index.html/doc/trunk/www/index.wiki

    1. Re: Fossil by Anonymous Coward · · Score: 0

      For small teams this is one of the best all around tools. Your team might be a light larger than is comfortable for fossil, but it is an option.

    2. Re: Fossil by Anonymous Coward · · Score: 0

      Integrated ticket system, wiki and web gui. Fuel gui (https://fuel-scm.org/fossil/index) seems to be advancing. I like fossil.

    3. Re:Fossil by gbjbaanb · · Score: 1

      I'd agree with Fossil for this team - not only does it come with wiki, tickets and all that project management stuff built into it, its also a way of making DVCS use easier - and it doesn't have the dangers of git (the number of times I've seen people work with git only to say "umm, it seems to have..." makes it a poor choice especially for teams that don;t have a git guru to fix it)

      Fossil is much under-rated, for this team, its possibly the ideal choice. Written by the same guy who did SQLite so it should be pretty solid. I know its very easy to set up and get going with even though I've not used it in anger.

  10. Continuous integration by eulernet · · Score: 1

    In fact, what you want is several different tools, at least a VCS and an integrated build:
    https://en.wikipedia.org/wiki/...

    At my company, we are using CruiseControl.NET, which is free and open-source, but seems discontinued.
    It's sufficient for our needs.
    We use a SVN server to make our commits (with TortoiseSvn on the clients), it's dead simple to install and use.
    Configuring CruiseControl is more tedious, but you'll get automated builds, along with code coverage and unit tests.

    A better tool may exist, but we use this one.

    1. Re:Continuous integration by alvinrod · · Score: 1

      You could try out Jenkins (a fork of Hudson) which is under active development and integrates fairly well with some of the other project management tools (e.g. Jira, Trac, etc.) people tend to use for bug tracking. Its also FOSS and under active development.

      It's got a fair bit of community support in terms of plugins, so even if you're doing something a little bit niche, there's a reasonable chance that someone else might have built a plugin to solve those needs.

    2. Re:Continuous integration by Zero__Kelvin · · Score: 1

      Or you could reasearch Jenkins, at which point you will realize that you should be using git.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  11. git meets your needs by __roo · · Score: 1

    I think git can meet all of your needs, and personally I love it.
    - It's a free, well-established, and well-documented open source project.
    - There are plenty of GUIs.
    - For inexperienced developers, there are tutorials like this one.
    - Here's decent guide to getting password-less authentication via ssh working on Windows to connect to a server running locally on a Windows box (as long as it's running OpenSSH, maybe via cygwin).
    - You can use Git hooks to do notifications, run syntax checks, etc.

  12. Git with Atlassian setup by Anonymous Coward · · Score: 1

    I'd recommend running Git rather than Mercurial. Use SourceTree as GUI and it will be great for inexperienced users. Using a DVCS requires some initial effort from each team member to learn the basic concepts of versioning.

    I further recommend working with the Atlassian stack with Jira (and possibly Bamboo and Stash later on).

  13. I like by gQuigs · · Score: 1

    git
    gerrit (especially how implented via LibreOffice/Openstack)

    Launchpad (what Ubuntu uses) also just added git support, and it's $250 flat a year for a proprietary project. This would not be hosted locally though (https://help.launchpad.net/CommercialHosting). I wouldn't recommend starting a new project with Bazaar today.. but if this was 5+ years ago it might be perfect for your use case.. (great Windows client)

  14. Use Git by EmperorArthur · · Score: 1

    I'm always going to recommend git as the version control system of choice. It scales well, and you can learn how it works without mucking with servers to start. Plus github.com has some good tutorials, and there are several web interfaces available. If you could convince your IT department to let you use a cloud based system, github would actually be perfect. Also, the speed. Don't underestimate how important that is.

    Here's a list of reasons to use it instead of SVN or CVS: http://www.gitguys.com/topics/...

    Almost all of the requested features are possible with most version control systems, but, like back end infrastructure, require someone knowledgeable about that particular system to set things up. For instance, there are commit hooks to handle sending E-Mails and doing code checking, but that requires editing the right file.

    --
    So lets pretend that we've just completed writing this code, as opposed to having just completed sabotaging it -Altera
    1. Re:Use Git by houstonbofh · · Score: 1

      A lot of the things they see as benefits, can also be drawbacks. Having the entire repository and all it's history can be quite large on older (or frequently moving) projects. Making local branches, and just lots of branches in general, easy can result is some serious code sprawl as well. And SVN project can often allow for tighter management.

    2. Re:Use Git by EmperorArthur · · Score: 1

      In some ways yes, in some ways no. Large history can be an issue, but to get to that point you pretty much need to be doing something pretty special for a fortune 500 company. The entirety of the Linux Kernel clocks in at under 2GiB, the only company I've ever heard make the claim that this is an issue was Facebook, who went with Mercurial instead.

      The trick with branches is that each represents a different feature or bug fix. So long as they don't touch the same bits of code, git makes merging them painless. Local branches allow for trying out ideas, and swapping between tasks easy. Remote branches allow for greater control. A common paradigm is only one or two people have commit access to master. Everyone else asks them to merge their branch.

      This branch and merge strategy, called 'pull requests', is the key to github's success. On sourceforge with svn, I would have to generate a patch file, then send it to the developers somehow, then wait for them to examine it, before finally deciding to add everything as one large commit. This can take a while, especially if several things have to be modified. Worse, the developers have to revert their local code copy to a clean slate before applying the patch. With git and github, you can easily view what's going to change, and merging is a simple click/command.

      --
      So lets pretend that we've just completed writing this code, as opposed to having just completed sabotaging it -Altera
    3. Re:Use Git by houstonbofh · · Score: 1

      In some ways yes, in some ways no. Large history can be an issue, but to get to that point you pretty much need to be doing something pretty special for a fortune 500 company. The entirety of the Linux Kernel clocks in at under 2GiB, the only company I've ever heard make the claim that this is an issue was Facebook, who went with Mercurial instead.

      This changes quickly if you store binaries in your repository. (And yes, there are sometimes good reasons to do that) And this can be executable binaries, compressed files, images... And if they change a lot, you can get something very large, very fast. And since devs love those thin laptops with SSD drives, (Let's face it... So do I!) that can get ugly quick!

  15. Git git and git by Anonymous Coward · · Score: 0

    You cannot go wrong with Git. It's free, most popular, and quite honestly the best VCS due to it's simplicity and distributed nature. Just because it's most common in open source projects, doesn't mean you can't use it for private enterprise. Check out gitlab...it's an enterprise version of github.

    You'd be doing yourself and your colleagues a disservice of you picked an outdated VCS like CVS, Subversion, or Perforce. The rest of the world is already on the Git train; you can hop on or get left behind.

    1. Re:Git git and git by Anonymous Coward · · Score: 0

      You'd be doing yourself and your colleagues a disservice of you picked an outdated VCS like CVS, Subversion, or Perforce. The rest of the world is already on the Git train; you can hop on or get left behind.

      If he's versioning test data (binaries), and the team is small, and he's willing to compromise on open source, Perforce could work. The guy in the question specifically said non-hosted and had to run on Windows. He doesn't need a DVCS for a team that small and a self-hosted solution, but he might need the ability for the central server to handle lots of binary data.

    2. Re:Git git and git by houstonbofh · · Score: 1

      What if you have a lot of frequently changing binary files in the repository? Then all that history with git can become quite large. I know this may come as a shock, but some people are using SVN because it is a better choice for that workflow.

    3. Re:Git git and git by Anonymous Coward · · Score: 0

      Seriously, git is a festering cesspool of a UI.
      17 years in the video games business with 10+ years of perforce experience in that environment.
      You can't beat perforce when a initial minimal source get is over 50GB and a full get is over 200GB and a churn of over a GB a day. At those repo sizes git falls apart. I have no idea how large the data set the original questioner has, but working with binaries it will get big fast.

      No matter what solution they go with, make sure you have lots of HDD space and a good backup plan.
      Once you centralize the data it's a lot easier to lose it all.
       

    4. Re:Git git and git by Anonymous Coward · · Score: 0

      I have no idea how large the data set the original questioner has, but working with binaries it will get big fast.

      You should never store binaries in a version control system.

    5. Re:Git git and git by Anonymous Coward · · Score: 0

      I have no idea how large the data set the original questioner has, but working with binaries it will get big fast.

      You should never store binaries in a version control system.

      When we speak of binaries, we're not talking about executable code, we're talking about binary assets that aren't meaningfully represented as text, be they PNGs of screenshots, PowerPoint files, OpenOffice documents, or just gigabytes of test data.

      Just because you can build a.out from hello.c and save a few bytes by versioning only hello.c, doesn't mean you can build TestReport.PDF out of data.xlsx without versioning data.xlsx.

    6. Re:Git git and git by Anonymous Coward · · Score: 0

      What if you have a lot of frequently changing binary files in the repository?

      Versioned binaries belong on FTP directory, not in source control.

    7. Re:Git git and git by gbjbaanb · · Score: 1

      source does not mean only source code. An icon used to build your product is just as much part of the source as the text files containing programming code.

      Just because git doesn't work well with binaries only means the tool is poor, not the workflow. Remember computers are there to serve us, not the other way round.

  16. Run docker in a virtual machine by Johnny+Loves+Linux · · Score: 1

    I recommend git. It's fast, it's easy, it's decentralized so code cowboy can't burn your project. And there are gui's for it for windows as well: https://git-scm.com/download/g...

    Since IT has set the policy to a Windows operating system only server, you've had your hands tied as to what technology you can use. Fortunately for you, you can run Docker on Windows: https://docs.docker.com/instal..., which means you'll have access to tens of thousands docker containers for various purposes such as gitlab: https://github.com/sameersbn/d...

    For basic test on the code (Syntax errors, pytest/nose/or alike with coverage (of tests), check coding style) it sounds like what you're looking for might be jenkins: https://en.wikipedia.org/wiki/... and you can create a docker container for running jenkins on your server: https://github.com/jenkinsci/d... or https://wiki.jenkins-ci.org/di...

    1. Re:Run docker in a virtual machine by Anonymous Coward · · Score: 0

      eew.. docker on windows. Might as well just run a proper VM of linux to run git.

  17. Git, obviously, but there's a way to make it easie by Tumbleweed · · Score: 2

    Use a GUI like Atlassian's "SourceTree". It's what we use at work, and it works pretty well. You'll still want at least one Git expert on the team for when someone does something stupid, but you'll need that for whatever platform you choose.

  18. Mercurial by roman_mir · · Score: 2, Insightful

    Super easy to set up, take a day with your team to learn the main functionality and you are good to go.

    As your team gets more experienced, you will be happy you made that choice.

    1. Re: Mercurial by Anonymous Coward · · Score: 1

      +1 for Mercurial. Just started using it and took less than a day to feel comfortable. Can run on local machine, on server, or in cloud. Has TourtiseHg for a GUI to make it even easier.

  19. I'd probably go with Subversion by Todd+Knarr · · Score: 1

    I'd go with Subversion. It's older and has a centralized repository rather than Git's distributed-repositories approach, but that won't be a problem for your team since they aren't spread out across multiple locations. It's got better support for running on Windows (CollabNet sells a supported commercial Windows-based server plus the whole TeamForge line), has Windows clients (both integrated into Explorer and stand-alone) and has supported integration with Visual Studio. Older means that almost every development tool out there for Windows understands how to interact with it. It's also easier for people who aren't familiar with version control to grasp SVN's model and how you interact with it (a commit is a commit, they don't have to understand the differences between their local copy of the repository and the origin copy on the Git server). Finally, SVN offers a degree of centralized control that makes management happy (eg. mandating commit comments in a certain form, controlling individual access to different parts of the directory tree).

  20. EMACS by Anonymous Coward · · Score: 0

    If you can't do it in EMACS you're just not trying, poseur.

  21. Converting ALL code to Python? by __aaclcg7560 · · Score: 0

    if successful the company is willing to migrate all code to Python

    Sounds like a recipe for failure. While Python can do some amazing things, it's not total replacement for C and Java is all use cases. Summary makes no mention as to why Python should be the only programming language for this project. Maybe Python programmers are cheaper than C and Java programmers these days?

    1. Re:Converting ALL code to Python? by stooo · · Score: 1

      The alternative being labview, it seems the project is mainly about automation/instrumentation. Performance is mostly irrelevant for these kind of projects. Flexibility, robustness, simplicity, simple learning curve are the important things because often, your small amount of users are also looking or even contributing to the code.

      Using plain C(++) for that kind of slow tasks with the train wreck that the Labview interfaces are, results in disaster, as soon as the requirements change often and you try to chase a moving target with a jackhammer.

      I'll say from experience that python is much more adapted, and produces much cleaner code, provided some discipline.

      --
      aaaaaaa
    2. Re:Converting ALL code to Python? by DavidHumus · · Score: 1

      But ... but ... but it's the bandwagon! Don't you want to jump on it?

    3. Re:Converting ALL code to Python? by Anonymous Coward · · Score: 0

      They are. Well... at least the crappy ones are.

  22. Git by X10 · · Score: 1

    Git. The best. Whether your company has one employee, or hundreds of thousands.

    --
    no, I don't have a sig
  23. Stay away from git for "inexperienced team" by iamacat · · Score: 2, Informative

    Source control with git is like using (char *) &myStruct in C. Very flexible, but impossible to explain to someone who wants to do simple tasks, and most commands result in corrupting your work. Including correct commands accidentally used twice. Worked with it for two years, still regularly find things that baffle me.

    Better to start with a comprehensible tool like svn and a good IDE with a source control plugin such as IntelliJ. You might migrate several years down the road, but by that time either team will become experienced enough to use git, or hopefully something better comes along.

    1. Re:Stay away from git for "inexperienced team" by Anonymous Coward · · Score: 0

      This! I noticed after hiring over four dozen inexperienced developers, they do great with Git for the few commits. Then they decided to be assholes and screw-up the project by refusing to use just the few commands they were told to use. Nearly every one of them does this. Git works great for them so they decide to ruin that. They're so self-destructive. For example, this weekend I'm fixing a mess where three different developers rebased and made every commit from the past two years appear as their own. Then, a third developer got angry and did a force push to delete all of the files the other two changed.

      Another problem is lack of obliterate. You just know one of those inexperienced developers is going to get mad at Git and maliciously commit passwords or copyrighted material or something else they shouldn't.

    2. Re: Stay away from git for "inexperienced team" by Anonymous Coward · · Score: 0

      This new developers are almost always spoiled children these days, and they will get frustrated with Git and will most likely decide to try to screw over their entire team.

    3. Re: Stay away from git for "inexperienced team" by Anonymous Coward · · Score: 0

      And that is why you don't hire people who aren't experienced u less you want to deal with the whining and temper tantrums.

    4. Re: Stay away from git for "inexperienced team" by Anonymous Coward · · Score: 0

      Inexperienced developers are inexperienced typically because they're lazy, and lazy people don't deal with Git very well. Typically they'll act like a two year-old and just start breaking things to get attention.

    5. Re:Stay away from git for "inexperienced team" by Antique+Geekmeister · · Score: 1

      > For example, this weekend I'm fixing a mess where three different developers rebased and made every commit from the past two years appear as their own.

      This is _precisely_ why projects need tags. git's history is more vulnerable to stupid changes than Subversion's.

      > Then, a third developer got angry and did a force push to delete all of the files the other two changed.

      And this is _precisely_ why github.com has a "do not allow forced pushes" option today. And again, it's why a project needs tags.

      > Another problem is lack of obliterate. You just know one of those inexperienced developers is going to get mad at Git and maliciously commit passwords or copyrighted material or something else they shouldn't.

      It doesn't take malice: it's a quite common problem: people commit testing scripts or configuration tools with hard-coded passwords all the time, and accidentally commit bulky binary content accidentally all the time. That's when a "force push" to a git repository is its most useful, precisely to clear this data.

      The bulky files is also when a default ".gitignore" for any new repositories can be invaluable.

    6. Re:Stay away from git for "inexperienced team" by bsolar · · Score: 1

      Experience is overrated. An inexperienced team of reasonably smart developers can learn and implement one of the simplest git workflows very quickly. I'd actually expect them to do that by themselves, without the need of babysitting.

      From what you describe the problem is not the team being inexperienced, it's the team being dumb, indisciplined and unprofessional. With such a team I think the choice of VCS is the least of your problems and even plenty of "experience" won't help that much in the long run.

    7. Re:Stay away from git for "inexperienced team" by Electricity+Likes+Me · · Score: 1

      Force Push doesn't delete data from Git you realize. It's still there, the commits are still there, until you GC them out. Maybe - assuming they're not pointed to by anything. There are ways to do it, but this is not one and if your project is public in anyway then it's dangerous advice that this works.

      Also ff someone force pushes to a git repo you rollback the reflog to before the push to get to a known good state. Which again: is why force push doesn't delete things.

    8. Re: Stay away from git for "inexperienced team" by Anonymous Coward · · Score: 0

      Your fault for not using gitolite to manage who can write and who can rewrite. An acl is a must for every vcs no matter what tool you use.

    9. Re:Stay away from git for "inexperienced team" by Anonymous Coward · · Score: 0

      I'm sorry to say you setup your 'server of truth' wrong. Never let ALL your developers do force pushes to your source of truth. Ever. You need a system for Pull Requests!

    10. Re:Stay away from git for "inexperienced team" by Antique+Geekmeister · · Score: 1

      A "force push" after a "git gc" is precisely the dangerous problem I've seen. The "git gc" is used to clean the local repository of dangerous commits with confidential information, or with bulky items that should never have entered the repository. The "force push" is then used to clear them from the central repository.

      Keeping the data out and preventing accidental remerges from remote repositories can get awkward, it's true.

    11. Re:Stay away from git for "inexperienced team" by Anonymous Coward · · Score: 0

      Using git safely is very simple. Never, ever, use rebase. Just don't use it. Second thing use reset with extreme caution. Only use it to undo commits that are not pushed.

      Learn to branch a lot, branch for every little feature, and then you can do marge --squash to get rid of all the 'wip' commit messages. Just don't rebase.

    12. Re:Stay away from git for "inexperienced team" by Anonymous Coward · · Score: 0

      If your people cannot learn basic git in 1 day, change your people.

        It REALLY isn't that hard. It's about people wanting to learn.

        "Most command result in corrupting your work" => lol wut ? bitch you crazy...

    13. Re:Stay away from git for "inexperienced team" by swilver · · Score: 1

      Since we explain how to use Git to non-developers (using TortoiseGit), I call bullshit on this.

      The log window in TortoiseGit is usually an excellent way to show people what happens and show them what the actions they take really do.

    14. Re:Stay away from git for "inexperienced team" by Anonymous Coward · · Score: 0

      I too have been burned by a force push, because like you I blindly used git pull. Read more to learn the one trick that all force pushers hate!11

      $ git fetch

      You're welcome. Now you never have to get burned by a force push, and as an added bonus, you can use git rebase -i to avoid lame merge commits in your wip branch. (But you will have to train yourself not to accidentally rebase against a remote branch that has been forced.)

    15. Re:Stay away from git for "inexperienced team" by jez9999 · · Score: 1

      I don't think you have a clue how to use git.

    16. Re:Stay away from git for "inexperienced team" by Anonymous Coward · · Score: 0

      Agree. In fact, I'd say stay away from git even with an experience team. There are far far better solutions. Git just happens to be cheap with a ton of git fanboys running around (most of whom seemingly claim but have little to no experience with the alternatives).

    17. Re:Stay away from git for "inexperienced team" by clay_buster · · Score: 1

      GIT is a power tool. You can saw a lot of wood with it. Occasionally you cut off one of your own limbs or digits.

      You may wish to start with simpler hand tools for your first project.

    18. Re:Stay away from git for "inexperienced team" by Anonymous Coward · · Score: 0

      If your people cannot learn basic git in 1 day, change your people.

        It REALLY isn't that hard. It's about people wanting to learn.

      Sorry, but no. I hear this a lot, but it's just not true. The reason it's not true is that there is no "basic git". You must understand all the intricate details of git's internal workings to avoid doing wrong things. You cannot safely use a small subset of the functionality without ending up somewhere you can't escape from. It's too bad too, because git's internal model is vastly superior to just about every other option. It's front end just totally fails to accomplish the task of making it easy to use. Typical geek tool problem: phenomenal capability, terrible usability.

      I would never recommend git unless there was no tool other than git which would work. At which point we'd have to have a two week training seminar on how to/not to use it. And you'd still need an expert on call. The only people who believe git is easy are people who've used it daily for two years or more. Everyone else is still having to lookup arcane command line combinatorics.

  24. tortoise svn by Anonymous Coward · · Score: 0

    I have used tortoise svn at a couple of jobs. One of which was in an electrical engineering group. We had files strewn about and everything was complete chaos. SVN allowed us to organize all of our files so anyone could find any revision of any file and track changes.

    I remember it took a couple weeks to get our format set up, get all files in order, and train everyone on how to use it. We also did a weekly export as a backup/search file.

  25. What will you ACTUALLY be doing? by GrantRobertson · · Score: 5, Insightful

    First we need to take a step back and figure out what you are actually doing. You have pulled up with a "software version control" bandwagon and everyone just jumped on without looking to see if it would take you where you wanted to go.

    Are you wanting to keep track of the versions of your code or the reports generated by that code or the data that the code used to generate the reports? Each type of information is best suited for a different kind of versioning system. Are the reports generated only by the code or are they written by humans? Trying to use a code versioning system to keep track of modifications to reports or data is a loosing game. Don't make the mistake of thinking every problem is a nail just because you have a hammer.

    1. Re:What will you ACTUALLY be doing? by Anonymous Coward · · Score: 0

      Excellent advice - there are 3 different configuration problems here.

    2. Re:What will you ACTUALLY be doing? by hsa · · Score: 1

      I have been developing software professionally for over 10 years now.

      All these weird requirements (reports, bug tracking integration, email notifications..) are .. weird. Sounds like a manager is trying to use version control system for parts of his job. Or you are talking about continuous integration, and should look elsewhere, like CruiseControl.

      Nevertheless, I will never ever again do a multiperson project without a version control system. Seriously, I even use version control on my personal projects. Version control is not a "nice to have", it is a must.

      --

      I work in a Fortune 500 Company and I recommend TFS or SVN for version control. GIT is not nice, since it requires user training. You just want to have your team developing as fast as possible and minimize the admin tasks.

    3. Re: What will you ACTUALLY be doing? by GrantRobertson · · Score: 1

      But what kind of "projects" do YOU work on? Is it just code (or code-ish things like XML), or do you mean documentation, or databases, or graphics files? Each different thing works best with a different form of "version control."

      I once tried to hack together a way to use Git to track updates to my FrameMaker files. It "worked" but was a nightmare to use and took up just as much disk space as simply keeping every version of the file and assigning different filenames.

    4. Re:What will you ACTUALLY be doing? by Anonymous Coward · · Score: 0

      I have been developing software professionally for over 10 years now.

      Based on your monospaced font, I suspect it has been a tad longer.
      Whenever someone posts like this on this site, I imagine them sitting behind a mechanical typewriter.

  26. Gitlab... by Masked+Coward · · Score: 1

    This isn't necessarily an endorsement but just an option that I have experience with. Gitlab, as far as I know, is just a knockoff of Github with slightly fewer features, but it's proably fairly close for most use cases.

    We use it at my company and one of our offices has a very Windows-focused group of devs, while many of us in our office lean more toward Linux/BSD. The web interface is alright, it gets the job done. And I'm pretty sure you can self-host for free, but there are plenty of sites to check up on that. My experience isn't from an admin perspective but rather a user perspective, and it seems ok if your users aren't complete morons.

    1. Re:Gitlab... by Anonymous Coward · · Score: 0

      Gitlab will run on windows too

  27. mecurial for source control by Anonymous Coward · · Score: 1

    Mercurial: I personally haven't seen any other VCS easier on windows (tortoise hg is way better than most windows git alternatives).
    For continuous integration you can try many of the choices out there but jenkins is good enough IMO.

    Mind that the computer on which you will host the mercurial sever and/or jenkins should be maintained by someone and this might pose some challenges for a "inexperienced team".

    1. Re:mecurial for source control by houstonbofh · · Score: 1

      Mercurial: I personally haven't seen any other VCS easier on windows

      Subversion is easier. It does have less features, but from ease of use, that can be a good thing!

    2. Re:mecurial for source control by Anonymous Coward · · Score: 0

      If your code is 99.9% text files and you can handle the master/development -> fork to user's github account -> feature branch -> pull request back to the main development branch, then go with 'git'. It's not a difficult workflow to master and day-to-day operations in the working copy consist of "git fetch upstream", "git merge --ff-only upstream/development", "git push origin development", "git checkout working-branch", "git rebase development", "git push origin working-branch", then create a pull request. The people who have pain in such a process are those who either "never rebase at least daily/weekly" or "don't have unit tests".

      OTOH, if you have a lot of binary files to manage, git is the wrong solution (try SVN). SVN is very good at handling binary (and very large files), but it's a centralized version control system, which brings some limitations, but is also much simpler for end-users to grasp.

      I've used both. I prefer git for traditional development with unit tests / feature branches / well modularized code. I prefer SVN for small teams that don't need branching and just need version control (that is impossible to break because there is no obliterate command).

    3. Re:mecurial for source control by Anonymous Coward · · Score: 0

      I really can't imagine going back to a client/server version control system today. They just seem really fragile.

      With subversion at least, the entire project's history is stored in a single place, and sure, you could make backups of it, but you have to stop the server to make sure your backup is consistent, and if your restore it, suddenly all the clients might have their current checkout be a version that didn't exist in the backup, or worse, maybe new commits get created after the restore, and now the client's current checkout is pointing to a commit number that is now something completely different on the server, and I honestly have no idea how well subversion handles this scenario. I wouldn't want to try it.

      Long story short, none of my subversion repositories have survived to the present day.

      With distributed version control on the other hand, you have to really try to irrevocably damage them. I still have virtually all of my git repositories around, by virtue of the fact that every checked out instance of it is essentially a complete and consistent backup, and in fact this is probably even the preferred way to backup a DVCS, since it will be consistent without having to shut down the server to copy its files, and it will use almost no bandwidth, since it only needs to transfer the changes since the last "backup".

      You can literally delete a git repository from your server, create a new empty one in its place, and without even bothering with any backups at all, still have everything work correctly. The next time somebody pushes a change to the server, that change and all the history it depends on will reappear on the server, and nobody will the wiser.

      I honestly can't imagine giving up that kind of fault tolerance. Going back to subversion would feel like going back to the dark ages.

      I'm not saying you have to use git, that's just my personal preference, but you should really consider a DVCS. Even if 'distributed' isn't a feature you're looking for, you can still use it in the familiar client/server configuration by having a single place where everyone pushes or pulls their changes.

    4. Re:mecurial for source control by gbjbaanb · · Score: 1

      Heh. reminds me of a company I worked for... they used git and when I asked about backups they said "we don't need them, we use git, its distributed so the repos are on somebody's machine"

      Then I asked around and half the repos that were not used on a day-to-day basis were not distributed on somebody's machine. Nobody had them checked out at all. Whoops.

      And then I pointed out that they all did their development on a single, shared server.....

      backups are not an optional feature of DVCS. They are still required. The problem you have is that you just don't know what you have backed up - so you end up with a 'gold' clone that contains the latest merges and the current state of everyone's development.... or in other words, a centralised VCS!

      Maybe the concept of no DVCS works in Linux where there are thousands of people with a copy. In a business environment this isn't necessarily the case.

      Incidentally SVN manages its history very well indeed. You do not need to stop the server, you can send commits to it and it will happily replay them to a mirror, or you can hot-copy a backup off. SVN may not be everyone's cup of tea but it does its back-end stuff very seriously.

    5. Re:mecurial for source control by houstonbofh · · Score: 1

      Oh, my God! A person with more the one tool in his toolbox! Brother! :)

      It amazes me how many people think you have to make one tool to fit all use cases.

    6. Re:mecurial for source control by houstonbofh · · Score: 1

      With subversion at least, the entire project's history is stored in a single place, and sure, you could make backups of it, but you have to stop the server to make sure your backup is consistent

      No, you don't. I have a project with 2 SVN servers. One is the development server, and it is the place where commits happen. After they happen, the SVN is rsynced to the public server where anyone can checkout, but no one can commit. It happens live and while running, and it works every time. And it is a backup, on top of the snapshots of the disk image of the VM running BOTH of those servers.

      It is only as fragile as your environment.

  28. TL;DR GitLab/Git by sirlark · · Score: 1

    As far as your basic requirements are concerned, pretty much any major (git, svn, mercurial) open source version control system will cater for them, with some third party (mostly) free tools. Local server, well established, open source, email notification via hooks, extensive (if not easy to read) documentation ... all of these would be covered by the VCS itself. Single sign on integration with Active Directory (AD) can probably be set up using an LDAP extension. Many windows clients exist, most catering to several VCSs at once; which are good and which are bad, I often find is a matter of personal taste. Tortoise* and sourcetree seem to be the most popular at the moment. Tests are generally a matter for the project itself, i.e. part of the code, and automating testing based on source control activity (e.g. test on new commits) can also be done using scripting hooks, although you might prefer some kind of continuous integration system like jenkins.

    For your 'nice-to-haves'; you would be looking at a third party stack. I personally would recommend gitlab. It comes with baked in issue tracking, project wikis for documentation/planning, email notifications without you having to script hooks, LDAP/AD integration (iirc, never used it myself), merge/pull requests (i.e. a form of code review). You can attach/upload files of any type to issues/comments/wiki pages, not sure if that's what you are looking for. Alternatively, you could look at gitstack, which just fits into your price range and covers most of the maintenance/admin headaches by the looks of it. I've never used, found it by googling.

    Finally, git (and possibly mercurial and svn) has a way to sign off commits using a GPG key. This work flow is also accessible through gitlab. Basically, a change is made and committed to branch which is then pushed to the gitlab server. This generates a pull request to some pre-designated branch (e.g. trunk/development/whatever). When the pull request is approved, it can be signed using the approver's GPG key. I'm not sure is this covers your specific use case; I'm afraid I'm not sure exactly what you want from the signing part of your requirements

    DISCLAIMER: This advice is based exclusively on personal experience, does not constitute legal advice, makes no guarantee of merchantability or fitness to a particular purpose implied or otherwise, did not harm any kittens in the making thereof, and may cause the reader distress by making them learn something.

  29. Re:Git, obviously, but there's a way to make it ea by Feral+Nerd · · Score: 1

    Use a GUI like Atlassian's "SourceTree". It's what we use at work, and it works pretty well. You'll still want at least one Git expert on the team for when someone does something stupid, but you'll need that for whatever platform you choose.

    With an inexperienced team you'd probably be better off with SVN. It's easier for complete noobs to understand and a bunch of noobs is not likely to need the extra features you get with Git. By the time they have gotten comfortable with SVN and you feel that your team is ready for more complex work you can always upgrade to Git.

  30. Mercurial FTW by Anonymous Coward · · Score: 0

    Having used both HG and Git, I can safely say that in a Windows environment, HG wins hands down in terms of GUI. The main client for HG, TortoiseHG, is slick and polished and miles ahead of its Git competitor TortoiseGit - so far ahead, in fact, that I never had to drop into the command-line with HG, whereas I spend most of my time there with Git.

    I know all of Slashdot will tell you to use Git because Linus Torvalds invented it and therefore it's cool, but in my experience, Mercurial is by far the better product.

  31. Zfs by Anonymous Coward · · Score: 0

    I bet you could just setup up ZFS and snapshot it frequently. Run it in FreeNAS mounted through your preferred file sharing system. Its not really version control, but if you want to hide from real version control, it might work.

    If you want real version control, and something very simple do SVN with no branches (branches can be come complex). If you actually want branching, use git.

  32. OUCH!!! by LostMyBeaver · · Score: 3, Informative

    I'll start by answering your question. Use GIT. It's the most widely supported system at this time and it works really well.

    Next let me be a typical slashdot asshole that makes abrasive comments that may be well intended by will come off as being a dick. I'll explain that I already see endless problems coming from this.

    If you're working with a team of 10-15 developers who all lack experience with version control, you have a major problem with out-of-date programmers and you're throwing them into a hell called Python. If you generally accomplish projects using C and LabView, the developers you have more than likely lack a modern development skill set and coding in a language like Python will produce some of the worst code ever written. If C is like shooting yourself in the leg and C++ is like blowing the whole damned leg off, Python is like dropping a nuke. You will have an endless supply of options for writing terribly bad code in the worst ways possible. The only redeeming feature will be it will have nice uniform spacing.

    I would highly recommend doing what always works best which is to hire a Python developer with good GIT skills that can lay the majority of the foundation of the project and create a uniform set of standards of coding for the project and then bring the other developers on 3 at a time and perform constant code review. Focus heavily on test driven development and use a system like SCRUM for lifecycle management. If you want to teach old dogs new tricks, don't just throw them in the fire and tell them to figure it out. The programming paradigms are so drastically different between your old method and new that without some sort of leader with experience, it will turn out to be a disaster and jungle of crap code. I personal avoid Python projects not because the language is bad, but instead because they tend to be like this.

    You should of course know by now that if you are traditionally a LabView shop, you're going to sacrifice a massive number of really important features to save a buck. Python has great support too multi-threading but it's not an awesome environment for event driven programming like LabView is. You of course can accomplish all the same things, but even with the thousands of toolkits/libraries out there, you'll have to write the entire underlying architecture yourselves and you'll lose almost all visualization you've come to depend on.

    1. Re:OUCH!!! by Njovich · · Score: 3, Insightful

      The one thing I agree with is that Git is the obvious choice as it is the current standard. For the rest I guess you are fairly inexperienced. If you really believe it's easier to shoot (or nuke) yourself with Python than with C you are extremely wrong. Obviously you can write bad code in any language, but Python is no worse than most others.

      In a couple of hours most Git basics can be taught to any reasonable programmer. It can be worthwhile to make sure they set aside some time to read up on Git usage. Especially with a GUI it's not exactly rocket science (and any programmer worth their salt should have no problems with the CLI, some annoyances notwithstanding). Making your hiring decision for a Python programmer based on Git skill is a bit weird, as there are much more important factors to choose a programmer on. I have seen good and bad Git usage across all ages and skill levels, it mostly just depends on what exactly they worked on in recent years.

      As far as massively changed programming paradigms, unless you just time traveled from the 70's, that's BS.

      As for Scrum and Test Driven Development, you would need to know more about this project before you can make a decision like that. I don't see anything in this description that would give you enough information to advise on that.

    2. Re:OUCH!!! by jtayon · · Score: 0

      Even though I do like your comment, I am not agreeing.

      1) little technical point:

      hg is sometimes saner than git and has bridge to git. And their is the awesome "hg init" from joel spolsky http://hginit.com/

      2) on the idea I agree with

      For the rest of your comment, it reminds me of the hell of C++ written by former fortran coders or python written by former PHP devs....

      If you code in a language you have to think in this language.

      3) Where I slightly disagree

      Python is 49 core keywords and fast to learn... I guess if these are skilled data coders and this it is the core of the business of their company, it would cost lest to give them a hell of an advanded python formation tailored on their previous background....

      4) Where I strongly disagree

      4.1 technic still
      I do make event driven python for a living. I made my own framework based on zero queue message passing (stuff like pyzmq, nano msg), and circus and performance are good. And it works. As soon as my boss leave me time to work back on my free projects (so to say never to be soon) I can really prove that I can recode zabbix and a lot of bloatware around us in pure python without the need for STM or asynchio or a JIT in the core. Pay me a few weeks and I will show you python can kickass in asynchronuous pipelining and event based architecture. I will even show you the harm resulting at the nanoseconds level of non monotonic clock in python 2 by default.

      4.2 as a human

      I think this idea of throwing away coders because they are outdated is disgusting.

      Men and women deserve to be treated a little bit better than outdated mechanical tools.

      Tools costs less than acquiring knowledge. If these men and women are paid, it is because people are making benefits on knowledge that outside of their business might be useless.

      By specializing you might lose market value... Who needs the only guy telecommuting as a "data oriented labView specialist" in Paris (Texas)?
      On the other hand the more the worker specializes the more the company earn on its market.

      So asymetrically, what makes the increasing value of a worker for a company put the worker at more risks on the market when layed down. As a result, I thnik continuous formation ought to be a granted right for any workers (coders, journalists, lawyers, doctors, drivers). Why? You prefer a doctor that heal you with 1960 stuffs or 2015? A construction worker that ignores the update in regulations, security, technics? A public worker/lawyer/judge that is not updated on changes in law?...

      Plus we both know that Knowledge Management is not in database, it is in craftsmanship. If their is a transition to be made, (company investing in new tech because of limitations or opexes), their will be a continuity of knowledge that will have to ensured.

      But their is for the company an harm to trade skilled workers for knowledgeable workers. Business knowledge is harder to get than tools language.

      For the same NASA prefers to teach PhD to fly planes rather than learn pilots fundamental physics.

    3. Re:OUCH!!! by Anonymous Coward · · Score: 0

      Use GIT.

      I'm a fan of Git, but you should never take this advice from somebody who is that unfamiliar with Git that they think it's an acronym. They clearly haven't progressed past the "learning what the damn thing is called" stage and are woefully inexperienced with it.

    4. Re:OUCH!!! by Anonymous Coward · · Score: 0

      "SCRUM" stopped reading there.

    5. Re:OUCH!!! by Anonymous Coward · · Score: 0

      I wish you would get modded up a bit more as I think this is valuable feedback.

      One of the key challenges that this person will have is a team of C programmers who have no experience with version control. 20 years ago, that would be a little scary because you would wonder why these guys have not used version control before. These days I would be incredibly worried. Who doesn't use VCS these day? Have they been living in a cave? Or are they simply stubborn and arrogant.

      You can deal with the former, but the latter is going to cause all sorts of problems -- because the person is trying to convert these people from the thing they know (C) into using something that they don't (Python). Which VCS to use is a non-issue. Git, mercurial, SVN. It doesn't matter (I'd pick Git for the reasons the OP mentioned, but it will be fine either way).

      The comment about TDD is incredibly relevant too. People used to ANSI C and leaning on the compiler to catch their errors will have a very rough time with writing anything in Python of any complexity. TDD can potentially help a lot... but only if they are willing to do it. TDD *seems very, very slow* when you first start using it. C programmers who do not use VCS... um... I just can't imagine they will have the patience. And yet, I fear that without taking a different path they are in for a world of hurt.

      My advice for person asking the question (ha ha, I'm replying late as an AC... I suppose it will never be seen):

      - Try to *reduce* the size of the team/project. Possibly cut it down into 2 phases: one where you have 6-8 people and another where you bring on the rest of the team. This will allow you to introduce the changes at a manageable size and then use your early adopters as champions for the next phase.

      - Don't worry about technology so much. Lay out the choices in front of those 6-8 people and let them choose. None of the tools will be bad enough to sink your project and all will be about a bazillion times better than nothing.

      - Have one person who can float around the team and simply pair with others. This will probably be you. Do not take on any solo work at all. Instead make yourself 100% available for mentoring with tools and techniques. Impose yourself on those that do not seek you out for advice. It's a hard job, but you are almost certain to fail if you do not do it.

      - Pay particular attention to the people on the team who will inevitably *not* be happy about the direction things are going. Especially if you get saddled with 15 people, at least one will (in)advertantly sabotage the project. You can survive this if you are *really* on the ball, but if you delay at all it will sink you (and will cement your team to being VCS-less C programming for eternity).

      To be honest, from what little I've read about the project, I think the chances of success are incredibly slim. The question being asked (which VCS should I use) is exactly the wrong question to be asking and makes me think that the person is being incredibly naive. None of the difficult problems you have will be technical ones! You must reorient your thinking to accept the very formidable people oriented problems that you are about to face.

    6. Re:OUCH!!! by Anonymous Coward · · Score: 0

      The one thing I agree with is that Git is the obvious choice as it is the current standard. For the rest I guess you are fairly inexperienced. If you really believe it's easier to shoot (or nuke) yourself with Python than with C you are extremely wrong.

      Clearly a coder that's never seen bad Perl or VB. Thinks Python is some magic progression. But I've seen bad code in every language. If not for NDAs I could show you some horrendous stuff. I've also seen elegant brilliant code.

    7. Re:OUCH!!! by locofungus · · Score: 1

      From the summary.

      The code will be mostly geared towards data acquisition and data analysis leading to reports.

      If there's even a small chance that very large data files might be checked in then you really need to be prepared for that before you start using git.

      You must have commit hooks to prevent this happening or you must have the git-fu ability to (safely) modify the repo to delete them and know how to get them removed from everybody else's history too.

      Once something makes it into git it makes it to everybody's system.

      Personally, I think it was a tragedy that Monotone was "too slow" and so Linus decided to create git instead. Git works very well in some use cases and has to be used with extreme care and detailed understanding in others.

      --
      God said, "div D = rho, div B = 0, curl E = -@B/@t, curl H = J + @D/@t," and there was light.
    8. Re:OUCH!!! by david_thornley · · Score: 1

      SVN is pretty bad at unwanted commits also. There's been plans to implement "svn obliterate" for about as long as svn exists (the issue has been open since 2001, and I think it's safe to say it's not going to be implemented any time soon. The way they recommend is to dump the repository, run the results through a filter, and load it again.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  33. git by Greyfox · · Score: 1
    Git, with jenkins integration and sensible branching policy. When jenkins sees a commit to the current development branch, or nightly, it can kick off your testing for you and tell you if anyone broke the build. Have a development branch where most churn takes place, an integration branch that you can release the development branch to when you're gearing up for a release and the features go to integration testing and a current release branch that's updated with the integration-tested code and released. Once your testers have OKed the integration build, it can be merged to your releases branch and executable that's going out the door can be built. Tag your releases with sensible versions once that happens successfully, so that you can always build your current release or any past release by checking out a tag and rebuilding it. You can use an update hook to lock your release branch so that no commits can happen to it outside release windows.

    Really about 1/4th of what you need is a VCS, and 3/4s of what you need is a sensible, documented and enforced process that requires unit tests and reproducible builds. I've been in the industry for 25 years now and have only seen this a couple of times. Sun's was very strict and required an 11 page form to be filled out so that the version control branch you were updating to could be unlocked. You had to include what feature or bug the update addressed, a description of what your code did, a sign off from a code review board and the diffs for the commit. Once you checked it all in, an automated system would pick up the changes, build and test them and send out an E-Mail blaming you if the build broke. Rogue Wave software also had an automated build and test system which would do nightly builds of their libraries over all the systems they supported (Which was damn close to all the systems that were ever invented.)

    At most other places, the build process was an afterthought that was thrown together by the developers on the team. This could be anything from some hastily-assembled makefiles to home-rolled shell scripts. Java projects would typically use ant or maven. Or occasionally ant AND maven. I've encountered one or two java projects that used make. I've also encountered one or two projects where they couldn't guarantee or had forgotten how to do a reproducible build. These ranged from "Oh just run make 3 or 4 times in the top level until all the build errors from missing libraries go away" to "Steve was running a jenkins server on his personal workstation and it got shut down when he was laid off. Can you fix that for us while you're at it?" If any of that sounds like where you're at, the first step to recovery is admitting you have a problem.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  34. Multiple tools for multiple problems by Anonymous Coward · · Score: 0

    The more I try to pick apart what you're trying to do, the more convinced I am that you should have multiple tools for the different problems you're trying to solve. That being said, if you want to do everything in one tool, I honestly think TFS is your best solution.

    _PLEASE_ don't use TFS.

    As far as distributed vs centralized source control goes, I would recommend using distributed, since it means you won't pick up any hard-to-break thought patterns from centralized source control. DVCS is a little bit more complicated, but it does merging so much better that I believe it's always worth it. Plus, to paraphrase Linus, you get backups by sending your data across the network! The downside is that neither git nor mercurial does well with large binary (rather than text) files out of the box.

    Mercurial has better windows clients, a more beginner friendly interface, and is written in python, so if you need something fancy it would be easy to write an extension. Git is more commonly used (so you'd be developing skills more likely to benefit you later), is more powerful, and is much more command line focused. As far as local hosting goes, http://www.jeremyskinner.co.uk/mercurial-on-iis7/ has a slightly old but still fairly accurate list of what to do to set up mercurial on IIS. Presumably your IT department will be able to configure IIS to use AD credentials.

    As far as digital signatures go, both git and mercurial support signing commits with GPG. Git has this functionality out of the box in version 1.7.9+, and mercurial supports both the GpgExtension or the CommitsigsExtension.

    For compiling code, running tests, and (possibly) running reports, you really want a Continuous Integration server. Based on your experience level, I'd recommend TeamCity. It has an impressive number of integrations, and you can administer all of the configuration in an easy web UI. I would expect the free tier (3 agents to do the work, up to 20 configurations) to work for you. If Open Source is a big deal, Jenkins is the CI of choice, but it requires significantly more expertise in continuous integration to get up and running.

    Finally, while I'm not sure how you're planning on getting data, I'd recommend against including data and reports in the same repository as your source code. While I'm not sure what they'll be, I'm sure it will cause you headaches because of the amount of data you'll be adding to source control. I haven't ever had to deal with storing versions of non-text data before, so I don't have a good solution for that, but I've seen what happens when too many things get stuck in source control, and it isn't pretty.

  35. They all suck by Murdoch5 · · Score: 1

    Just go with GIT. The trust is no version control or SCM software is very good, they all suck in a lot of ways and have very limited strengths. One to totally stay from is Preforce, it's unstable, unsafe and you run a serious chance of loosing your code into a corrupted mess of memory errors.

    1. Re:They all suck by grahamwest · · Score: 1

      I've worked on game projects over the last fifteen years which used Perforce for millions of files and terabytes of data, and to my knowledge we never once had anything get corrupted.

      Can you describe some of the times your stuff got broken by Perforce?

      --
      Graham
    2. Re:They all suck by Murdoch5 · · Score: 1

      In one company we had Preforce storing about 20 TB's of information. In a course of three months we had about 100 MB of that data get corrupted to the point the entire repo locked up. We then tried to delete the data but thanks to the corruption, which was caused by Preforce, we couldn't. We ended up on a call with Preforce and it took them weeks to figure out how to solve this problem.

      About a year later I started at Blackberry, who were using Preforce. I updated development code into the main repo and BANG! Preforce corrupted the data, except that it didn't know it did, then Maven took the code and moved it out to development test beds which all crashed, costing Blackberry a couple MILLION DOLLARS!!!!

      Unrelated to that, I then took another job at an engineering company. They didn't use any SCM or Version Control System, so I grabbed Preforce to see if they fixed the massive issues. I uploaded a copy of the code to the repo and guess what! BANG corrupted.

      Preforce is NOT a safe environment, I've seen it corrupt data, cause damage, cause a loss of money, corrupt repo's, crash and just screw up servers. If it were a one off issue, that would be fine, but I've had many, many big issues with it.

    3. Re:They all suck by Krishnoid · · Score: 1

      Well that's your problem -- you should have been using Perforce.

    4. Re:They all suck by Murdoch5 · · Score: 1

      We were using Preforce, that was the problem. Now each of those companies use GIT, which works, it's not the greatest thing since sliced bread, but it's works the best out of all of them.

    5. Re:They all suck by Anonymous Coward · · Score: 0

      The joke was ... oh, forget it.
      Just spell it right.

    6. Re:They all suck by Anonymous Coward · · Score: 0

      We were using Preforce, that was the problem. Now each of those companies use GIT, which works, it's not the greatest thing since sliced bread, but it's works the best out of all of them.

      Whoosh....Hear that sound? That's the joke going over your head.

      You are calling it PREforce. Corrcect name is PERforce. Parent was making a joke that you shouldn't have used an off brand clone of the product.

    7. Re:They all suck by Anonymous Coward · · Score: 0

      whoosh

      If you used Perforce the way you spell it no wonder you had issues.

      I've used many source control tools over the years, started with CVS, then Subversion (pre 1.0), then Perforce and back to Subversion.
      Google is still using Perforce, albeit an in house distributed re-implementation of it called Piper.

      Personally I would recommend Subversion if you want something simple for a small team. Merge tracking was missing in the original version but it works since 1.5, though last time I tried TortoiseSVN it was not compatible with the merge tracking features unfortunately.

      For those who care Helix (new name for Perforce) is free for 20 users (and up to 1000 files I believe?). After that it is a bit pricey and that price is getting less and less justifiable with solutions such as BitBucket (aka Stash) from Atlasssian that are Git based but make Git be acceptable for enterprise users.

    8. Re:They all suck by sodul · · Score: 1

      I second that, Perforce has been rock solid in my experience and their technical support has always been very good.

    9. Re:They all suck by Anonymous Coward · · Score: 0

      Interesting, we've used Perforce for years across many orgs within a Fortune 100 company, we've never had any issues with it corrupting data.

  36. Whatever you use by g01d4 · · Score: 1

    Be precise and thorough about your check-in process. Each developer's modifications should pass tests under varying sets of real world inputs. I develop Python code for our observatories using ASCOM hardware simulators for the DAQ process. Convenient, but not the same as the real thing.

  37. Ok, others seem to have missed this by Anonymous Coward · · Score: 2, Informative

    Knowing what industry you're working in helps to understand what you're trying to do and what you actually need. Others have seemingly missed this, but you did mention FDA compliance at the end of your extended list of requirements. So, I'm guessing you're a life sciences, pharma or drug discovery company working with microarrays and other data acquisition hardware where the data WAS passed to LabView and then processed there or in one of the Java, C, or other apps you mentioned that were developed in-house. The processed data is then documented with reports.

    You actually have three problems and not one. You have a code versioning issue that requires version control for better debugging and maintenance going forward, a data cataloging problem and a document management problem. I would imagine, that some groups either have or will have visualization and graphics data to manage as well, but we'll leave that out for now.

    You mention that the developers have no background using an off-the-shelf version control system. This, in the modern development era, is ... scary! As was mentioned above in several places, a simple check-in, check-out system would probably be a good place to start with the plan to migrate to something more sophisticated in a three to four year time window. You know these developers are going to want more features down the road, but aren't ready for the full enchilada on day one as that would be a lot messier to deal with for a longer period of time than having a migration plan and starting them off slowly. I would recommend a CVS or SVN variant for the initial launch and then have a migration plan to something like Git. This gives you time to get the initial setup running and the developers have a flatter on-ramp to usage while you (and IT) come up to speed on Git in the background before a planned deployment a couple years down the road. In the end, a plan like this will save you time and pain in the long run, oh, and management will save $$$ in the process.

    Data cataloging may not be that great an issue, but it does require some thought. Not sure how data is being cataloged now, but there are a few commercial products that will help with this process. Some are desktop only and then there are those tied to commercial database systems like Oracle. You'd really have to do some research based on your actual needs to find one that works best for the researchers. Can't touch this topic sight unseen.

    Then, there's the document management problem. Being a Windows shop there are Microsoft options for this, as well as commercial and open source tools. Again, not being familiar with your internal workflow and budgets I can't be more specific than that.

    Trying to do everything with a version control system is just foolish. You're only going to create more headaches for yourself, the IT team and the researchers/developers than will be mitigated by a single system trying to manage different verticals within a workflow. DON'T DO IT!!! Use the Keep It Simple, Stupid rule along with the right-tool for the right job approach. In the end, you, your IT team and your users will be happier and more productive, that will make management very happy and cost a lot less in the long run.

    Cheers and good luck.

  38. Bitbucket Server $10/yr by Anonymous Coward · · Score: 0

    For $10, you can BUY a 10 seat licensed, self-installed Bitbucket Server that provides everything github does with full admin control, LDAP integration, SSH, Pull Requests, etc. And its all git underneath, baby.

    Head over to Atlassian, you won't regret it.

    1. Re:Bitbucket Server $10/yr by Anonymous Coward · · Score: 0

      And your Mac and Windows users can use SourceTree, the free GUI for git that Atlassian makes too.

  39. Fossil SCM? by Anonymous Coward · · Score: 0

    There's also the modest Fossil SCM by SQLite author D. Richard Hipp. ://en.wikipedia.org/wiki/Fossil_(software)

    For such a small team, it might be do the job.

  40. Git by Anonymous Coward · · Score: 0

    Use it simply at first and you'll have no issues. Make 2 branches (dev and master) so you can make sure your release branch doesn't get screwed up by an inexperienced dev. I've had to detangle a few of these in my time and 30 seconds of somoen admitting they didn't know how to do something would have saved me 2 hours of work in every occasion.

    Git is one of few open source projects that uses a pun that is apt and isn't awful - even VB developers can use Git successfully.

  41. Go with a commercial product if you can by PerlPunk · · Score: 0

    I have been in the situation where we wanted to introduce versioning to newer or more junior programmers. What didn't work well was the open source solution. We used Subversion; it was quirky and unintuitive for them. (Of course, someone on this forum is going to hotly contest that Subversion is anything but intuitive and easy to use. Well, to that, you probably aren't representative of most programmers, and most likely, neither are your friends, if you have any.) And my experience is that most open source solutions are difficult to use--especially for novices--because they are in fact quirky or require a high level of expertise to use right, or both.

    But when we switched to a commercial vendor (in our case, CA's Harvest), the team picked up the versioning system much faster than they did with Subversion. Harvest was more intuitive for them and a LOT less quirks and bugs to deal with. That is, things more often than not worked as they were expected to in Harvest than in Subversion.

    So my advice would be to look at some commercial vendor packages, pay them the bucks they are asking for, and enjoy the professional support they give you, the training, and quicker turn-around time for your project deliverables.

  42. The catering to newbies anti-pattern by Anonymous Coward · · Score: 0

    Don't select $foo for inexperienced, new users, etc. unless there's a valid pedagogical reason for doing so. Putting people in simulators on their first day of flight school is valid.

    Starting a project with a VCS based on the fact that people are inexperienced is probably not valid. It seems like the learning curves will be roughly similar for all of them.

  43. only git - try gitlab by Anonymous Coward · · Score: 0

    I know both svn and git for many years and used them in dozens of prijects and git is clearly the better choice.

    I would suggest 1-2 hours training by some git guru first.

    But once I learned a bit of git I never wanted to use svn again.

    For easier start try gitlab.

  44. SVN/Trac for a small team by vovin · · Score: 1

    Either SVN/Trac for a small team and a moderate size code base.
    SVN and Trac for bug handling works really well and Subversion is pretty easy to pickup if you don't already have any version control experience.

    Otherwise go with Git/GitLab if your people prefer it. I find working with git to be more arcane but then I kind grew up on CVS/SVN.
    If you like the distributed model but have issues with Git then Mercurial is you best next option.

    I would strongly advise against:
      Perforce, ClearCase, Team Foundation Server, AccuRev on cost alone.
      Their proprietary server based setups just make them horribly less functional than their open counterparts.

    Rolling out CVS in the age of SVN is just silly. RCS and PVCS is just that much more ludicrous.

    1. Re:SVN/Trac for a small team by Anonymous Coward · · Score: 0

      I can only speak towards Perforce out of the commercial products you mention, but it's wildly more functional than its open counterparts.

      It's also free for up to 20 people, which would make it free for the described use case (10-15).

  45. Mercurial is a good starting place by Xtifr · · Score: 2

    Hear me out. I know git is more popular—I prefer it myself—but mercurial has a much simpler conceptual model, is easier to learn, and offers nearly all of the benefits of git.

    With git you really need to learn about the difference between "add" and "commit" and how the staging area works. That's a very useful feature, but it also complicates the teaching, and for basic day-to-day stuff, doesn't offer huge benefits. And git just has _so_ many commands. They're powerful, but intimidating to a newbie.

    Mercurial, on the other hand, has most of the power of git, but it's a lot more straightforward for the most part. The lack of a fast-forward capability means you end up with a lot more merge commits in your history, but that's not a huge deal. At least not at first. And its fairly easy to migrate from mercurial to git later, once your team is more comfortable with the way the system works. So it's not like you're making a lifetime commitment.

    Mercurial is less powerful than git overall, but it's a great introduction to the whole model of DVCS. And for day-to-day stuff, mercurial is definitely more than adequate.

    Both git and mercurial are vastly superior to svn, especially for performance. Having to make network round trips for all but the most basic examinations of history is a serious disadvantage of svn. If you're just testing a script, for example, a bibisect can be many orders of magnitude faster with git or mercurial. And you can do it even if you're sitting in a hotel room and don't want to pay the outrageous wifi fees. You don't need a network at all. Using SVN in this day and age is simply inexcusable. There are absolutely no benefits—only disadvantages.

    If you just want to get up and running with a vcs that will offer great benefits with minimal floundering while people learn the ins and outs of the system, mercurial is a pretty darn good place to start. If you have a little more time to spare getting everyone up to speed, though, it might be just as well to leap straight to git. *shrug*

    1. Re:Mercurial is a good starting place by Anonymous Coward · · Score: 0

      Having used Mercurial and Git quite a lot, I would agree Mercurial is the easier of the two to learn. With any of them, make sure your checkin/merge workflow is well documented.
      Regarding your statement that "Mercurial is less powerful than git overall", that may be true "out of the box" but Mercurial can be extended in ways that Git does not allow - read up on Facebook's use of Mercurial for an example.

    2. Re:Mercurial is a good starting place by Anonymous Coward · · Score: 0

      The lack of a fast-forward capability means you end up with a lot more merge commits in your history

      Just do a pull with rebase in the first place.

  46. Who is the project lead? by jjn1056 · · Score: 1

    "I have been programming in Python for quite a while, but so far I have not used a version control system."

    Don't mean to be a pain but if you have no experience with versioning, not sure why you seem to be the one making critical choices (like dictating the language the team uses or what version control makes sense...)

    Short answer is just use git. Its dominate. Its got some weird alien brains but there's going to be plenty of help and good examples. I find smart people manage and also its sufficiently well designed that if someone really screws up you can usually fix stuff. Also your existing programmers will learn a skill they find valuable when they start applying for jobs somewhere else (usually the first thing people do when they are told to change languages)

    Best of luck with the company decision to force all your existing programmers to flush their current skills in favor of some other language ;)

    --
    Peace, or Not?
  47. Don't tie two things together by Anonymous Coward · · Score: 0

    Don't discount cultural inertia.
    Moving away from labview will attract criticism (whether it be to python or any other language)
    Adopting revision control will attract criticism (doing it at all, and the solution chosen specifically)

    You've tied these two projects together, so unless everything works brilliantly any critic of any change
    will be able to use any shortcomings to derail BOTH projects.

    Pick one fight at a time else the group that like labview will ally with the group that dislike whatever
    VCS you pick and defeat you.

  48. Visual Source Safe by Anonymous Coward · · Score: 0

    Visual source safe is an excellent version control system for an inexperienced team.

  49. Team Foundation Server by Anonymous Coward · · Score: 0

    A Microsoft product. Not expensive to deploy. And, it's actually a very good product.

  50. Git manual by Anonymous Coward · · Score: 2

    B*llshit.

    Git is difficult to grasp because
    * it makes simple things complicated
    * you need to read an entire book before using it
    * and its manual reads like this: http://git-man-page-generator.lokaltog.net/

    1. Re:Git manual by X0563511 · · Score: 1

      git pull [URL]
      [do stuff]
      git add [modified files/dirs] (might not be necessary, probably mixing up git and hg)
      git commit -m "message"
      git push

      WOW, That was so incredibly complicated! Seriously, I'm not seeing a difference (to the user) for basic use between svn and git. I'm speaking from the perspective of a user who has a few local repos for random things he's created.

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    2. Re: Git manual by Anonymous Coward · · Score: 1

      And that completely ignores merge conflict, which will bite them at some point. Also, if you're going to avoid branching and tagging, then there's no reason to pick git over svn.

    3. Re:Git manual by jrumney · · Score: 1

      git add [modified files/dirs] (might not be necessary, probably mixing up git and hg)

      No you're not mixing them up, but git commit supports the -a option to combine the two steps if you want all the modified files included in the checkin. If you're using TortoiseGit, this is all transparent, the checkin dialog has tickboxes for the files you want to include, and all modified files are checked by default.

    4. Re: Git manual by Jane_Dozey · · Score: 1

      Merge conflict resolution can be taught in a very small amount of time. It's not very complicated at all. If you're training a team who are new to version control, this will not take long and will avoid the additional training needed should the team crossover to git later. I'd stay a million miles away from training a team on SVN instead of git if I had an opportunity like this.

      Also, please note, I'm not simply pro-git. If you really don't want to use git, use mercurial. I've used a fair few different version control tools in my professional career, and I'm a little tired of developers having to re-train and move away from svn when they could have started with the tool they have migrated to in the first place.

      --
      Silly rabbit
    5. Re:Git manual by Anonymous Coward · · Score: 0

      Add remotes, create some branches and resolve conflicts WITHOUT resetting in any way your repo in a "collaborative environment" and you just gonna start crying for Mercural, SVN and even CVS.

      For basic version control Git its easy but for environments with many people working on the same project it became a tool to deal with it and GUI's just dont help you that much so the answer to every git problem seems backup your current change, hard reset repo, pull and add.

    6. Re:Git manual by Anonymous Coward · · Score: 0

      git pull [URL]
      [do stuff]
      git add [modified files/dirs] (might not be necessary, probably mixing up git and hg)
      git commit -m "message"
      git push

      WOW, That was so incredibly complicated! Seriously, I'm not seeing a difference (to the user) for basic use between svn and git. I'm speaking from the perspective of a user who has a few local repos for random things he's created.

      And then your push fails. Now what? push --force of pull? And if you pull, you've got an merge (you should have done pull -rebase or fetch/merge instead, you idiot). Now what to do, if I don't want merge for simple unrelated changes? Well, that's trivial:

      $ git log --graph --decorate --abbrev-commit --pretty=oneline
      * c261bad (HEAD, master) Merge branch 'master' of [ssh url]
      |\
      | * 523bacb (origin/master, origin/HEAD) add multiprocessing example
      * | 260e129 added to force merge
      |/
      * 171ce6f ignore *.log files

      $ git rev-parse HEAD^
      260e1297900b903404c32f3706b0e3139c043ce0

      $ git reset --hard HEAD^
      HEAD is now at 260e129 added to force merge

      $ git rebase origin
      First, rewinding head to replay your work on top of it...
      Applying: added to force merge

      $ git log --graph --decorate --abbrev-commit --pretty=oneline
      * 4a0b2e2 (HEAD, master) added to force merge
      * 523bacb (origin/master, origin/HEAD) add multiprocessing example
      * 171ce6f ignore *.log files

      That's the beauty and simplicity of git! I'm still not sure, thought, that the above code will work correctly, or:
      a) lose my local changes.
      b) break my local repository,
      c) break repository I'll be pushing to later,
      d) break other's peoples' repositories (like push --force can).

      And we are at simple non-conflicting change. I just did pull instead of pull -rebase. And now to get back to where I want to be, I need to use commands that can kill a puppy.

      Now please go ahead, and explain clearly to novice user how to handle conflicting merge in git, with all edge cases.

      I've used cvs and then svn for dozen of years. Now I use git, and I'm still amazed, how some simple things can get so complicated in git, and how easily you can make total mess in your repository.

  51. The goal is modern, supported, popular tools? by alannon · · Score: 1

    If you're switching from LabView to Python because it's an open, popular, well-supported language that's easy to find experienced programmers for, I can't recommend learning anything other than git for version control. SVN works, yes, and lots of people have previous experience with it, yes, but git is ubiquitous and there are lots of excellent tutorials that should have your team up and running on it in less than an hour. My biggest difficulty in moving from SVN to git was not git, but rather un-learning SVN and the assumptions and mindset needed to use it effectively.
    There's the added bonus of finding extremely inexpensive ($25/month) git hosting (GitHub) for private teams of unlimited size.

  52. subversion by drolli · · Score: 1

    For my personal use i am a fan of git, but if you have a team with the possibility for a constant server, and all team members have a decent network connection to it (and that is a big if), go for subversion server and buy supported client tools for the applications where tortoiseSVN does not seem fit.

    My reasoning (favoring subversion over git is as follows):
    * in a beginner team, the reduced choices and the standard layout of a project in subversion are an advantage
    * Migrating to git can happen at any time when you decide that these limits are not ok for you (typically they are)
    * Subversion tools are typically better integrated on all platforms
    * Intregration in eclipse is better

    But seriously, get a consultant who analyzes your actual requirements and sets up the system in the most productive way for you (believe me, the $1000 which this may cost are well invested money, if you avoid stupidly restricted or deformed workflows in your team)

  53. IPython Notebook by steveha · · Score: 1

    I don't have a clear picture of what your organization will be doing, but your comment about "managing that data (=measurements + reports)" made me wonder if you will want to use the IPython notebook.

    http://ipython.org/notebook.html

    When people work to analyze measurements (make plots, etc. and make decisions) and then write new code, if they do so step by step in an IPython Notebook, and then other scientists can peer-review the notebooks, this might be even more useful to you than version control. It would give you a history of how the analysis was done and why the reports were made the way they were.

    In my job, I do some analysis and work in databases, and I seriously want to start using IPython Notebook as my SQL client, and save my notebooks for later review. It would document the queries I ran and the results I got, so later I could find the queries again to re-run them, and see how they worked out before re-running them.

    https://github.com/catherinedevlin/ipython-sql

    --
    lf(1): it's like ls(1) but sorts filenames by extension, tersely
    1. Re:IPython Notebook by mvdw · · Score: 1

      This. Exactly the same thing jumped out at me - if you're not using ipython notebooks for data analysis, you're (probably) not doing it right.

  54. EasyMercurial by Immerman · · Score: 3, Informative

    I'll second the recommendation of Mercurial. There's also EasyMercurial, a nice little dead-simple GUI front end that lets you do a handful of the most common things (checkpoints, history overview, version comparisons, reversions, branching and merges) without having to learn much about the details. Very nice for beginners to get their feet wet with version control systems, and if/when they need something more powerful they can always use the command-line tools directly, or migrate to a more feature-rich GUI. But honestly, for a bunch of people without prior experience even the heavily restricted feature set will be a huge step forward.

    There's probably similar "beginner" GUIs available for most of the major VCSes, but EasyMercurial is the only one I can vouch for. I would also lean towards recommending a distributed VCS that offers easy branching and merging for a bunch of VCS beginners - they seem to offer far less conceptual/procedural overhead to the "lone wolf" work flow, and thus are more likely to actually get used effectively.

    --
    --- Most topics have many sides worth arguing, allow me to take one opposite you.
  55. Mercurial And Don't Look Back by Anonymous Coward · · Score: 0

    You may be tempted to use a centralized one like SVN, and it although it will be easy to use in the short term, down the road you will usually want to switch to decentralized.

    Mercurial and git are similar enough that learning one allows you to use the other, so I would just say pick one. There are some awesome GUI tools as well -- TortoiseHg should suit your team's needs.

  56. Version Control as a Service: VisualStudio.com? by clay_buster · · Score: 1

    Pick something hosted that you don't have to manage. There are only a couple well supported systems.

    I'm going to lose credibility with my peeps but....

    VisualStudio.com is probably the easiest to spin up. We use it when we have to do a multi-company PoC or joint project. It comes with task management, scrum boards and other bits. You can set up your repositories as either TFS or as Git. They treat GIT as a first class citizen.

    GIT is an expert's tool. There are several hosted repositories, GITHub , AWS Code Commit, BitBucket, the previously mentioned VisualStudio.com, etc..

  57. Enovia Synchronicity by asvravi · · Score: 1

    The DesignSync and ProjecySync components of Dassault Systems Enovia Synchronicity will do almost all of what you ask, including versioning of text/binary files, windows client software, web based interface, integration with its bug tracking system or its customizable process flows such as reviews/approvals, customizable data sets, triggers, scripts, email alerts etc and excellent documentation to boot. Probably the only piece of software I have seen that does it all. Just a happy user for the last 10 years.
    http://www.3ds.com/products-se...

  58. Measurement Data by Anonymous Coward · · Score: 0

    ... under version management? Do you re-do measurements, and then the new version replaces the old? It doesn't seem to make too much sense. Also, separation of code and data?

  59. Go for Subversion by Anonymous Coward · · Score: 0

    Subversion is pretty easy for everyone to understand. The single-rev-number defining a release is a lot better than the CVS tagging
    system. We moved from CVS to Subversion a couple of years back and have been very happy with the decision.

    This is an old-school company where everyone comes to work. The servers are in the closet.

  60. Collab.net SVN by Anonymous Coward · · Score: 0

    Use Collab.net SVN. TortoiseSVN if you want an Explorer builtin client. Otherwise I'm sure, hope, your development IDE has some sort of SVN support.

  61. you will want "clone" capability, use Git over SVN by CaptainPhoton · · Score: 1

    First off, if you are doing LabVIEW then avoid the llb files and commit each VI to the repo individually. That way you can track which SubVI changed on an individual basis. Also, llbs will blow up the size of the repo as they are usually huge when compared to the size of the SubVI that you are actually changing. Having the individual VI's in the repo allows the commits to be small.

    Secondly, SVN is great when everyone is in the same building, but if you are working remotely, then "git clone" can be critical for your offline work. You can "git clone" while you are on site, then future pulls are not so terrible when you are on a slow VPN. If you have no connection to your corporate network, you can still track your stuff. We're in a distributed world, and you will suffer without the distributed capability that Git offers.

    I am finding that 100% of my clients starting new projects are using Git. SVN is only being used by people who set up their repos in the early 2000's.

    SourceSafe is an abomination. We discovered that when we added PDFs, they came back out corrupted. We lost a bunch of schematics that way.

    There's a learning curve, but skip the SVN and go for Git. Don't think about VSS.

    Cheers!

  62. git by prefec2 · · Score: 1

    Use git for your server stuff you can use gitlab which can be installed locally. I do not know if it is easy to install on Windows, however, it is not important what runs on the server from a user's perspective. It works well on Linux.

  63. What about AWS Code Commit? by Anonymous Coward · · Score: 0

    Seems to promise the benefits of Git but not having to manage the implementation . Not necessarily all that's wanted in the submitters question, but thought I'd ask since I'm thinking of using it.

  64. Consider git or Perforce by mattyj · · Score: 1

    I've been a configuration manager and tools administrator for two decades now so hopefully you'll trust my judgement.

    First, don't use svn or CVS. They're antiquated. That would be like walking around with an iPhone 1 right now in 2015. Actually, worse than that. It would be like walking around with a Blackberry. CVS and svn are previous generation tools, they don't hold up to modern code needs nor do they scale at all. Just say no to svn and CVS (but especially CVS.)

    Git is modern, it works, it's reliable, it's used by everyone, is supported by just about every other tool that needs a version control hook, and you should consider it first if it fits your needs. It's distributed but it doesn't have to be used that way. Pair it up with GitLab and you have a lot more control (or more accurately, your users have more control, and you can enjoy less admin overhead) over what people can do with the code, and who can access what. It has lightweight bug tracking and pull/merge requests. Your inexperienced (which I assume is a euphemism for 'recent college grads') developers don't know anything, so you would be doing them a favor by teaching them a tool that people actually use instead of saddling them with 15 year-old knowledge. In its basic form, git isn't any more 'difficult' than svn or cvs. I personally would put up a very strong argument that you would be doing your developers actual harm in using an outdated version control tool. Mercurial falls into this category, too.

    That being said, my main quibble with git is that it doesn't scale very well. I'm talking about the overall size or your stored code history. If you plan on submitting a lot of binaries, and keeping history of them, git will break down for you after a while without the help of third-party tools or clever 'shallow' cloning, etc. If it's just code, it all compresses well and it'll be a long time before you outgrow it (if ever), but there are ways to make git unbearable by putting lots of binary content in it.

    Full disclosure, I'm a Perforce admin professionally. I don't work for the company, I'm just a cheerleader. If you're keeping lots of binary data in your version control tool, Perforce is hard to beat. I won't go into detail about it, but suffice to say it scales very, very large, with little to no performance degradation. The current server I maintain (several of them replicated, actually) have over 2 million changes on it with data that is approaching 14 TB. Perforce chews through that like it's nothing.

    Tying it all together, Perforce has a tool called GitFusion that acts as a layer between Perforce and git clients. This is especially useful when you have a business that stores large binary files but not everyone needs access to them. Your git users can use git for their smaller repos, your documentation folks can use Perforce for their big docs (or images, or iso's or ROMs or whatever), and everyone's happy. And all your assets are backed by Perforce, regardless of whether they choose to use git or Perforce as a client.

    Perforce also has a product that's based on GitLab with a Perforce storage engine.

    Under certain circumstances (up to 20 users) Perforce is free, so it should at least be on your short list of tools to evaluate.

    So in summary, if you're mostly going to be storing code with not a lot of big binaries and their history, go with git. If you think you'll have heavier storage needs, take a look at Perforce+git.

    Lastly, if I ever worked somewhere that was adamant about supporting only one platform (even if it was Linux or Solaris), I'd quit immediately. This Windows mandate is ridiculous and points to a pretty amateur IT team. Some of the things you have in your requirements sound fishy to me and I wonder if the organization is forward-thinking enough to keep the place afloat. Linux, Windows, Solaris, BSD, they all have their strengths and saddling someone with a mandate on the back-end platform is, to be blunt, asinine. If I didn't know any better, I'd think your marketing team calls the shots with IT. Ungh.

  65. Just pick one by 91degrees · · Score: 1

    I use git at work. It does the job. At home I use subversion because I understand it better, and like the tools.

    Point is, both allow you to make changes, undo changes, merge with each other without worrying too much about breaking stuff. Pick one and stop worrying about it.The project will not succeed or fail based on the VCS.

  66. Learn motherfucking version control ! by Anonymous Coward · · Score: 0

    Use git or mercurial (seriously though, use git) You can even run gitlab community edition in a linux VM on your windows server. It's easy to setup and manage. And you have code review if you want it, and a wiki and all sorts of really GREAT STUFF THAT YOU SHOULD LEARN.

      It is hard ? No, really it isn't. Learn. train. It takes 2 hours and a good tutorial (and there are many very good interactive tutorials on the web) to be able to use git efficiently. and it is WORTH it. a million times.

      Working on a software project with a team of 15 people who know nothing about version control is SUICIDE ! You will be in a world of pain for the rest of the project.

  67. Re:Git, obviously, but there's a way to make it ea by Anonymous Coward · · Score: 0

    FYI, gitk does almost everything that sourcetree does, and it's part of the official git source tree.

    p.s. Caution: There's a serious bug in gitk that makes gitk almost completely useless for any patch containing angle brackets (apparently nobody else that uses gitk has ever viewed patches containing greater-than or less-than, C++, or XML, so I might actually be the only person on earth that actually uses gitk). Anyway, here's the 2 line super hack I've been using to eliminate the bug on my local machine:

    $ git diff --no-index /usr/bin/gitk{.broken,}
    diff --git a/usr/bin/gitk.broken b/usr/bin/gitk
    index 90764e8..abbfe8a 100755
    --- a/usr/bin/gitk.broken
    +++ b/usr/bin/gitk
    @@ -8074,11 +8074,11 @@ proc parseblobdiffline {ids line} {
            } else {
                $ctext insert end "$line\n" filesep
            }
    - } elseif {![string compare -length 3 " >" $line]} {
    + } elseif {0 && ![string compare -length 3 " >" $line]} {
            set $currdiffsubmod ""
            set line [encoding convertfrom $diffencoding $line]
            $ctext insert end "$line\n" dresult
    - } elseif {![string compare -length 3 " <" $line]} {
    + } elseif {0 && ![string compare -length 3 " <" $line]} {
            set $currdiffsubmod ""
            set line [encoding convertfrom $diffencoding $line]
            $ctext insert end "$line\n" d0

  68. Hire an experienced team. by Anonymous Coward · · Score: 0

    That way whatever stupid decision you make won't really matter.

  69. If you decide to go with git, checkout Gitlab by Anonymous Coward · · Score: 0

    We went with git in our shop of inexperienced VCS users precisely because it was the market leader. People can find a ton resources on how to use git, and it seems like everyone and their brother offers git integration into their app. Wed the look of Github and Sourcetree but were not willing to pay for it, so instead we went with Gitlab - basically it's an open source Github clone.

    https://about.gitlab.com/

  70. Of Course, There is Only One Choice... by Anonymous Coward · · Score: 0

    Visual SourceSafe.

    If you have a Mac, then use Voodoo. :-*

  71. git by Anonymous Coward · · Score: 0

    git for everything.

  72. TFS does support GIT by clay_buster · · Score: 1

    Sign up for a free repo at VisualStudio.com. You can set up your project as GIT or as TFS.

    The Microsoft TFS team has been upgrading their GIT repo to have feature parity with native TFS.

  73. Perforce is nice. by clay_buster · · Score: 1

    I worked at a place with millions of LoC in Perforce. It was a nice system.

  74. My suggestion. by westcountyboy · · Score: 1

    I worked in SW development so this is something I actually know about. You probably know CM tools have the same religious attachment that editors and operating systems do. The level of people's advocacy highly amplifies the merits of any particular tool. First get the team together and canvass for opinions. Out of a dozen or so staff it is possible there is somebody who wants some CM duties and can do it. If the team is stuck with a choice they think is poor, the life of the project will be spent complaining about this choice. If anybody rants and raves and can give no better reason why they don't want a specific tool than "it sucks" they are a candidate for career change. It's not a group decision but the opinion of the group must be considered. Lastly whatever you choose (subversion is great) it is more important to use the tool well. Find someone on the team who wants to be an expert on the tool and has the skills to do so. Yes, there are people who want to do this. Given your team size, it is about a half-time job or a little less. Develop a plan for using the tools that fits your practice and don't count on vendor support for anything.

  75. Strongly consider using GIT by Anonymous Coward · · Score: 0

    Here is a helpful, free book that describes git: https://git-scm.com/book/en/v2.

    In the recent past I have used SVN, mercurial, perforce and git. All of them will work for a project like yours but I prefer git for the following reasons:

    1. It is a distributed VCS so developers are not tied to a central repository.
    2. Branches are really easy which makes non-linear development a breeze. In this context the term "non-linear" means fixing bugs or adding features in parallel.
    3. It is widely used so there is lots of help available.
    4. It is fast.
    5. I find it easy to understand and use. I have heard many folks complain about how arcane git is. If you read the book and still find it arcane, then you should consider using something else.
    6. It is really easy to incorporate into your software. If you need to offer a version control service in your tools, git is a great way to do it. It integrates well with languages like python, java and C.

    In addition to using git as your VCS, I would recommend using the github development model so that your developers become familiar with the open-source development model. It is well suited to small projects: http://readwrite.com/2013/09/30/understanding-github-a-journey-for-beginners-part-1.

    If you do choose git, please note that you never need to using the main branch for development. Learn to use branches for features and issues. Also make use of tags. It will make your life much easier in the long run.

    One side note, I have also used git as a perforce client which worked pretty well. I understand that it can also be used as a SVN and a mercurial client but I have never done that. My guess is that it would work very with mercurial because the branching models are somewhat similar but that it would be difficult to handle client side branches in SVN because SVN uses a linear development paradigm.

  76. PlasticSCM by naris · · Score: 1

    PlasticSCM (https://www.plasticscm.com/) is thebest version control system I have ever seen or used bar none. However it is a commercial product and is not open source. It does have one of the lowest costs when compared to other commercial VSC systems ($9.95/user/month) I would *strongly* recommend staying as far away from Subversion as possible. This broken VCS is extremely likely to screw up your code if you ever try to have more than 1 version at a time (attempt to branch the code). Although, if you only ever have 1 main branch it will only screw up your code and conflict with itself some of the time. I have not used git myself, but if you are looking for an open source solution, I would recommend git over subversion any day. Where I work, we use Clearcase (which is *really* expensive and hard to maintain) and some teams have started to migrate to subversion. Some of the subversion projects are entering maintenance and I dread when someone attempts to merge code :( I also use PlasticSCM and Subversion on other projects outside of my primary job. When using subversion, it often fails to check in files due to conflicts, and this is 1 person working in trunk. Oftentimes the only way to get subversion to work is to delete the working copy and start over. This has never happened since we switched to PlasticSCM.

  77. Git by Anonymous Coward · · Score: 0

    GitHub or gitlab, making sure to prevent force pushes and use an alt branch to prevent idiocy

  78. If you really want simple and effective: rcs+$Id$ by ksbraunsdorf · · Score: 1

    I still use RCS because it has the in-line markup to keep track of the revision you have. And is so simple to set-up and use that a 1 page cheat-sheet is usually enough for most people that can type without looking at their fingers. Put it on a ZFS filesystem and take hourly snapshots. Don't worry about network access, since that is how you are going to loose your repo. People can login to a server to edit and rsync to make remote copies. Easy and safe (using ssh for example). I always display the $Id$ string in the version output for each module under -V or --version: that means you can know for sure that you have the latest version before you test/release.

  79. Re:Git, obviously, but there's a way to make it ea by Tumbleweed · · Score: 1

    Interesting. I've never even _heard_ of gitk before. That bug sounds rather scary, though.

    We're using SourceTree where I work as it's an Atlassian product that integrates well with the rest of the Atlassian suite, which we're also using.

  80. Revision control is important. by niftymitch · · Score: 1

    Perhaps the best choice is Mercurial running on a $500 server in house.
    Backed up with another $500 server perhaps in another building managed
    by second individual such that there are two sets of master pass words to
    two servers.

    Lots can be done with good desk top boxes today...

    My preference is to run Ubuntu, Centos or Fedora on the inexpensive hardware.

    Clients work on WindowZ...

    For any system to work a policy is needed. Check text in each day
    perhaps on a "work-in-progress" (WIP) branch.

    Managers need to know how to use and monitor it.

    Also find a bug system to track progress, features, bugs.
    Some checked in changes will be tagged to a feature request
    or a bug.

    I am a fan of RCS for learning how revision control works.
    With NFS and some wrapper scripts it can be scaled to hundreds of engineers
    as long as they stick to their own projects.

    You also need a documentation system and plan.

    Any system can be modeled with colored 4x6" cards over an conference table.
    Pass cards.. into and out of piles to and from people.
    If you cannot model your system with colored cards across a table it is not understood
    or just too complex.

    Lots of folk begin to understand revision systems and live locks by sharing a check book.

    --
    Truth is stranger than fiction, but it is because Fiction is obliged to stick to possibilities; Truth isn't. Mark Twain.
  81. P4 by Anonymous Coward · · Score: 0

    If you are developing in Eclipse (PyDev), use Perforce. it's perfect for small teams where you always have a central repository

  82. Reading is Fundamental by Tenebrousedge · · Score: 1

    Text is searchable, skimmable, and can be read in far less time than it takes to say it. Which is one reason that there's always a dozen Slashdotters screaming for the editor's head on a plate if a video is posted without a transcript. It's also more accessible to people who may not have high speed Internet access everywhere they go.

    Programming is a text-based job; video offers no advantages. It's not like code examples can be conveyed better with sight gags or interpretive dance. If you think video talks are superior to written documentation you are simply wrong.

    --
    Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.