我正在尝试使用EC2用户数据脚本shebang功能来更新已在实例的EBS映像上检出的SVN存储库,然后运行其他一些命令。在svn up
命令期间,脚本始终崩溃,使repo中的大部分或全部文件处于锁定状态。 svn up
命令运行后没有任何命令。
我的用户数据脚本如下所示:
#!/bin/bash
echo "about to update..." >> /home/ubuntu/test.log
svn up /home/ubuntu/path/to/repository
echo "update finished" >> /home/ubuntu/test.log
svn up未正确完成,第二个echo
命令未执行。
我没有看到任何日志中的任何错误(我不确定我应该搜索哪些日志,但我已经查看了所有明显的日志)。任何想法为什么svn会失败?
答案 0 :(得分:0)
权限问题?尝试:
sudo svn up ...
答案 1 :(得分:0)
我终于想出办法让这个工作。我没有直接在我的用户数据脚本中调用svn up
,而是编译了一个简单的C应用程序来执行svn并在用户数据脚本中执行它:
#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
int main(void) {
execl("/usr/bin/svn", "svn", "update", "/path/to/repository/", (const char *) NULL);
return(EXIT_SUCCESS);
}
不幸的是,我不太清楚为什么会这样。我想尝试这个,因为我们在SVN post-commit钩子中遇到了类似的问题,需要相同的解决方案。