2012-06-20 40 views
0

我做了一些家庭作业,虽然我可以回答以下关于在Windows上导出SVN回购(使用VisualSVN服务器)的所有问题,但我完全迷失在Linux上,因为我是新手。关于SVN在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

,并计算出下列内使用命令post-commit钩子:

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

问题:

  1. 任何人有任何想法,为什么它不工作?更改被提交到存储库,但操作以“没有输出的后提交挂钩失败(退出代码255)”结束。而后提交钩似乎没有被解雇,因为目标网站没有更新。我已经检查过(甚至是重复检查)那个命令本身就像一个魅力一样(当从命令行调用时)。它只在post-commit挂钩内失败。我试着在这个文件的末尾添加“exit 0”。当然它是可执行的。没有运气。尽管如此,经过多次尝试之后,仍有相同的错误代码

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

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

  4. 有没有办法完全相同(导出),但通过FTP,而不是我的QNAP的本地路径到外部服务器?

对于第三点和第四点我尝试使用svn2web工具形式的SourceForge,但这是一个相当糟糕的主意,它不工作。它使用pre-commit hook而不是post-commit,这意味着它中的任何错误都会阻止开发人员提交他们的工作(在我的情况下 - 提交后 - 更改已提交,只传播到目标)。他们的pre-commit hook在我的服务器上失败(与上面第一点相同的错误信息),并且向文件夹属性添加“svn2web”属性的方法(解决方案)可能适用于纯Linux Linux Subversion客户端,但在使用时似乎完全失败Windows上的TortoiseSVN作为SVN客户端。

我想知道,如果解决方案的问题没有1(和2-3和也许4)不会设置本地工作副本里面/共享/网络/项目/网站和使用CRON perodic更新这个存储库?这将始终只“导出”实际更改,并且可能会在没有poper登录名和密码的情况下失败。但是,这似乎正在重塑轮胎或强迫开放已经敞开的大门。

非常感谢您的帮助。

+0

1.可以连接到(2) - 钩子运行的用户没有被授权,并且与(2)中的用户不是同一用户。2.是否确定阻止只读权限?如果'是',则可能是您第一次被要求输入用户名/密码并现在被缓存(删除〜/ .subversion/auth目录中的所有内容并查看会发生什么)。 –

+0

关于不使用相同的用户 - 我不确定。也许你是对的。关于兑现密码 - 我很确定。我只运行导出命令三次,每次运行正确,而不要求我输入密码或登录。但关于不要求密码的问题是一个补充,我的好奇心。毕竟,这对我来说不是一个大问题。 – trejder

回答

1

在简短一些答案:

  1. 我会拍你正在运行此命令,不同的用户比SVN守护程序(svnserve的)运行时使用的钩子。另一个用户(SVN使用)很可能没​​有获得运行导出所需的所有权限。

  2. 不幸的是,我不知道。必须是您安装SVN的东西。当然,这根本不应该发生。如果存储库已妥善保护并需要登录名+密码,则每个人都必须正确提供,即使是出口操作。

  3. 你需要和扩展脚本,preferebly作为post-commit钩子运行,它将比较当前(最后一个 - HEAD)版本与provious版本并仅导出已更改的文件。这不是一件容易的事。在您尝试再次发现轮子之前,请在互联网中查找现成的解决方案! :]

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

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

+0

非常感谢(+1)! :] – trejder