Differences between revisions 2 and 7 (spanning 5 versions)
Revision 2 as of 2008-03-05 02:07:03
Size: 3733
Editor: RobertWard
Comment:
Revision 7 as of 2008-07-31 21:45:39
Size: 616
Editor: YoichiAso
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Email from Jamie Rollins about populating an SVN archive, while preserving file time stamps: SVN! aka, Subversion!
Line 3: Line 3:
{{{
 
##################################################
Recipe to populate empty SVN repository with files, preserving ctime
stamps:
We are in the process of installing the 40m directory tree into SVN version control.
Line 9: Line 5:
1. create an empty repository: == Using SVN in the control room ==
It is a secret. Use the method below even from the control room computers.
Line 11: Line 8:
/path/to/repo $ svnadmin create foo == Getting files from off-site ==
Line 13: Line 10:
2. add an "unrestricted" pre-revprop-change script to the repository
hooks directory [0]:
There are two methods. Use the first method whenever possible.
Line 16: Line 12:
/path/to/repo $ cat > foo/hooks/pre-revprop-change
#!/bin/sh
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
/path/to/repo $ chmod 755 foo/hooks/pre-revprop-change
Checking out trunk/chans directory
Line 25: Line 14:
This allows the script to change the "Last Changed" times of the files
to match the ctimes.
{{{ svn co --username svn40m https://nodus.ligo.caltech.edu:30889/svn/trunk/chans}}}
Line 28: Line 16:
3. check out a working copy of the repository: The password is written in the standard place.
Line 30: Line 18:
/path/to/wc $ svn checkout file:///path/to/repo/foo Alternative way:
Line 32: Line 20:
4. add the files to the working copy, preserving their ctime stamps:

/path/to/wc $ cd foo
/path/to/wc/foo $ cp -a /path/to/oldfiles/ .

5. run the included script [1] in the working copy root:

/path/to/wc/foo $ svn_ctime_checkin

This will add all the files in the working copy to the repository, and
change the SVN "Last Changed" timestamp for every file and directory
to be that of the filesystem ctimes.

6. On every system where you want to checkout a working copy of the
repository, uncomment or add the following line to the SVN client-side
config file [2]:

~ $ cat >> ~/.subversion/config
use-commit-times = yes
~ $

This will tell the SVN client to set file ctimes to be the "Last
Changed" time on checkout/update/etc.

7. Finally, checkout your working copy of the repository, and note
that the original file ctimes are preserved.

A. You might now want to go back and remove the unrestricted
pre-revprop-change script, so that users can't change file properties
in the future:

~ $ rm /path/to/repo/foo/hooks/pre-revprop-change

Here is the test that I ran that demonstrates that it works:

servo:/tmp/cdtemp.sf7635 0$ ls
svn_ctime_checkin
servo:/tmp/cdtemp.sf7635 0$ svnadmin create foo
servo:/tmp/cdtemp.sf7635 0$ cat > foo/hooks/pre-revprop-change
#!/bin/sh
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
servo:/tmp/cdtemp.sf7635 0$ chmod 755 foo/hooks/pre-revprop-change
servo:/tmp/cdtemp.sf7635 0$ svn checkout file:///tmp/cdtemp.sf7635/foo bar
Checked out revision 0.
servo:/tmp/cdtemp.sf7635 0$ cd bar
servo:/tmp/cdtemp.sf7635/bar 0$ cp -a ~/matlab/bin/chaos.m .
servo:/tmp/cdtemp.sf7635/bar 0$ ls -l
total 4
-rw-r--r-- 1 jrollins jrollins 248 2005-09-10 16:58 chaos.m
servo:/tmp/cdtemp.sf7635 0$ date +"%Y-%m-%d"
2008-02-12
servo:/tmp/cdtemp.sf7635/bar 0$ ../svn_ctime_checkin
svn propset svn:date 2005-09-10T20:58:09.000000Z --revprop -r HEAD
property 'svn:date' set on repository revision 0
A chaos.m
Adding chaos.m
Transmitting file data .
Committed revision 1.
property 'svn:date' set on repository revision 1
ready
servo:/tmp/cdtemp.sf7635/bar 0$ ls -l
total 4
-rw-r--r-- 1 jrollins jrollins 248 2005-09-10 16:58 chaos.m
servo:/tmp/cdtemp.sf7635/bar 0$ cd ..
servo:/tmp/cdtemp.sf7635 0$ grep use-commit-times ~/.subversion/config
### Set use-commit-times to make checkout/update/switch/revert
use-commit-times = yes
servo:/tmp/cdtemp.sf7635 0$ svn checkout file:///tmp/cdtemp.sf7635/foo qux
A qux/chaos.m
Checked out revision 1.
servo:/tmp/cdtemp.sf7635 0$ ls -l qux/
total 4
-rw-r--r-- 1 jrollins jrollins 248 2005-09-10 16:58 chaos.m
servo:/tmp/cdtemp.sf7635 0$

[0] http://svnbook.red-bean.com/en/1.4/svn.ref.reposhooks.pre-revprop-change.html
[1] http://svn.haxx.se/users/archive-2006-10/1345.shtml
[2] http://svnbook.red-bean.com/en/1.4/svn.advanced.confarea.html#svn.advanced.confarea.opts.config

}}}
{{{svn co svn+ssh://controls@nodus.ligo.caltech.edu/cvs/cds/caltech/svn/trunk/chans}}}

SVN! aka, Subversion!

We are in the process of installing the 40m directory tree into SVN version control.

Using SVN in the control room

It is a secret. Use the method below even from the control room computers.

Getting files from off-site

There are two methods. Use the first method whenever possible.

Checking out trunk/chans directory

 svn co --username svn40m https://nodus.ligo.caltech.edu:30889/svn/trunk/chans

The password is written in the standard place.

Alternative way:

svn co svn+ssh://controls@nodus.ligo.caltech.edu/cvs/cds/caltech/svn/trunk/chans

How_To/Use_the_SVN_archive (last edited 2017-11-18 05:16:31 by GabrielevajenteATligoDOTorg)