Question

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.

Was it helpful?

Solution

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.

OTHER TIPS

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.

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.

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.

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..

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.

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top