我在 Windows Server 2003 机器上有一组私有的 Subversion 存储库,开发人员可以通过 svn:// 协议通过 SVNServe 访问这些存储库。目前,我们一直在使用每个存储库的authz和passwd文件来控制访问,但是随着存储库和开发人员数量的增加,我正在考虑改用 ActiveDirectory 中的凭据。我们在一家所有的 Microsoft 商店中运行,并在我们所有的 Web 服务器上使用 IIS 而不是 Apache,所以如果可能的话,我更愿意继续使用 SVNServe。
除了可能之外,我还关心如何迁移我们的存储库,以便现有用户的历史记录映射到正确的 ActiveDirectory 帐户。还请记住,我不是网络管理员,而且我对 ActiveDirectory 并不十分熟悉,因此如有必要,我可能需要通过其他人来获取在 ActiveDirectory 中所做的更改。
我有哪些选择?
更新 1:从SVN 文档看来,通过使用 SASL,我应该能够让 SVNServe 使用 ActiveDirectory 进行身份验证。澄清一下,我正在寻找的答案是如何配置 SVNServe(如果可能)以使用 ActiveDirectory 进行身份验证,然后如何修改现有存储库以将现有 svn 用户重新映射到他们的 ActiveDirectory 域登录帐户。
更新 2:似乎 SVNServe 中的 SASL 支持在插件模型下工作,文档仅作为示例显示。查看Cyrus SASL 库,它似乎支持多种身份验证“机制”,但我不确定哪一种用于 ActiveDirectory 支持,也无法找到有关此类问题的任何文档。
更新 3:好的,看起来为了与 ActiveDirectory 通信,我希望使用saslauthd而不是sasldb作为auxprop_plugin属性。不幸的是,根据一些帖子(可能已经过时和不准确),saslauthd似乎不是在 Windows 上构建的,这样的努力被认为是一项正在进行的工作。 …
当使用 TortoiseSVN 之类的东西时,你可以使用它的 repo-browser 来浏览存储库并做一些事情。您可以做的一件事是在存储库中创建目录。通常,您必须检出 repo,然后创建并添加目录,最后提交它们以完成此操作。但是您可以通过一个命令在 repo-browser 中完成它。
是否可以从命令行执行类似的操作?
看起来自定义构建的 svn 不适用于 http URL。在网上搜索后,我明白我需要安装我所做的霓虹灯库。在我构建 subversion 时安装 neon 后,它在 make 时失败。我尝试干净并再次制作,仍然有问题。除了已安装的 subversion 版本仍然存在于 /usr/local/subversion 之外,没有任何变化。知道如何前进吗?
操作系统:红帽 5
[root@mercury lib]# svn --version
svn, version 1.8.0 (r1490375)
compiled Jul 10 2013, 20:07:32 on x86_64-unknown-linux-gnu
Copyright (C) 2013 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository access (RA) modules are available:
* ra_svn : Module for accessing a repository using …Run Code Online (Sandbox Code Playgroud) 我多年来一直是 SVN 的用户,我不能说我对此非常满意。几天前,我的搭档让我看一看 git,说“它具有更好的性能,更容易合并和分支”。
我一直在阅读一些 git 与 SVN 比较文章,如果人们可以总结使用这两种版本控制系统的优缺点,我会很高兴。
现在我正在调查那些从一个系统切换到另一个系统并听取主观意见的人。
我自己知道我真的很喜欢 SVN 的工作方式,有一个人们可以从中结帐的中央存储库,知道我可以从中部署一个实时开发副本和一个实时生产副本,但有时我们会为排序冲突或其他错误而头疼,每次我们需要比较或查看文件的历史记录时,我们都需要处理网络延迟。
另一方面,拥有分布式平台听起来也很头疼,您如何控制访问?你有一个可以从中推送和更新的中央存储库吗?
感谢您对这个问题有更多的了解。
我们有一个 Apache Subversion 服务器,我们在其中存储(除其他外)所有文档。我们在 svn 中有很多 Word、Excel、PDF 等文档,我们所有的用户都使用 TortoiseSVN 作为他们的客户端界面。许多这些用户还将通过网络浏览器浏览存储库,(不幸的是)通常是 Internet Explorer。
最近我们开始试用 Office 2010(来自 2003 年),发现使用 IE 浏览时,repo 中的文档打开方式不同。它不是 IE 下载文件然后将其发送到适当的应用程序(之后它应该只是存储在本地的临时副本),而是将文档的URL发送到应用程序。该文档由应用程序下载,然后将其视为来自 Sharepoint 服务器,即应用程序尝试锁定它,然后将任何保存的更改自动上传回服务器。
从谷歌搜索来看,似乎很多人都想要这种行为。但是,我们想禁用它 - 它不适合我们现有的流程。我该怎么做呢?
我对客户端计算机没有太多控制权,因此涉及为每个客户端禁用所有 Office 文档协作功能的解决方案并不是我想要的。此外,除了禁用 IE 中的 Office 文档缓存处理程序加载项之外,我找不到太多可以做的事情。唯一可行的客户端选项是那些专门为我们的命名服务器禁用此功能但为其他服务器保留此功能的选项。
这样就剩下服务器端解决方案了。我猜 Office 认为 svn 服务器具有 WebDAV 支持,因此会进入类似 Sharepoint 的文档管理工作流。有没有办法在不禁用服务器上的所有 WebDAV 支持的情况下停止这种集成(假设我们甚至可以这样做)?我们实际上将 svn 的自动版本控制用于其他目的,因此它是必需的功能。我找到了关于禁用该功能的讨论,如果它实际上是一个 Sharepoint 服务器,但事实并非如此!我对这种事情的工作原理(即 Office 客户端识别服务器上的 WebDAV 支持)的理解非常有限,所以如果可以,请进一步解释。
如果重要,服务器设置是:
Apache v2.2.8 和 Subversion v1.4.6 在 Ubuntu Hardy 8.04 上。
sharepoint internet-explorer svn microsoft-office-2010 apache-2.2
这仅在大型提交时发生(导致提交失败):
来自 Apache 虚拟主机配置的 Revelant 部分
<LimitExcept 获取 PROPFIND 选项报告>
需要有效用户
</限制除外>
大卫·斯文
SVNPath /home/svn/
提交结果:
传输文件数据.......................svn:提交失败 (详情如下): svn:PUT '/!svn/wrk/48583f7d-0e01-410d-8941-33d2ba3574b4/WAP/.../htdocs/images/rt.gif': SSL 协商失败:SSL 错误:解析 tlsext (https://...)
我在这里找到了对它的引用:http : //code.google.com/p/support/issues/detail?id=1395
声明 OpenSSL 应该使用 TLS 扩展进行编译,但在我的情况下,它在开始时不会出错,只是在大量提交时出错。
有任何想法吗?谢谢
您对相对完整的 SVN 签入通知系统有什么建议吗?
我正在寻找允许更改存储库文件摘要和实际差异的内容在提交发生时通过电子邮件发送给开发团队的所有成员的东西,也许带有指向 ViewVC 或其他地方的完整受影响源文件的链接. 那是可选的。
我绝对希望将实际的差异/代码摘录整齐地划分开来。没有人会看这些东西(好像他们无论如何都会看:-),如果它只是从一开始就堆满了难以理解的代码片段的大而鲁莽的转储。原则上,我只想查看修订号、摘要、提交的用户以及受影响的存储库文件列表。
我花了一点时间研究编写自己的代码的可行性,虽然我看到 SVN 有“钩子”可以精确地以这种方式捕获各种事件,但得到一些运行良好的东西似乎是一项相当复杂的任务。相当肯定存在这种效果的开源软件包,我想知道你们中是否有人能帮我省去弄清楚哪些是好的哪些是坏的麻烦。我正在寻找一些相当容易设置并且不需要很多时间的东西;我很想花时间学习一个非常全面的系统的来龙去脉,但我也必须实际进行开发。
非常感谢大家提前!
编辑:我知道 Sourceforge 在这方面做得很好。我在几个 -dev 列表中,我经常收到这些消息。但我不能真正将 Sourceforge 用于我正在从事的各种项目。
进行 Subversion 备份的最佳方法是什么(在基于 Debian 的服务器上)。
是使用svnadmin吗?
svnadmin dump /path/to/reponame > reponame.dump
Run Code Online (Sandbox Code Playgroud)
或者也许只是为了 tar 存储库所在的目录?
tar -cvzf svn.backup.tar.gz /var/subversion/
Run Code Online (Sandbox Code Playgroud)
以上各有什么优缺点?
谢谢约翰
更新:这是一个只有少量存储库的小型服务器。所以增量备份可能不需要,我认为最好专注于保持简单。
更新:我使用 packs 包装器脚本(它又是 svn-hot-backup 的包装器)进行完整备份,然后在另一台干净的计算机上进行完整恢复。但是我删除了“SVN_HOTBACKUP_NUM_BACKUPS=10”部分,因为它对我不起作用。
请注意,我觉得这有点简单,结果非常接近 tar 目录。但正如 Manni 在这里指出的那样,使用 svn-hot-backup/"svnadmin hotcopy" 是一种更可靠的方法,因为如果您不走运,tar 可能会不时创建损坏的备份。
[02:48][root@server:~] ps ax | grep svn 23986 ? Ss 0:00 /usr/bin/svnserve -d -r /srv/svn 正如你从参数中看到的,我的 svn 根目录是 /srv/svn。
现在,来自远程机器的一些魔法......
这有效:
> svn co svn://svn-user@domain.com/test-repo
Run Code Online (Sandbox Code Playgroud)
但这不是:
> svn co svn+ssh://svn-user@<putty-session-name>/test-repo
'No repository found in 'svn+ssh://svn-user@<putty-session-name>/test-repo'
Run Code Online (Sandbox Code Playgroud)
玩耍的几个小时,我发现appearantly如果我使用ssh隧道,我能够得到使用以下我的回购:
> svn co svn+ssh://svn-user@<putty-session-name>/srv/svn/test-repo
Run Code Online (Sandbox Code Playgroud)
...这意味着我应该指定到 repo 的完整物理路径。嗯?
svn ×10
apache-2.2 ×2
svnserve ×2
backup ×1
debian ×1
email ×1
gentoo ×1
git ×1
ldap ×1
repository ×1
sharepoint ×1
ssh ×1
tortoisesvn ×1
windows ×1