Articles of svn

适合个人使用的最佳SVN服务器configuration

我有一个桌面机,目前设置为SVN服务器。 目前我已经设置为可通过http访问(使用Apache),但仅限于本地networking,因为我对处理涉及到的安全问题没有把握。 正如我所见,我的两个选项是SVN over SSH,并在维护SVN的“本地networking”configuration的同时设置VPN。 有没有人对这两个装置的利弊有一个强烈的想法? 特别是,我从来没有尝试build立一个个人VPN,所以我不知道OpenVPN等通常涉及多less痛苦和费用。 [旁白:我不知道这是否更适合超级用户,因为它是个人使用的服务器 – 如果是的话,是否有人可以移动它? 谢谢!]

如何从现有的svn转储文件中删除空的修订版本?

我有一个svn转储文件,其中包括“空”修订(这是由svnsync创build时只同步一个现有的存储库的子目录)。 因为我想使用svnsync的仓库作为新的主(不需要再次同步),我想摆脱所有空的修订。 不幸的是,通过svndumpfilter运行转储似乎并没有删除空的修订版本,可能是因为svndumpfilter只查看它自己用–exclude选项清理的修订版(另请参见这里 ) 我也在研究svoiceptool ,但似乎并没有提供这个function。 是否有可能以任何其他方式过滤这些修订?

SVN服务器停止工作正常(403 Forbidden)

好吧,首先,我已经search了很多关于这个问题,但没有find任何解决scheme…我已经在这里和在ServerFaultsearch,但没有发现任何东西,所以我最终发布这个问题在这里(不确定是否在这里或在ServerFault,对不起)。 所以这里的交易:我们有一个Windows 2003服务器运行没有问题。 我们一直使用Visual SVN服务器作为我们的Subversion服务器,直到现在它工作得很好。 我们rest了几个星期,所以我们根本没有使用SVN。 今天,当我试图提交我得到的东西: 服务器发送意外的返回值(403 Forbidden)以响应[repository url]的OPTIONS请求 我们使用TortoiseSVN作为我们的svn客户端,但问题似乎在服务器上。 我们尝试创build一个新的存储库并导入新的文件,同样的错误。 我们尝试通过RDC从服务器本身访问SVN服务器,并尝试通过控制台(svn checkout)和其他命令检出某些内容…所有事情都会导致该错误。 有些人说这是URL上的一个大小写敏感的问题…但是这不是我们的情况…我仔细检查了URL,他们没事…(无论如何,它们被存储在龟的历史,所以这并没有改变)。 有一点需要特别指出的是,那里的人有同样的问题,没有使用Visual SVN(这实际上只是一个简单的方法来build立一个Subversion服务器在2次点击,这是没有什么不同于任何Subversion服务器)。 所以我不知道这个问题是否是Visual SVN本身。 我们失去了…任何有用的信息将非常感激。 编辑/解决scheme:我在authz文件中有一个错误的条目。 它试图给一个被删除的组的权限(我认为VisualSVN没有删除authz上的条目,但它删除了组),所以我删除了条目,现在它正在工作。 谢谢

Samba,Apache和SVN。 获得权限

我有两台机器: Windows客户端(开发机器) Linux Web服务器(Ubuntu) 在Linux服务器上,我安装了Apache,Samba和SVN。 我创build了映射到htdocs /目录的samba共享,以便我可以从Windows访问networking文件。 以下说明了我的工作stream程: 从Linux服务器上的命令行,我将远程服务器的Web项目的工作副本签出到本地Linux服务器的htdocs目录中。 在Windows机器上,我访问这些文件(使用samba),并在我的编辑器中进行编辑并在Web浏览器中进行testing 回到Linux机器上,我将我的工作签入到远程服务器。 我现在的问题是,目前我能够通过Samba编辑Windows盒子上的文件,我必须将文件的所有者更改为nobody(apache用户),并将Samba共享设置为使用SHARE权限。 当我尝试使用SVN提交和更新等我不能因为我的Linux用户不是'没有',并没有权限这样做。 所以我必须成为根做一个SVN [命令],然后将所有文件更改回“无人”,以便我不能在Windows上编辑。 我希望能够做的是让我的本地Linux用户拥有Web文件,这将使SVN命令工作,Windows(通过samba)也可以使用同一个用户。 我怎样才能使这个工作,有没有办法让Windows和Linux用户匹配?

应该调用SVNSYNC阻塞或不在后提交挂钩?

这是我的第一个问题在这里,实际上一个从StackOverflow移动,因为我认为这个网站将更加与主题同步。 我已经设置了我的存储库镜像,它很好地工作,但最近我有一个问题。 目标存储库留下一个未发布的锁不知何故 – 从我读这可能是由中止svnsync操作引起的,我怀疑这可能是因为在我的后提交钩我执行svnsync在阻塞模式,而不是它通过&进入后台。 我这样做是为了让用户可以确定,如果提交完成,那么它现在在所有的仓库,但也许它会引起他们击中取消和停止提交钩子的风险? 我找不到明确的指导方针或build议,哪一个更好或最好的做法是什么,甚至点击取消可以导致中止后提交挂钩和同步执行 – 在大多数地方,我看到人们使用&踢的同步在后台 – 这是否防止locking损坏的情况下,用户在同步进行时按下取消提交他的提交? 如何确保两个存储库真正同步或报告问题? 你需要一个单独的通知机制吗? 更新: 从以上两个选项中,我决定select第三个;) 我在后台调用了svnsync,但是同时我还在等待它完成: svnsync … & wait $! 我认为这很好地join了两全其美的领域,但是时间会performance出如何有效 – 请让我知道您对整个问题的看法,以及您可能需要分享的build议。 更新2:它没有解决这个问题 – 显然当挂钩被杀害它也杀死它的subprocess:( 有没有人有任何提示如何解决这个问题? 我真的希望我的用户能够知道并相信当他们看到提交完成时,这意味着所有的网站都是同步的。 更新3:时间stream逝,问题出现 – 大约2年我的方法工作得很好 – 我解雇了同步非阻塞,并没有等待 – 上周我们的镜像爆炸可能是由于2个不同的提交用户在同一秒(都成功的主:)) – 结果是svnsync无法正确复制修订版本属性,但也创造了一些奇怪的修订(它基本上复制一个提交,并创build一个单独的修订,并将其归因到svnsync用户)。 然后抱怨“有人”直接对镜像库进行更改。 没有办法去除提交在SVN我不得不从0到HEAD-2,这对于一个162GB的强大的仓库花了很长一段时间。 现在 – 几天后恢复操作 – 我修改了一下我的同步。 在提交钩我只是触摸一个触发器文件。 在cron作业中,每一分钟我都检查这个文件的存在 – 如果存在,我得到一个“同步锁”并执行提交。 这保证了系统是合理的响应,svnsync从来没有被调用过一次 – 一旦时间提供更多的数据,我会更新这个信息。

如何自动调整subversion版本库文件权限以便使用w。 阿帕奇/ DAV?

我build立了一个可以通过Apache / DAV访问的subversion服务器,并且在两天前搞砸了存储库文件许可之后,我开始想知道是否有更好的方法来做到这一点,而不是像我这样做。 这个版本库是由一个专门的用户和组织拥有的,Apache作为习惯的www:www用户运行,因此它没有对版本库的写入权限。 到目前为止,我的解决scheme是将www用户添加到svn组中,并确保存储库中的文件是可写组的。但是从现在起六个月,我将创build一个新的存储库,忘记修复文件权限,只要有人试图提交一些东西,就会收到一些电子邮件。 有没有其他方法可以做到这一点? 也许迫使svnadmin创build存储库组可写在第一个地方? (如果你想知道服务器是FreeBSD 6.2的话)

有没有一种方法来使用从转储文件加载的存储库svnsync?

我创build了一个新的存储库A. 将svnsync init与存储库B作为源。 从B(从1801年的Rev 0到1690)加载一个转储文件到A. 然后尝试运行svnsync。 我的想法是,svnsync可以拿起转储文件离开的地方。 这是错误的: svnsync: Destination HEAD (1690) is not the last merged revision (0); have you committed to the destination without using svnsync? 有没有办法让svnsync认为它已经同步到当前的版本?

我怎样才能忽略一个Subversion提交钩子?

我是旧版Subversion实施的pipe理员。 我们有几个粗糙的提交钩子,我需要暂时忽略(以允许我修复一些回购中的事情)。 有没有办法忽略提交钩子? 在每个命令的基础上? 从服务器(我有根访问)使用其中一个pipe理工具? 甚至在短时间内将其全部禁用?

如何在Mac OS X中正确安装Subversion?

一个任务已经出现,为一组mac os x用户(最新的mac os版本)安装了最新的subversion。 我已经尝试手动从subversion.tigris.org,“opencollabnet二进制”( http://downloads.open.collab.net/binaries.html ,通用Subversion 1.6.3二进制文件MAC OS X(32和64位)“)。 它通过.pkg安装程序安装好,但使用'svn'命令后,我很惊讶地看到一个旧的1.4.4版本与macos捆绑在一起。 看来,安装新的颠覆不会取代旧的。 什么是“正确的”方法来确保“svn”命令总是使用新安装的subversion? 我可以创build一个符号链接或者添加/ opt / bla-bla-bla /颠覆path,但是恐怕这种粗暴的黑客攻击可能会破坏一些东西。

Subversion – 不受支持的mergeinfo的检索

我最近通过一个back-port在Debian Etch上更新了我的Subversion包到1.5.1。 我已经通过了我所认为的所有适当的步骤,但是当我尝试合并时,无法通过以下错误消息: 不受'。'支持的mergeinfo的检索 '。' 是不重要的,因为我得到相同的消息,无论我SSH'd到服务器上或通过Windows使用TortoiseSVN。 我会带你通过我所做的升级和testing一步一步: 更新Subversion 将以下行添加到/etc/apt/sources.list中: deb http://www.backports.org/debian etch-backports主要的贡献是非免费的 然后跑 apt-get -s -t etch-backports安装subversion 检查了Subversion安装的版本 运行完成 svnadmin – 版本 并得到以下输出: svnadmin,版本1.5.1(r32289) 编译2008年12月11日,18:10:14 检查客户端也使用 svn –version 并得到以下 svn,版本1.5.1(r32289) 编译2008年12月11日,18:10:14 好的,所以目前看起来都不错。 现在我只需要升级存储库。 经过大量研究,最简单的做法似乎是转储存储库,然后重新加载。 所以这就是我所做的: svnadmin dump / var / svn / repo> repo.dump rm -aR / var / svn / repo / * svnadmin创build/ […]