views:

328

answers:

7

Does anyone know of an application or system out there for tracking changes (files added/removed, diffs on text files) to a non-source controlled directory over time? Something that would let you

  1. Take a snapshot of a certain directory tree at time A

  2. Come back at time period B and see what has changed

  3. Come back at time period C and see what's changed since time period A, and what's changed since time period B

A source control repository isn't an option here. I want something that works on a directory structure that isn't under any kind of revision control. My group isn't in control of the servers or directory trees in question, but changes to those trees impact us and we'd like to keep track of them. The objects to "source control" are

  1. Objections to any kind of centralized repository that requires document authors to check-in, check-out.

  2. Objections to having to hand-roll/automate a bunch of tasks that can leverage a version control system's feature set

I want a semi-mature package where people have spent some time thinking about the problem. If there's a version control system that's been built to handle this kind of thing, it applies.

A: 

Hi guys! I'd like something that looks, tastes and smells just like milk. But it shouldn't be milk.

In other words: you're describing a vcs. If you tell us why a vcs can't be used, it might be easier to answer.

Only thing I can think of is Apple's Time Machine, which (again) is basically vcs for the masses.

MattW.
Some people are lactose intolerant ;)
Alan Storm
actually that's not such a stupid questions; babies that are allergic to cows milk are often given goats milk as a substitute ;)
Sam Hasler
A: 

Automate committing it to revision control at set intervals. If you don't want any extra files/directories in the directory but the repository you pick requires them in the working copy then make part of the process copying the content of the directory to a separate working copy.

Sam Hasler
I'd like an existing solution that's worked through the bugs and edge cases that would come with rolling my own solution. I'd rather spend 2 hours setting something up than 2 days scripting up a suitable solution.
Alan Storm
A: 

You either need a source code management system or a document management system.

Why is source code management not an option? SVN is easy to use for non-programmers with the Tortise SVN windows integration.'

Sounds like you don't have many options for the server....

How about this? 1. Setup a SVN repository on your computer 2. Nightly copy from the Directory to your computer and commit changes.

Or... Use windows "Search" command for files changed in the last n days. Run the report manually each week. Or write an automation for that report.

Ken
Politics mostly. The people responsible for adding and editing files in these directories won't be convinced as to the merits of source control.
Alan Storm
+3  A: 

Your options are really:

  1. Full source control
  2. Source control 'lite' in the form of something like FileHamster
  3. Differential backup/restore facility
  4. Full backup/restore and a diff tool
  5. (I think) A journaling file system.

With just a standard directory there isn't really a way to do this without keeping a copy elsewhere, which essentially means it's a source control repo though.

workmad3
A: 

What you're describing is a version control system?! So I'm not sure I understand why you wouldn't want to install one. You could very easy implement a local version of SVN/CVS and interface in it through your applications (e.g. add new files, remove old ones). This could be done on a periodic basis using a scheduled task or something.

I haven't heard of anything else that's "simple" which you could use. I guess because it's already been done ;) So why recreate the wheel...

I guess you could look at an open source backup software package. They must have some logic in there to track file changes used for incremental backups. They probably don't track file changes though..

+4  A: 

Write a scripted scheduled task which copies the directory tree to another place, perhaps on a different machine, which is part of a version controlled repostiory. Then, the scheduled task would automatically commit changes, using the version control system of your choice (Mercurial should work nicely for this system, since hg commit -A -m "automated snapshot" will quickly do what you need without any interactive prompts).

I'd suggest rsync for the copy, which is available for many platforms, and is fast and efficient since it won't copy files which haven't changed. Configure the copy to delete files from your copy which have been deleted on the main directory.

Dickon Reed
A: 

This is a solution:

use a subversion local repository and use a scheduled task which will commit your files at a regular base(once an hour?)

a simple example:

your directory you want to track: c:\tracking_dir

the directory you store the data of differences and other historical infos: c:\repository

  1. svnadmin create c:\repository
  2. svn co file:///c:/repository c:\tracking_dir\
  3. setup an scheduled task which should run this commands:

    svn add c:\tracking_dir*.*
    svn ci c:\tracking_dir*.* -m"automatic commit through scheduled task"

In this way you have a running example and can access the history via any subversion frontend

Peter Parker