bash – 编写一个更新已提交代码副本的SVN钩子
发布时间:2020-12-15 18:28:00 所属栏目:安全 来源:网络整理
导读:我有一个SVN存储库,其中存储了很多子项目.现在在我的提交后,我只需遍历机器上所有可能的文件夹,然后对每个文件夹运行svn update: REPOS="$1"REV="$2"DIRS=("/path/to/local/copy/firstproject" "/path/to/local/copy/anotherproject" ... "/path/to/local/c
我有一个SVN存储库,其中存储了很多子项目.现在在我的提交后,我只需遍历机器上所有可能的文件夹,然后对每个文件夹运行svn update:
REPOS="$1" REV="$2" DIRS=("/path/to/local/copy/firstproject" "/path/to/local/copy/anotherproject" ... "/path/to/local/copy/spam") LOGNAME=`/usr/bin/whoami` for DIR in ${DIRS[@]} do cd $DIR sudo /usr/bin/svn update --accept=postpone 2>&1 | logger logger "$LOGNAME Updated $DIR to revision $REV (from $REPOS) " done 问题是,当我提交其中一个项目的子文件夹时,这是缓慢而冗余的.我想知道是否有更好的方法来确定我应该使用哪个DIRS并且只更新那个. 有办法做到这一点吗?据我所知,无法确定repo的哪个部分已提交,因此需要更新哪个目录. 是为每个项目创建单独存储库的唯一选择吗? (可能应该从一开始就这样做,如果是的话……)
# svnlook dirs-changed -r 40270 /path/to/the/repo project1/foo/bar 尝试这样的事情: #!/usr/local/bash4/bin/bash typeset -A IP typeset -A DOCROOT PROJECTS="project1 project2" IP=([project1]="ip1" [project2]="ip2") DOCROOT=([project1]="/var/www/html/project1/" [project2]="/var/www/html/project2/") REPO="$1" REV="$2" USER='deployer' PROJECT=`svnlook dirs-changed -r "$REV" "$REPO" | awk -F "/" '{ print $1 }'` ssh -t "$USER@${IP[$PROJECT]}" "cd ${DOCROOT[$PROJECT]} && svn up" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Docker:如何修复“已经被其他客户端拉取的图层”.等候”
- Angular 4:“AbstractControl”类型上不存在属性“push”和
- 为什么sbt会说“糟糕的符号引用……”用ScalaTest进行测试?
- 利用ADB 协议建立PC与手机端本地unix套接字的连接
- 如果我们可以使用纯scala,为什么在playframework 2(scala)中
- Scala – 作家Monad是否与国家Monad有效地相同?
- JAX-RS 简化 REST 学习
- bash – docker:shell脚本中的参考格式无效
- vim – 覆盖colorscheme
- angularjs – 有可能改变github页面寻找index.html的位置吗