My team is using SVN to store a lot more than just source code - we are storing all kinds of files. A process I'm working on designing is used to generate diff reports whenever a certain Excel spreadsheet is updated and acknowledged by a subset of the team. (This spreadsheet is automatically generated by a separate process; no humans ever touch it.)
Here's my workflow:
- Excel spreadsheet generated (call it
raw.xlsx
). I download the file and commit to SVN. - A pre-commit hook generates a new Excel spreadsheet (call it
to_review.xlsx
) and commits that. An email gets sent to my team saying that a diff betweenraw.xlsx:HEAD
andraw.xlsx:PREV
was detected. - Someone on my team reviews
to_review.xlsx
, edits as needed, and commits it. - A pre- or post-commit hook then makes edits to
to_review.xlsx
to update a tab to reflect the edits, and commits that. (Optionally: fire an email saying that you need to now update your working copy ofto_review.xlsx
.) It also generates a filereport.pdf
that summarizes the diff ofraw.xlsx:HEAD
andraw.xlsx:PREV
.
How okay or not-okay is it to use SVN in this manner - i.e., to edit the file a human just committed and re-commit it? The edit will never be against what the human added/removed, but by doing this the human immediately has an out-of-date copy as soon as he commits. I'm not sure how else to approach this - we can't go straight from raw.xlsx
to report.pdf
, a human must be in the loop with to_review.xlsx
.