在命令行上使用 SVN 时,我是新手。以前,我通过客户完成了所有工作。
我在我的服务器上创建了一个新的存储库,如下所示:
%svnadmin create myrepo
Run Code Online (Sandbox Code Playgroud)
然而,当我检查它时,主干分支和标签丢失了。
%cd myrepo/
%ll
total 14
229 Jul 28 10:22 README.txt
512 Jul 28 10:22 conf
512 Jul 28 10:22 dav
512 Jul 28 10:22 db
2 Jul 28 10:22 format
512 Jul 28 10:22 hooks
512 Jul 28 10:22 locks
Run Code Online (Sandbox Code Playgroud)
我需要手动创建这些吗?如果是这样,我只是'mkdir trunk',我认为你不应该手动对repo内的文件做任何事情。
谢谢。
有没有办法确定subversion中的最新标签?
对于我部署的应用程序,客户端需要有另一台服务器,以便在实时服务器出现故障时可以访问。已经有一个自动化系统可以将数据库复制到备份服务器。应用程序代码位于 subversion 存储库中,我想编写一个脚本,将代码从 subversion 自动复制到备份服务器。我有一个执行此操作的脚本,但是,我需要手动告诉它要检索的标签。有没有办法让它完全自动化。
服务器正在运行 Redhat。
这是在 Win2k3sp2 上,使用 TortoiseSVN 1.6.5 和 SlikSVN 1.6.3。
我在一个 repo 中有一个文件夹,称之为 /a/b,我想在同一个 repo 中成为 /a/c/d。我试过只是移动文件夹并重命名它,然后提交,显然它会感到困惑,因为 .svn 文件夹认为它仍然在旧名称下,如果它确实有效,它是一个两次提交的事情 /a/ b 被删除,/a/c/d 是全新的,这是不好的,因为那样我就会丢失每个文件所附的历史记录。
我开始四处寻找并找到“relocate”,它带有一个巨大的警告并说服我不要使用它。然后是“切换”,虽然我认为“重新定位”是描述我想做的事情的更直观的方式,但似乎是合适的选择。所以我这样做了,虽然 /a/b 中只有几个文件(比如可能有 8 个文件夹,每个文件夹包含一两个文件),但花了很长时间,现在:
我的问题分为两部分:
我正在使用带有远程存储库的 websvn。此存储库使用https协议。配置完 websvn 后,我进入了 websvn 网页:
svn --non-interactive --config-dir /tmp list --xml --username '***' --password '***' 'https://scm.gforge.....'
OPTIONS of 'https://scm.gforge.....': Server certificate verification failed: issuer is not trusted
Run Code Online (Sandbox Code Playgroud)
我不知道如何指示 websvn 执行 svn 命令以接受和存储证书。有人知道怎么做吗?
更新:
有用!为了让内容井井有条,我更新了 WebSVN 配置文件,将 subversion 配置目录重新定位到/etc/subversion,这是 debian 的默认路径:
$config->setSvnConfigDir('/etc/subversion');
Run Code Online (Sandbox Code Playgroud)
在/etc/subversion/servers我创建了一个组并将证书关联到信任:
[groups]
my_repo = my.repo.url.to.trust
[global]
ssl-trust-default-ca = true
store-plaintext-passwords = no
[my_repo]
ssl-authority-files = /etc/apache2/ssl/my.repo.url.to.trust.crt
Run Code Online (Sandbox Code Playgroud) 首先对我的英语感到抱歉。我已经安装了一个带有 apache2、subversion、svn_dav 和 websvn 的 ubuntu 服务器 10.04.1。(当然还有其他服务,如 php5、mysql 5.1 等)。我已经为我的 svn 配置了多个存储库,每个存储库都有不同的组和用户,例如:
/var/myrepos/repo1 group: mygroup1
/var/myrepos/repo2 group: mygroup2
/var/myrepos/repo3 user: johndoe
Run Code Online (Sandbox Code Playgroud)
在 svn_dav 上可以轻松访问,完美运行,即:http://myserver/svnrepo1仅适用于 mygroup1 上的用户及其 linux 用户和 svn 密码。也适用于其他存储库及其用户和组。但是当我尝试使用 websvn 时,显示所有 repos 而不小心,而不是 mygroup1 上的用户可以查看 repo2(这是我不想做的)。您可以作为 mygroup1、mygroup2 或 johndoe 上的任何用户登录,并登录到所有存储库。
我会努力寻找解决方案,我会发布消息,如果有人能帮我解决这个问题,我会非常感激!!!谢谢大家
我显示我的文件:/etc/apache2/mods-available/dav_svn.conf
<Location /svnrepo1>
DAV svn
SVNPath /var/myrepos/repo1
AuthType Basic
AuthName "Repositorio Subversion de MD"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
<Location /websvn/>
Options FollowSymLinks
order allow,deny
allow from all
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd …Run Code Online (Sandbox Code Playgroud) 我试图在我的一个 subversion 存储库中创建一个分支并不断遇到错误。无论做什么,我不断收到以下信息:
未找到文件:事务“3062-2e6”,路径“/Software/XXXXXX/branches/testbranch”
我注意到上面消息中“3063-3e6”的第一部分是存储库中最后一个成功提交的修订。我的 apache 日志没有提供更多信息:
[Wed Nov 24 14:10:38 2010] [error] [client x.x.x.x] Could not MOVE/COPY /svn/p070361/!svn/bc/3049/Software/SXXXXXX/trunk. [404, #0]
[Wed Nov 24 14:10:38 2010] [error] [client x.x.x.x] Unable to make a filesystem copy. [404, #160013]
[Wed Nov 24 14:10:38 2010] [error] [client x.x.x.x] File not found: transaction '3059-2e2', path '/Software/XXXXXX/branches/testbranch' [404, #160013]
Run Code Online (Sandbox Code Playgroud)
这一切都发生在带有 nginx 前端的服务器上,该前端代理 Apache 以获取 subversion 位。其他存储库能够很好地分支,我能够使用 file:/// 从正在发生的服务器上的命令行创建分支。此存储库的权限与所有其他存储库相匹配,并且磁盘空间不是问题。
我正在寻找一个带有 Web 前端的小型软件版本控制(变更日志)和错误提交系统。我只需要的功能是一个更改日志,用户可以在其中查看他们可以期待的内容和一个微小的错误提交系统。我不需要 SVN 提供的许多功能作为软件版本,因为项目很小,我在本地进行所有开发。
我有一个 SVN 仓库。当我最近提交更改时,反映的当前修订号为 620:
Transmitting file data ...
Committed revision 620.
Run Code Online (Sandbox Code Playgroud)
但是,如果我然后运行,svn info我会得到以下信息:
Path: .
URL: http://www.site.com.testing/repos/site.com/trunk
Repository Root: http://svn.server/repos/site.com
Repository UUID: a9c3a166-39f6-4cfb-8622-fd24eb11034b
Revision: 584
Node Kind: directory
Schedule: normal
Last Changed Author: bob
Last Changed Rev: 584
Last Changed Date: 2012-03-26 18:32:55 -0400 (Mon, 26 Mar 2012)
Run Code Online (Sandbox Code Playgroud)
所以提交一些东西告诉我当前的 SVN repo 是 620,但svn info告诉我当前的 rev 是 584。还svn log显示 584 作为当前(最近的)rev。
如果我在 Windows 中通过 TortoiseSVN 查看 SVN 日志,它会正确地将修订版 620 显示为当前修订版。
我是否缺少有关如何svn info和svn …
我想知道是否有人可以帮助我。我们最近将 Subversion 存储库从 Windows 上的 VisualSVN 服务器迁移到 CentOS 上的 subversion 服务器。
迁移成功,但是我们收到以下错误消息
Error REPORT of svn'/svn/MangoRepository/!svn/vcc/default': Could not read chunk size:
Error connection was closed by server (http://servername)
Run Code Online (Sandbox Code Playgroud)
现在解决这个问题的方法是简单地对 repo 执行更新,它会继续在停止的地方。
我只是想知道是否有人对此进行了永久性修复,因为向 60-70 名开发人员重复我的自我可能会非常令人沮丧。
我所做的:
我已经在 Windows 2008 服务器上成功安装并配置了支持 LDAP 的 Subversion Edge 3.1.2。我已经配置了 LDAP 用户并且能够使用 LDAP 凭据来处理存储库就好了。没有任何问题。效果很好!
我想做的事:
我已经搜索了几个小时,希望能找到一些关于如何配置 Subversion Edge 服务器以要求客户端证书对 LDAP 环境进行用户身份验证的信息。我还没有找到任何让我知道如何去做的东西。我知道有些 SVN 客户端能够提示输入 CAC 证书,但我不知道如何设置我的服务器以要求它。
注意:CAC 身份验证已在 Windows 环境中设置并运行。我有启用了 CAC 支持的 TortoiseSVN 客户端。
期望的结果:
当运行需要对我的 Subversion 边缘服务器进行身份验证的 svn 命令时,我希望它提示我输入我的 CAC 证书,而不是我的 Active Directory 用户名和密码。
如果有人对此有任何信息,我将不胜感激。
编辑:我仍在挖掘,所以如果我发现任何东西,我会用我发现的东西更新这个问题。我已经取得了一些进展,我相信我一直在寻找错误的信息。这显然是一个 Apache 配置问题。我将我在示例 Apache 配置中看到的 SSLVerifyClient require 添加到我的 httpd.conf 中,现在我的 SVN 客户端提示我输入证书文件而不是用户名和密码。
2012 年 9 月 14 日更新
好的,我已经开始工作了。这不是一个颠覆问题,而是一个 Apache 配置问题。我已经走上了使用 SSPI 模块的道路,并且大部分时间都按照我想要的方式工作。Internet Explorer 在浏览受 SSL 保护的站点以浏览 svn 存储库时仍然存在一些问题。它会提示我输入 CAC 证书就好了,然后我得到一个页面,说 Internet Explorer …
svn ×10
tortoisesvn ×3
linux ×2
apache-2.2 ×1
centos ×1
centos6 ×1
certificate ×1
https ×1
nginx ×1
scripting ×1
web-server ×1
windows-7 ×1