linux - 关于 SVN 在 Linux 上的导出功能的几个问题

标签 linux svn command-line ftp tortoisesvn

我做了一些功课,虽然我可以回答以下所有关于在 Windows 上导出 SVN 存储库(使用 VisualSVN 服务器)的问题,但我完全迷失在 Linux 上,因为我是那里的新手。

我想在 Linux 上使用 SVN 的导出功能,以便在每次提交存储库时更新网站。但这也存在一些问题。

我读过这三个: How to use "svn export" command to get a single file from the repository? http://www.duchnik.com/tutorials/2011/07/02/svn-command-reference http://www.picksourcecode.com/ps/ct/161055.php

并想出了在提交后 Hook 中使用的以下命令:

svn export --force svn://localhost/repository_name /share/Web/projects/website

问题:

  1. 任何人都知道,为什么它不起作用?更改已提交到存储库,但操作以“提交后 Hook 失败(退出代码 255)且无输出”结束。并且提交后 Hook 似乎没有被触发,因为目标网站没有更新。我已经检查(甚至双重检查)该命令本身就像一个魅力(当从命令行调用时)。它仅在提交后 Hook 内失败。我试图在此文件的末尾添加“exit 0”。当然它是可执行的。没有运气。还是试了很多次,还是一样的错误码。

  2. 为什么这个操作有效,即使我没有提供用户名和密码作为参数?存储库中的“passwd”文件已正确设置,来自外部客户端的任何操作都需要提供用户名和密码,否则将失败。 SVN 中的一些错误?

  3. 有什么方法可以限制导出到目标的文件仅更改/添加/删除,而不是在每次提交后导出整个存储库?

  4. 是否可以通过 FTP 而不是 QNAP 的本地路径执行完全相同的操作(导出)到外部服务器?

对于第三点和第四点,我尝试使用来自 SourceForge 的 svn2web 工具,但这是一个相当糟糕的主意,而且它不起作用。它使用提交前钩子(Hook)而不是提交后 Hook ,这意味着其中的任何错误都会阻止开发人员提交他们的工作(在我的例子中——提交后——更改被提交,只是不传播到目的地)。他们的预提交 Hook 在我的服务器上失败(与上面第一点相同的错误消息),他们将“svn2web”属性添加到文件夹属性的方法(解决方案)可能适用于纯 Linux Subversion 客户端,但在使用时似乎完全失败Windows 上的 TortoiseSVN 作为 SVN 客户端。

我想知道,如果问题 1(和 2-3,也许是 4)的解决方案不是在/share/Web/projects/website 中设置本地工作副本并使用 CRON 定期更新此副本存储库?这将始终只“导出”实际更改,如果没有 poper 登录名和密码,可能会失败。但这似乎是在重新发明轮子或强行打开已经打开的大门。

提前感谢您的帮助。

最佳答案

一些简短的回答:

  1. 我认为您以不同于 SVN 守护程序 (svnserve) 用于运行 Hook 的用户身份运行此命令。其他用户(由 SVN 使用)可能没有获得运行导出所需的所有权限。

  2. 很遗憾,我不知道。必须与您安装的 SVN 相关。当然,这根本不应该发生。如果存储库得到妥善保护并且需要登录名和密码,每个人都必须正确提供它,即使是导出操作也是如此。

  3. 您需要扩展脚本,最好作为提交后 Hook 运行,它将当前(最后一个 - HEAD)修订与之前的修订进行比较,并且将仅导出更改的文件。这不是一件容易的事。在您尝试再次发现 wheel 之前,在 Internet 上四处寻找现成的解决方案! :]

  4. 不能直接用SVN的extract命令吗?我想到的最简单的方法是提取到本地路径,打包,通过 FTP 发送并在目的地解包。或者,如果您在目标位置无法访问 shell,则直接逐个文件发送以解压缩存档。

希望这些会有所帮助? :]

关于linux - 关于 SVN 在 Linux 上的导出功能的几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11120092/

相关文章:

.net - 在 Windows 上使用的 Subversion 服务器

linux - SVN 如何解决无序存储库

linux - 为什么我的 VM 对任一 virsh virt-manager 都可见,但对两者都不可见?

linux - 回复 : Open Matlab function from command line linux

linux - Tomcat 未启动 : Permission denied

c# - 您如何确定控制台应用程序是如何启动的?

command-line - 什么是比 Python 的 http.server(或 SimpleHTTPServer)更快的替代方案?

c++ - 如何开始 Linux 编程

svn - 在 SVN 提交后 Hook 中节省时间?

windows - 如何在 msysgit/Cygwin 脚本中测试管理员权限?