Anchor | ||||
---|---|---|---|---|
|
As of April 12 2011 the old Cluster Computing Toolkit code repository
file:///afs/slac/g/cci/svnrepo
has been broken into several experiment level repositories. The svn URLs for these repositories are:
- DAT Core:
file:///afs/slac/g/cci/repositories/ctkrepo
- Petacache:
file:///afs/slac/g/cci/repositories/petacache (OBSOLETE)
- LSST:
file:///afs/slac/g/cci/repositories/lsst
Unlike a CVS repository you can't just cd
to that directory and expect to see a meaningful repository structure; the actual files are entered into a small database only the container files of which are visible.
Each commit operation creates a new revision of the entire repository which is assigned a number. It doesn't matter how many files are affected by the commit. Moves, deletions and renames also create new revisions.
Each project is a top-level name in the repository and has three "subdirectories" under it: trunk, branches and tags. Ordinary development occurs under trunk. Branches are only used when a project depends on a different development line for the system (i.e. LSST). Tags here are now obsolete.
Code Block | ||||
---|---|---|---|---|
| ||||
setenv SVNROOT file:///afs/slac/g/cci/repositories/ctkrepo svn copy ${SVNROOT}/foo/trunk ${SVNROOT}/foo/branches/experimental5 |
Branches should be treated as fully independent lines of development which are eventually either abandoned or merged back into the trunk.
Tagging is now done with the $SVNROOT/core_tags directory. This directory contains "snapshot" and "prod". Each entry in both snapshot and prod corresponds to a fully buildable workspace. Snapshots are usually snapshots of the trunk, and are tagged "YYYYMMDD_HHMM" (like 20140702_1453). Production tags (in prod) are tagged with VM.m.p where M==Major, m=minor and p=patch revision. The choosing of these numbers is up to the maintainer of the release system.
Subversion copies are "smart" in the sense that they produce references back to the original; only subsequent changes made to a copy get stored there. A copy in effect produces a snapshot of the original source tree which is unaffected by subsequent changes to the original.
Anchor | ||||
---|---|---|---|---|
|
To check out code to make a full build of the core software using the trunk:
Code Block | ||||
---|---|---|---|---|
| ||||
cd work setenv SVNROOT file:///afs/slac/g/cci/repositories/ctkrepo svn checkout ${SVNROOT}/workspace/trunk workspace cd workspace svn checkout ${SVNROOT}/bootstrap/trunk bootstrap svn checkout ${SVNROOT}/cm/trunk cm svn checkout ${SVNROOT}/configuration/trunk configuration svn checkout ${SVNROOT}/platform/trunk platform svn checkout ${SVNROOT}/rtems/trunk rtems svn checkout ${SVNROOT}/service/trunk service svn checkout ${SVNROOT}/tool/trunk tool svn checkout ${SVNROOT}/xilinx/trunk xilinx |
To check out a production tag, simply do
Code Block |
---|
setenv SVNROOT file:///afs/slac/g/cci/repositories/ctkrepo svn checkout ${SVNROOT}/core_tags/prod/VM.m.p |
A snapshot tag can be checked out from the snapshot directory. To make a snapshot tag, use workspace/make/tools/snapshot.sh.
Subversion can set so-called attributes of files such as whether to expand keywords such as $Author$ or whether to convert endline characters to native format in check-out files. Normally you want both of those inhibited for binary files. Luckily it's possible to give Subversion a configuration file enabling it to do a good job telling whether a new file is binary or not. Attached to this page is a file that you should place in ~/.subversion/config
.