Slashdot Mirror


Ask Slashdot: Version Control For Non-Developers?

occamboy writes My spouse works at a company that deals with lots of documents (Word, spreadsheets, scans, and so forth), and they have a classic version control problem that sucks up hours of her time each week. Documents are stored on a shared server in some sort of hierarchy, but there are all kinds of problems, e.g. multiple copies get saved with slightly-different names because people are afraid of overwriting the old version 'just in case' and nobody can figure out which is the latest version, or which got sent out to a client, etc.

Version control should help, and my first thought was to use SVN with TortoiseSVN, but I'm wondering if there's something even simpler that they could use? Do the Slashdotteratti have any experiences or thoughts that they could share? The ideal solution would also make it easy to text search the document tree.

15 of 343 comments (clear)

  1. Take a look at Owl by LWATCDR · · Score: 3, Interesting

    http://www.doxbox.ca/
    It is a document management system

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  2. Pick an easy solution by hhawk · · Score: 4, Interesting

    I would recommend Google docs, assuming there isn't any crazy formating involved.

    #1) It is a single document so you don't have to worry about the naming of it..
    #2) Google Docs has a built in ver. control, in that you can roll backwards to early version of the document, and you can see who is editing, changing etc. (assuming everyone has their own password).

    It's low tech, easy to use, and the only education is to keep on using the same file name.

    --
    http://www.hawknest.com/
  3. My experience by Anonymous Coward · · Score: 2, Interesting

    I had a similar arrangement for a medical practice using Subversion and Cornerstone but ran into the same issues mentioned in the parent, creating new weird names, forgetting to check-in their changes, etc. Given the docs were Word, Excel, and Powerpoint, merges between files aren't possible.

    The only real solution was to park everything online, including the editing and version control. Removing the notion of a 'file' that had to be down/uploaded was the biggest thing to overcome but they soon adapted and having simultaneous edits while everyone is on Skype was a real win for them.

    Google Docs, its free and your collaborators don't even need Gmail accounts to contribute. Compared to the other offerings (Smartsheet, etc), the ability to add additional scripting behaviours puts it on a level above the rest. At that point you'll have to pay about $50/user/year which is quite reasonable.

  4. Re:I'd avoid Subversion by StatureOfLiberty · · Score: 3, Interesting

    If you are using Windows PCs and using the TortoiseSVN client, you are able to diff word docs just fine. The diff view is displayed in Word itself.

  5. DO NOT Use GIT by Anonymous Coward · · Score: 2, Interesting

    No. You are wrong.

    Git handles text files well.

    Git handles infrequenly changing binaries well enough.

    Git handles frequently changing binaries very very very poorly.

    Plus, with either svn or git, you are basically asking each user of the system to download all revisions of all files ever used on your system. That makes perfect sense for a codebase. That makes terrible terrible sense for business documents in a shared pool.

    1. Re:DO NOT Use GIT by DarkDust · · Score: 4, Interesting

      With SubVersion, you can check out subtrees instead of the whole repository (even non-recursively, so you can check out a directory "in the middle"). That's something that Git or Mercurial can't do by design; IIRC it's because the always-complete-repository approach makes merging and other tasks much, much easier. In your SVN working copy, only the data of commit you've checked out are stored. For everything else SVN needs to contact the server which depending on the requirements and workflow, is either a good or bad thing. On the other hand, Git and Mercurial do have the complete history locally which allows them to perform a lot of tasks without contacting a server that SubVersion could not do (simple example: get log history of a file).

      But it's actually besides the point: all of these things won't matter to an office user. Ease-of-use and chances-to-screw-up do.

  6. Re:Use GIT by DarkDust · · Score: 5, Interesting

    Now you've got into rant-mode, sorry. I really hope non-technical people are never forced to actually type in commands but use a GUI instead, no matter which VCS they use. But especially with Git. I think Git is a very powerful tool and have come to like it for its features, but I still hate it for its commands and what I feel are inconsistencies and "fuck how other VCS are naming it, we use something different".

    For example, discard changes on a single file: "git reset foo.bar". Discard changes on all files: "git checkout -- .". WTF? Just a few days ago, I wanted Git to give me the diff of specific commit, the equivalent to "svn diff -c revision" or "hg diff -c revision". In git? "git diff revision^ revision" or "git diff revision^!" (which I overread when I was reading the man page and needed to look it up on Ye Olde Interweb). Or "git diff-tree -p revision" or "git whatchanged -m -n 1 -p revision" since why not? And "git add" both adds a new file to the repository but also picks a modified file to be included in the next commit (but only the parts that have not changed between add and commit. The add behaviour does make sense when you think "from the inside" of the VCS, but I was confused at first and I'm a technical guy. Normal people will have trouble with this stuff. Seriously, I've been using various VCS in last two decades and still am doing a lot in the shell, especially VCS stuff since I feel to be more in control this way. But Git is the first VCS that I use almost exclusively in a GUI because it's CLI is too cumbersome.

  7. uh yea by Charliemopps · · Score: 1, Interesting

    Um, your problem is trying to version control office.
    Stop using it.
    Put up a wiki.
    You're done and just saved the company several hundred thousand dollars a year in licensing.

  8. Re:Use GIT by DarkDust · · Score: 3, Interesting

    I've worked on a SubVersion project for several years where the smallest useful checkout was 5GB (it was an in-house Linux distribution I've built and maintained). On a local network, SubVersion works pretty well for these things but you're right, I wouldn't want to do this over a poor Internet connection. It's pretty space efficient with binary files and handles things like copies and renames very well, so if you need to deal with them a lot then SubVersion is a good choice. Git and SubVersion work very differently, each have features the other doesn't have, by design. Believe it or not, SubVersion was also *designed* for large projects, but different use-cases. I really, really wouldn't want to maintain my distribution with Git. Now that I'm a "normal" developer again, we're using Mercurial and Git since they're better suited for these tasks, handling source/text files with lots of branching and merging.

  9. I used this and it works. by serviscope_minor · · Score: 4, Interesting

    You can set up Apache to serve files over WebDAV. WebDAV is mountable as a network FS on Windows, OSX and Linux. Apache can store the webdav files in an SVN repository, so you get file versioning built into the mounted filesystem that is completely transparent to the user.

    You can also set up apache to allow normal browsing of the SVN repo, so you can browse it online without mouting and also access old versions.

    So basically you get transparently versioned files. Native read/write access. Access to old versions via a web browser. No tools required on the clients for it to work.

    Also all free and open source and the data is not stored in an obnoxious format that it opaque: it's a refular SVN repo and works just as well with commandline tools.

    --
    SJW n. One who posts facts.
  10. Re:Use GIT by diamondmagic · · Score: 3, Interesting

    Git has the "stage", right. The stage is just the next commit. It's a little hidden filesystem (git tree, actually) that's already processed and ready to be attached to a commit message once you run `git commit`.

    For example, discard changes on a single file: "git reset foo.bar". Discard changes on all files: "git checkout -- .". WTF?

    `git checkout` is about your working directory. Use "git checkout -- foo.bar" if you made a modification and you don't want to commit it, just erase it. Or better yet, `git checkout -p`

    `git reset` is about unstaging changes, it doesn't touch the filesystem. (It also has `git reset -p`)

    Just a few days ago, I wanted Git to give me the diff of specific commit, the equivalent to "svn diff -c revision" or "hg diff -c revision". In git? "git diff revision^ revision" or "git diff revision^!" (which I overread when I was reading the man page and needed to look it up on Ye Olde Interweb). Or "git diff-tree -p revision" or "git whatchanged -m -n 1 -p revision" since why not?

    You want to see the changes that one commit introduced, so of course you ask git: "What were the changed from parent-of-'$revision' through '$revision'?"

    You're probably looking for `git show $revision`

    And "git add" both adds a new file to the repository but also picks a modified file to be included in the next commit (but only the parts that have not changed between add and commit.

    `git add` copies a file from the working tree to the stage (index). What happens when you use `cp` and the target file doesn't exist? It gets created. (Since you can't copy a nonexistent file, there's also `git rm` to remove files from the stage.)

  11. MediaWiki. by sbaker · · Score: 4, Interesting

    My wife and I use MediaWiki! Seems kinda silly - but you can configure it to accept all kinds of file types - and you have all of the nice stuff like discussion pages and categories to help you to organize them.

    The huge advantage is that it's insanely easy to use. Super-light on features also...but, hey...it's a thought, right?

        -- Steve

    --
    www.sjbaker.org
  12. Been there, done that. Here's how: by Qbertino · · Score: 4, Interesting

    My Gig currently is with a classic marketing agency. Very nice folks - a breath of fresh air when it comes to my history with agencies - but breathtakingly clueless with IT - as usual in this industry. I'm basically the only IT/dev guy in a shop of 30. Has its ups and downs. ... Whatever.

    They asked me on board as a webdev, to establish a pipeline and introduce versioning. I'm using Git on a VMed central linux system and SourceTree as client. Our outside SSH port is mapped to that VM, so the the people on a project can commit docs or code on the go.

    Sidenote: I wouldn't use anything other than Git, it's just not worth it. Git has won the versioning thing. End of story. ... Bazaar might be an alternative, if you need the same click-ui on windows, mac *and* linux, but that is probably a very rare case.

    As a client we use SourceTree on both Mac and Windows, so all UIs look more or less the same. No Tortoise, for that exact reason! I show them where to click to see the entire file-tree as in finder or explorer, so nobody is confused and explain the difference between a commit and a push. In a pinch, the windows and mac folks can help each other out if I'm not around, since they’re all using SourceTree. And it keeps this "Versioning" thing nice and secluded. That's also a reason.

    I want to get them to use versioning, so I tell them #1 is always fear of using it. I tell them not to worry, it's pratically impossible to break anything (one of the advantages of Git). I tell them to version often and comment their commits, even if it's just smalltalk. The point is getting used to commenting. We don't uses branches, just master. I also tell them to try and logically group commits, but not kill themselves if it goes wrong. It happens - with me aswell. No harm done.

    Once everyone is pro in versioning, we might change the branching policy.

    As for all the other buttons in SourceTree, I just tell them to ignore them and that they are for later. I do tell them the meaning of "Stash" and how nifty that is when you've forgotten to pull before starting your work, but only those who need and want to know. ... As soon as they get a pull conflict, they ususall do want to know, so no problem here.

    I've established a naming-standard with ProjectFolderName/git-repo for local clones, so everyone has a space where they can fiddle for the project without needing to inmediately version if they just want to try out a new tool or salvage an older Photoshop template or something. Project docs go into /docs, developer stuff goes into /code (mostly complete wordpress installs or some other thing), DB dumps into /db, graphics, layout, DTP files and videos and other raw material usually goes into /assets, etc. ... You get the picture.
    We're/I'm not to strict with dir-policy and let it grow a little too. No project is like another.

    Important:
    I put my agency behind versioning, because right now its Filename-02122014-final-extra-specialEdit-Peter.doc on a central drive and shit. Especially with the editorial team. Not good. I did a neat presentation and help everyone who comes into versioning to get familiar with the concept. Installing SourceTree, doing a few demo commits, have them do it, show them the red numbers, looking at the history log and file-changes and stuff.

    A few months in and the online team is starting to get used to versioning on some projects. Once everyone there is on board we’ll move into other departments. My PM for one large online project is using versioning regularly now, as are the students helping out. That the bosses are behind all this helps.

    Sidenote: More than half of the team is ladies, as is my PM, btw.

    I tell everyone that they can ask me everything a million times and call me at 2 o’clock in the morning if it’s a versioning problem and they need my advice or some handholding. Very import

    --
    We suffer more in our imagination than in reality. - Seneca
  13. Re:Business problem != technology problem by grcumb · · Score: 3, Interesting

    Throwing more technology on the pile won't help without a lot of user education, and if you had that you would not need the technology anyway...

    1) Create a rational naming convention and use that.

    Go no further than this. I've worked in office environments where we had dozens of editors and sub-editors proofing and editing tens of thousands of legal documents (legislation, judicial decisions and regulation), where even a single character out of place was unacceptable. After years of trial and error, the single most foolproof way of working with these documents was using the file system to define where they were in the editing process, and using filenames to indicate their status and ownership.

    It's primitively simple. But simple is an abundantly good thing in this context. Make some basic rules. Enforce them. Bob's your uncle.

    --
    Crumb's Corollary: Never bring a knife to a bun fight.
  14. Re:Use GIT by DarkDust · · Score: 3, Interesting

    I'd love to see you explain all this to an average office lady :-)