-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathg-svn-backup
111 lines (93 loc) · 2.8 KB
/
g-svn-backup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/bin/bash
#
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
#
# Written by Giorgio Desideri <giorgio.desideri@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
#
# svn credentials
svn_workspace = "Your svn workspace"
svn_username = "svn username"
svn_pwd = "svn pwd"
# go in svn workspace or working directory
cd $svn_workspace
TIMESTAMP=`date | awk '{printf $6"-"$2"-"$3"_"$4"-"$5"\n"}'`
MSG="Commit of $TIMESTAMP"
#
# SVN Operations
#
# get status
SVN_STATUS=`svn st`
# add files
add_files=`svn st | sed -n 's/^[A?] *\(.*\)/\1/p'`
if [[ ! -z "$add_files" ]]
then
svn --force --depth infinity add .
fi
# Deleted files
del_files=`svn st | sed -n 's/^[!?] *\(.*\)/\1/p'`
if [[ ! -z "$del_files" ]]
then
svn status | grep "^\!" | sed 's/^\! *//g' > /tmp/delete_files
svn delete --targets /tmp/delete_files
fi
SVN_STATUS_END=`svn st`
# check status
if [ -z "$SVN_STATUS_END" ]
then
# No commit message
MSG="No commit now."
else
# commit message
MSG="$MSG.\r\nBefore:\r\n $SVN_STATUS \r\nAfter:\r\n $SVN_STATUS_END"
# merge commit message
svn commit --username $svn_username --password $svn_pwd -m "$MSG"
fi
# Send Email
USERNAME="Your username BASE64 encoded ASCII"
PWD="Your password BASE64 encoded ASCII"
FROM="MAIL FROM: username@gmail.com"
SUBJECT="Subject: SVN Backup"
TEXT="Commit Message : $MSG"
{
sleep 2
echo "HELO yo"
sleep 2
echo "AUTH LOGIN"
sleep 2
echo "$USERNAME"
sleep 2
echo "$PWD"
sleep 2
echo "$FROM"
sleep 2
# add here your recepients
echo "RCPT TO: <giorgio@gmail.com>"
sleep 2
echo "DATA"
sleep 2
echo "$SUBJECT"
echo ""
echo "$TEXT"
echo "."
echo ""
echo "quit"
} | telnet-ssl -z ssl smtp.gmail.com 465
exit 0