ios - 将 Head 版本从 http 获取到 bundle 版本

标签 ios xcode shell svn

我需要从本地存储库获取主要版本。 所以我使用:

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

但它得到了最后的修订,但没有得到头部。

在我看到的版本中enter image description here

我还发现:

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 从 svn info 输出中轻松提取修订值,而不是通过两个管道连接到(糟糕的)sed ... | awk '/Revision/{ print $2 }' (TBT!!!)

注意

对于所有版本标记任务,我更喜欢不要重新发明轮子,而是使用常见的知名解决方案,例如 SubWCRev|SVNRev

关于ios - 将 Head 版本从 http 获取到 bundle 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25600151/

相关文章:

ios - Swift 和 Autolayout(专门针对 iAd)

ios - Swift:NSString 无法转换为 'String'

xcode - 继续获取线程 1,无法在 Swift 中旋转球

iphone - iToast从不消失在我的iPhone应用程序中

linux - 如何在shell脚本中提取字符串

java - 远程执行shell脚本时找不到"readOnly"等符号

ios - Worklight 推送 - iOS 通知中心删除

ios - Firebase Phone Auth 以及帐户关联

ios - 如何修复 "cordova build ios error code 70"

linux - 比较 txt 文件中的两个目录和输出与 linux 中不同的文件名