RE: Question on Automatic svn creation ยป reposman_wrapper.sh
1 |
#!/bin/bash
|
---|---|
2 |
# Creates repositories for new redmine projects, adds commit hooks and creates a basic repository structure
|
3 |
|
4 |
# Keep track of the install path
|
5 |
HOOKS_DIR=/var/hooks |
6 |
TMP_WC=/tmp/new_repo |
7 |
INSTALL_DIR=/usr/redmine |
8 |
REDMINE_PORT=3000 |
9 |
REDMINE_SUB_URI=redmine |
10 |
WWW_OWNER='www-data' |
11 |
SCM_DATA_PATH=/var/svn |
12 |
|
13 |
|
14 |
svn_initial_commit() { |
15 |
local NEW_REPO=$1 |
16 |
echo " Performing initial commit..." |
17 |
svn checkout $NEW_REPO $TMP_WC |
18 |
pushd $TMP_WC > /dev/null |
19 |
mkdir -p trunk tags branches |
20 |
svn add *
|
21 |
svn commit -m "Initial commit: Added repository structure" |
22 |
popd
|
23 |
rm -rf $TMP_WC |
24 |
}
|
25 |
|
26 |
svn_add_hooks() { |
27 |
local NEW_REPO=$1 |
28 |
echo " Adding hooks..." |
29 |
cp -P $HOOKS_DIR/* $NEW_REPO/hooks |
30 |
}
|
31 |
|
32 |
prep_new_repositories() { |
33 |
local HOOKS_DIR=$1 |
34 |
while read i; do |
35 |
echo "New repository created: $i" |
36 |
|
37 |
# Check for repository creation
|
38 |
i=`echo $i | grep -P '^.+(created$){1}'` |
39 |
|
40 |
# Strip repository paths from the reposman.rb output
|
41 |
i=${i##repository } |
42 |
i=${i%% created} |
43 |
|
44 |
# Perform initial commit and add hooks for every new repository
|
45 |
if [ -n "$i" ]; then |
46 |
svn_initial_commit $i |
47 |
svn_add_hooks $i
|
48 |
fi
|
49 |
done
|
50 |
}
|
51 |
|
52 |
# Call reposman.rb, parse output and prep whatever was created
|
53 |
ruby $INSTALL_DIR/extra/svn/reposman.rb --svn-dir=$SCM_DATA_PATH --redmine-host=localhost:$REDMINE_PORT/$REDMINE_SUB_URI --scm=subversion --url=file://$SCM_DATA_PATH --owner=$WWW_OWNER --group=$WWW_OWNER | grep 'repository /' | prep_new_repositories $HOOKS_DIR |