Differences between revisions 3 and 9 (spanning 6 versions)
Revision 3 as of 2008-04-11 16:57:05
Size: 3832
Comment:
Revision 9 as of 2008-08-01 05:33:15
Size: 1809
Editor: YoichiAso
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
40m svn repository web browser, set up by Phil Ehrens:
[https://40m.ligo.caltech.edu/svn/40m/]
SVN! aka, Subversion!
Line 4: Line 3:
Email from Jamie Rollins about populating an SVN archive, while preserving file time stamps: We are in the process of installing the 40m directory tree into SVN version control.
Line 6: Line 5:
{{{
 
##################################################
Recipe to populate empty SVN repository with files, preserving ctime
stamps:
== Using SVN in the control room ==
It is a secret. Use the method below even from the control room computers.
Line 12: Line 8:
1. create an empty repository: == Getting files from off-site ==
Line 14: Line 10:
/path/to/repo $ svnadmin create foo There are two methods. Use the first method whenever possible.
Line 16: Line 12:
2. add an "unrestricted" pre-revprop-change script to the repository
hooks directory [0]:
Checking out trunk/chans directory
Line 19: Line 14:
/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
{{{ svn co --username svn40m https://nodus.ligo.caltech.edu:30889/svn/trunk/chans}}}
Line 28: Line 16:
This allows the script to change the "Last Changed" times of the files
to match the ctimes.
The password is written in the standard place.
Line 31: Line 18:
3. check out a working copy of the repository: Alternative way:
Line 33: Line 20:
/path/to/wc $ svn checkout file:///path/to/repo/foo {{{svn co svn+ssh://controls@nodus.ligo.caltech.edu/cvs/cds/caltech/svn/trunk/chans}}}
Line 35: Line 22:
4. add the files to the working copy, preserving their ctime stamps: == A sample session ==
'''Task''': Making your own directory under trunk/docs/ and put a draft of your potentially Nobel prize winning paper.
Line 37: Line 25:
/path/to/wc $ cd foo
/path/to/wc/foo $ cp -a /path/to/oldfiles/ .
Line 40: Line 26:
5. run the included script [1] in the working copy root: (1) Make your own directory in the repository.
Line 42: Line 28:
/path/to/wc/foo $ svn_ctime_checkin {{{svn mkdir --username svn40m https://nodus.ligo.caltech.edu:30889/svn/trunk/docs/mydir}}}
Line 44: Line 30:
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.
(2) Check out the directory you just created.
Line 48: Line 32:
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]:
{{{svn co --username svn40m https://nodus.ligo.caltech.edu:30889/svn/trunk/docs/mydir}}}
Line 52: Line 34:
~ $ cat >> ~/.subversion/config
use-commit-times = yes
~ $
(3) Change directory to the checked out directory.
Line 56: Line 36:
This will tell the SVN client to set file ctimes to be the "Last
Changed" time on checkout/update/etc.
{{{cd mydir}}}
Line 59: Line 38:
7. Finally, checkout your working copy of the repository, and note
that the original file ctimes are preserved.
(4) Put your draft into the directory.
Line 62: Line 40:
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:
{{{cp /somewhere/ProofOfEverything.tex . }}}
Line 66: Line 42:
~ $ rm /path/to/repo/foo/hooks/pre-revprop-change (5) Put the file under the svn's control.
Line 68: Line 44:
Here is the test that I ran that demonstrates that it works: {{{svn add ProofOfEverything.tex}}}
Line 70: Line 46:
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$
(6) Check it in to the svn repository.
Line 114: Line 48:
[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 ci -m "The first draft"}}}
Line 118: Line 50:
}}} You have to put your comment after {{{-m}}}

(7) Update your working copy.

{{{svn up}}}

(8) Delete the file from the repository because you realized your paper is totally a bullshit.

{{{svn delete ProofOfEverything.tex}}}

{{{svn ci -m "Oops, I was wrong"}}}

However, your crappy paper can still be retrieved from the repository by requesting an old version, because all the history is recorded in the svn world.

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

A sample session

Task: Making your own directory under trunk/docs/ and put a draft of your potentially Nobel prize winning paper.

(1) Make your own directory in the repository.

svn mkdir  --username svn40m https://nodus.ligo.caltech.edu:30889/svn/trunk/docs/mydir

(2) Check out the directory you just created.

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

(3) Change directory to the checked out directory.

cd mydir

(4) Put your draft into the directory.

cp /somewhere/ProofOfEverything.tex . 

(5) Put the file under the svn's control.

svn add ProofOfEverything.tex

(6) Check it in to the svn repository.

svn ci -m "The first draft"

You have to put your comment after -m

(7) Update your working copy.

svn up

(8) Delete the file from the repository because you realized your paper is totally a bullshit.

svn delete ProofOfEverything.tex

svn ci -m "Oops, I was wrong"

However, your crappy paper can still be retrieved from the repository by requesting an old version, because all the history is recorded in the svn world.

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