SVN Configuration
Overview
With the advent of Subversion 1.8 several new features were introduced. They are of special interest to IC designers and discussed below.
Repository Dictated Configuration
Two new Subversion reserved properties, 'svn:auto-props' and 'svn:global-ignores' make use of the new inherited properties feature to provide additional configuration information that overrides/extends some of the settings found in the user's runtime configuration. The svn:auto-props property overrides/extends the auto-props configuration setting. The svn:global-ignores property extends the global-ignores configuration setting as well as the svn:ignore property.
The format of svn:auto-props property values are the same as for the auto-props runtime configuration. The format of svn:global-ignores property values are the same as for the global-ignores runtime configuration.
Example:
> svn ps svn:auto-props *.v=svn:needs-lock=* <Working Copy Root Path>> svn ci <Working Copy Root Path>
The commands above results into each newly added *.v file having svn:needs-lock=* property applied.
Adding svn:needs-lock to particular file types:
Checkout the svn repos root dir:
svn co svn://root_dir
Set add the auto-props setting:
svn propedit svn:auto-props .
The svn:needs-lock property tells Subversion that a file can only be modified if you first obtain an exclusive lock with svn lock.
*.oa=svn:needs-lock=* data.dm=svn:needs-lock=* *.cdb=svn:needs-lock=* *.tag=svn:needs-lock=* *.db=svn:needs-lock=* *.sdb=svn:needs-lock=* *.png=svn:needs-lock=* *.cds=svn:needs-lock=* *.cfg=svn:needs-lock=* *.info=svn:needs-lock=* *.state=svn:needs-lock=* *.TopCat=svn:needs-lock=* *.Cat=svn:needs-lock=* prop.xx=svn:needs-lock=* cds.lib=svn:needs-lock=* *.v=svn:needs-lock=* CCLFile=svn:needs-lock=* *.pdf=svn:needs-lock=* verilog.vams=svn:needs-lock=*
Finally checkin the change:
svn ci .
For further reading: https://subversion.open.collab.net/ds/viewMessage.do?dsForumId=4&dsMessageId=531598.
Configuring svn:global-ignores:
To configure the file patterns we would like to ignore, first we check out the svn root directory:
svn co svn://root_dir
Edit the svn:global-ignores property:
svn propedit svn:global-ignores .
The patterns we set in this property will cause commands such as svn status, svn add, and svn import to ignore files that match these patterns. Suggested settings for a Cadence environment are here:
.p4config .p4ignore .svn .SYNC .SOS *.syncmd *.swp .nfs* *~ ~* *.pyc .*% .*- .*$ .bak *.cd- *.cd+ *.cd? *.cdslck .*cdslck.* *.cdslck.* *.oa- *.oa+ .oalib *.abstract.messages *.abstract.status *.oacache *inca.* waveformSetup*.state **/cds*/*/zpcellSCRATCH** **/cds*/*/zviadragSCRATCH** **/schematic/verilog.vams
Finally checkin the change:
svn ci .