我需要从本地存储库获取主要版本。 所以我使用:
svn update 'path' --non-interactive --no-auth-cache --username here_username --password here_password
而且有效!在控制台中:
Updating 'path':
At revision 29.
如何得到这个29号?
我也试试:
REV=`/usr/bin/svnversion -nc 'path' | /usr/bin/sed -e 's/^[^:]*://;s/[A-Za-z]//'`
echo $REV
结果是23
但它得到了最后的修订,但没有得到头部。
在我看到的版本中
我还发现:
REVISION = $(svn info -r HEAD 'http://login:password@url' | sed -n "/Revision/p" | sed "s/[^0-9]//g")
echo $REVISION
但是不知道为什么授权失败。
那么如何使用 shell
脚本获取 head 版本?
最佳答案
如果
svn up
中的path
是您的工作副本中的某个节点(它是),您将不会结果是存储库的 HEAD,但是存储库中最后提交的此目录的修订版(HEAD 可能是在另一个路径上提交的稍后修订版)你的
svnversion
调用很奇怪(我也懒得剖析 sed) - 如果你想要 repository 的 HEAD 并且有干净的工作它的副本,最简单的方法就是svnversion .
在 WC 中(-n
可以,如果你想将它放入变量中),而不是-c
和相对路径(revision 是全局的)
只需比较我的和你的 svnversion 对于这样的工作副本的结果
svn ls -v
5 lazybadg фев 07 2014 ./
2 lazybadg ноя 28 2013 branches/
2 lazybadg 146 ноя 28 2013 readme.textile
1 www-data ноя 27 2013 tags/
5 lazybadg фев 07 2014 trunk/
如您所见(并且会同意我的看法,是吗?)此 WC|repo 的 HEAD 必须为 5。但是,您的 svnversions 可能会给出
svnversion -nc trunk
2:5
svnversion -nc branches
2
还有我的短 svnversion -n
在任何(干净的)工作副本树中
>svnversion -n
5
>cd branches
>svnversion -n
5
svn 信息 URL
-r HEAD
可以省略(HEAD 是默认版本
)--username here_username --password here_password
比 URL 编码授权更有效- 与 SVN 无关 您可以使用简单的短 awk
svn info 从
(TBT!!!)svn info
输出中轻松提取修订值,而不是通过两个管道连接到(糟糕的)sed ... | awk '/Revision/{ print $2 }'
注意
对于所有版本标记任务,我更喜欢不要重新发明轮子,而是使用常见的知名解决方案,例如 SubWCRev|SVNRev
关于ios - 将 Head 版本从 http 获取到 bundle 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25600151/