我正在尝试使用自动脚本,该脚本将登录SVN,更新我的源代码,使用这些脚本创建tarball并将它们scp到远程主机。
这里的问题是,对于每次登录SVN(即使是结账或更新),我们都要求输入我们的密码。密码输入的自动化,我能找到的唯一方法,就是使用expect来解决这个问题。
是否有任何期望的脚本,可以处理SVN和scp检测并将密码提供给SVN然后再提交给SCP?
我使用以下内容:
spawn svn [lindex $argv 0]
expect " password: $"
send "$password\r"
expect {
" password: $" send "$password\r"
"^At revision "
"^Updated to revision "
}
我从命令行传递密码和up命令,但如果有人有权访问历史记录,那么就存在安全威胁。下面提到的答案不满足我的先决条件,我现在也无法进行出口[其他一些安全问题: - (]
答案 0 :(得分:2)
如果您使用svn + ssh协议访问SVN repo,则可以使用SSH密钥和ssh-agent来管理握手,因此您不需要涉及密码。
答案 1 :(得分:1)
<强> linuxbashscript.sh 强>
svn up /path/to/local/copy
tar -cf backup.tar /path/to/local/copy
scp backup.tar user@192.1.1.1:/path/on/remote/host
甚至更好的用户svn导出将排除所有.svn目录。
svn export /path/to/repo /path/to/exported
tar -cf backup.tar /path/to/local/copy
scp backup.tar user@192.1.1.1:/path/on/remote/host
答案 2 :(得分:0)
我个人会使用ANT来完成所有这些任务,然后你可以根据需要调用你的ant脚本。 Ant为svn和scp以及许多其他构建自动化类型任务预先配置了任务。
答案 3 :(得分:0)