svn

Dry run update with svn and cvs

To test what files would get changed or conflict when running an update:

With svn:

svn merge --dry-run -r BASE:HEAD .

With cvs:

cvs -nq update -d

SSL and subversion client

Unlike web browsers, the CA root cert is not installed by default for svn clients. You would need to tell the client where to find it in order to trust the ssl cert.

Reference: svnbook

For GoDaddy signed certs, download their root certs available at:

http://certificates.godaddy.com/repository

You would need both the pem encoded gd-class2-root.crt and gd_intermediate.crt .

Then in subversion client global settings, tell it the path to the certs:

ssl-authority-files = /path/to/gd-class2-root.crt;/path/to/gd_intermediate.crt

This should then trust the ssl cert.

svn checkout via shell script

Very often development servers only have self-signed certificate for ssl connection. I've recently had to create a script that would checkout from a https svn repository that would fail with "Server certificate verification failed: issuer is not trusted..." . Below is a workaround used to temporarily trust the certificate.

svn --username $SVN_USER --password $SVN_PASS --no-auth-cache checkout ${REPO_URL}/${REPO_PATH} $REPO_PATH <<EOF 2>/dev/null
t
EOF

Trac and SVN install / configuration notes...

The below notes is specifically for centos-4.6 :

Installation:

# rpm -ivh  http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.i386.rpm
# yum install httpd subversion mod_python mod_dav_svn
# yum --enablerepo=rpmforge install trac

Instantiating svn:

# mkdir /var/www/svn
# svnadmin create /var/www/svn/project

Initial svn import:

# mkdir -p /tmp/newsvn/{trunk,tags,branches}
# svn import /tmp/newsvn file:///var/www/svn/project -m "Initial import"
# chown -R apache /var/www/svn/project
# chmod -R go-rwx /var/www/svn/project

Instantiating trac:

# mkdir /var/www/trac
# trac-admin /var/www/trac/project initenv
# mkdir /var/www/{.python-eggs,passwd}
# htpasswd -c /var/www/passwd/.htpasswd <adminuser>
# touch /var/www/passwd/svnauthz
# chgrp -R apache /var/www/trac/project
# chown -R apache /var/www/trac/project/{attachments,db,log,plugins}
# chown -R apache /var/www/{.python-eggs,passwd}
# chmod -R o-rwx /var/www/{trac/project,.python-eggs,passwd}
# chmod g+w /var/www/trac/project/conf/trac.ini

Install trac plugins:

# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin/
# easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10
# easy_install http://trac-hacks.org/svn/svnauthzadminplugin/0.10

trac.ini conf setup:

[trac]
default_charset=UTF-8
authz_file = /var/www/passwd/svnauthz

[components]
acct_mgr.admin.accountmanageradminpage = enabled
acct_mgr.api.accountmanager = enabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.web_ui.accountmodule = enabled
acct_mgr.web_ui.loginmodule = enabled
trac.web.auth.loginmodule = disabled
webadmin.* = enabled
svnauthz.* = enabled

[account-manager]
password_file = /var/www/passwd/.htpasswd
password_store = HtPasswdStore

Apache trac conf setup:

Alias /trac /var/www/trac
<Location /trac>
    &nbsp;   SetHandler mod_python
    &nbsp;   PythonInterpreter main_interpreter
    &nbsp;   PythonHandler trac.web.modpython_frontend />    &nbsp;   PythonOption TracEnvParentDir /var/www/trac
    &nbsp;   PythonOption TracUriRoot /trac
    &nbsp;   SetEnv PYTHON_EGG_CACHE /var/www/.python-eggs
</Location>
#<Location /trac/*/login>
#    &nbsp;   AuthType Basic
#    &nbsp;   AuthName 'Trac Server'
#    &nbsp;   AuthUserFile /var/www/passwd/.htpasswd
#    &nbsp;   Require valid-user
#</Location>

Apache subversion conf setup:

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn

   # Limit write permission to list of valid users.
   # <LimitExcept GET PROPFIND OPTIONS REPORT>
    &nbsp; # Require SSL connection for password protection.
    &nbsp; # SSLRequireSSL

    &nbsp; AuthType Basic
    &nbsp; AuthName 'Authorization Realm'
    &nbsp; # Trac .htpasswd file used so users will be the same for both
    &nbsp; AuthUserFile /var/www/passwd/.htpasswd
    &nbsp; Require valid-user
    &nbsp; AuthzSVNAccessFile /var/www/passwd/svnauthz
   #</LimitExcept>
</Location>

Trac privileges:

# trac-admin /var/www/trac/project permission add admins TRAC_ADMIN
# trac-admin /var/www/trac/project permission add <adminuser> admins
# trac-admin /var/www/trac/projectname permission remove anonymous TICKET_CREATE TICKET_MODIFY etc...
# track-admin /var/www/trac/project permission add devs BROWSER_VIEW CHANGESET_VIEW FILE_VIEW LOG_VIEW   &nbsp;    \
    &nbsp;    &nbsp;    MILESTONE_CREATE MILESTONE_VIEW REPORT_CREATE REPORT_MODIFY REPORT_SQL_VIEW REPORT_VIEW  \  
    &nbsp;    &nbsp;    ROADMAP_VIEW SEARCH_VIEW TICKET_APPEND TICKET_CHGPROP TICKET_CREATE TICKET_MODIFY \
    &nbsp;    &nbsp;    TICKET_VIEW TIMELINE_VIEW WIKI_CREATE WIKI_MODIFY WIKI_VIEW

Login as the admin user and setup Trac plugins, permissions etc...

Comment