linux - 无法连接到存储库 SVN
问题描述
我写了一个预提交钩子来检查trunk version.txt 文件与标签中的version.txt 相比是否更新了。当我在控制台中运行脚本时,一切都很好,但是当我尝试提交时,我得到了这个
身份验证领域:http://localhost:80 Subversion Repository Password for 'www-data': svn: E070014: Unable to connect to a repository at URL ' http://localhost/svn/myrepo2/tags '
如果 --force-interactive 关闭,这也是
svn: E215004: 认证失败,交互提示被禁用;查看 --force-interactive 选项
我逐步检查了所有内容,似乎这就是导致问题的那一行:
tag=$(svn list /some/path/tags --force-interactive | sort -n | tail -n 1 )
是否有任何替代 svn ls 来检查最新标签或文件夹标签中的文件?
#!/bin/bash
#get latest tag
tag=$(svn ls /some/path/tags --force-interactive | sort -n | tail -n 1)
#get content of file from the latest tag
fileFromTag=$(svn cat /some/path/tags/$tag/version.txt)
#get content of file from trunk
file=$(svn cat some/path/trunk/version.txt)
#compare current file with file from latest tag
if [ "$fileFromTag" == "$file" ]
then
echo "Update version.txt"
exit 1
fi
这是存储库结构
tags/
1.1.0/
version.txt
1.1.3/
version.txt
1.1.5/
version.txt
1.1.6/
version.txt
1.2.0/
version.txt
rel_1.0/
version.txt
trunk/
version.txt
解决方案
该错误意味着svn
客户端未对服务器进行身份验证,并且没有缓存凭据。但主要问题是您在挂钩脚本中运行的命令:
- 考虑
svn
从命令行客户端切换到svnlook
. - 如果由于某种原因您必须
svn
在挂钩中使用命令行客户端,请使用 file:// URL 而不是 HTTP(S) URL。该钩子在与您的存储库和服务器相同的计算机上本地运行,因此直接访问存储库是有意义的。
推荐阅读
- c++ - Windows 10 上的 Visual Studio 2012 C++ typedef 枚举信息消失
- drupal-7 - 最近博客的编辑块,Drupal 7
- angular - 在 HTML 元素事件处理程序中访问指令范围
- c# - Visual Studio 2017 中的 Newtonsoft Json.NET 性能问题
- python - 如何在循环中每 x 步创建一个新列表?
- javascript - Ionic,Firebase - 如何在 ngFor 中执行 ngFor
- android - 如何在服务中使用 Fuse android 位置提供程序?
- python - Find last element of a list that fits a critera
- angular - Angular 6中的电子邮件验证?
- python - 使用 pandas 系列进行矢量化 - 多个“复杂”布尔分类 - 运行时优化