我有一个在 Windows 机器上运行的 SVN 存储库。我需要一个将任何提交的文件上传到远程 Web 服务器的脚本。我已经阅读了预提交挂钩,但我不知道如何实际编写脚本,甚至不知道应该用什么语言编写脚本。似乎脚本需要是 .bat 或 .exe 才能运行在窗户里。
有没有人有可以在 Windows 机器上运行的脚本?我不是要上传整个网站,而是提交的单个文件。我想要一个预提交挂钩,因为如果 ftp 上传失败,它会给用户反馈。
如果您以前这样做过,请向新手解释整个过程。
我有一个在 Windows 机器上运行的 SVN 存储库。我需要一个将任何提交的文件上传到远程 Web 服务器的脚本。我已经阅读了预提交挂钩,但我不知道如何实际编写脚本,甚至不知道应该用什么语言编写脚本。似乎脚本需要是 .bat 或 .exe 才能运行在窗户里。
有没有人有可以在 Windows 机器上运行的脚本?我不是要上传整个网站,而是提交的单个文件。我想要一个预提交挂钩,因为如果 ftp 上传失败,它会给用户反馈。
如果您以前这样做过,请向新手解释整个过程。
当您希望由于某种原因使提交失败时,使用预提交挂钩。您是否真的想因为您的 FTP 站点已关闭或磁盘已满而导致提交失败?
您应该只使用预提交脚本来使开发人员控制下的内容失败,例如缺少所需属性的文件等。这使开发人员有机会纠正问题,然后重新提交提交。
提交后脚本在用户等待它完成时仍会占用用户的终端,但该脚本可能会失败并通知用户某事失败,但无论如何提交都会发生。如果你想用钩子来做这件事,你应该用 post-commit 钩子而不是 pre-commit 钩子来做。
对于你想做的事情,钩子不是一个好方法。如果用户提交了很多文件怎么办?当你的钩子脚本执行时,他们必须在那里坐十分钟左右吗?
一个更好的主意是使用像Hudson这样的持续构建系统。Hudson 将监视您的 Subversion 存储库,并且可以在用户每次提交时执行您想要的 FTP 任务。使用 Hudson,您不会在开发人员等待钩子完成时束缚他们,并且您可以完整地记录每次提交所发生的事情。
事实上,每个站点都应该使用连续构建服务器。即使您不编译代码,您仍然希望针对每个提交运行测试。
Hudson 甚至还有 FTP 和 SFTP 插件,可以让您的任务更轻松地完成。而且,您可以在 Hudson 中调用预构建和构建后脚本,因此您可以灵活地执行几乎任何您想做的事情。
Hudson 在 Windows 服务器和 Unix 服务器上运行。这是一个Java进程。
如果您在 Windows 上,并且没有PowerShell,您应该下载一些脚本语言并使用它来编写您的钩子。Windows command.exe 处理器中的标准批处理编程语言不是很灵活或功能强大。由于钩子在服务器上运行,你只需要担心你的钩子是否在单台机器上运行。有些程序使用客户端钩子,如果你编写一个钩子,它必须能够在客户端可能使用的每个系统上运行。
我认为您需要一个提交后挂钩。
svn 挂钩确实可以是任何可执行文件或脚本文件。在这里寻找一些样品
您可以在 windows 上使用内置的命令行 ftp 客户端。一种方法是将您的 FTP 命令放在一个文本文件中,您可以从批处理文件中生成该文件。例子:
echo [username]>ftp.txt
echo [password]>>ftp.txt
echo put [filename]>>ftp.txt
echo quit>>ftp.txt
ftp -s:ftp.txt [server]
当然,您也可以编写一个程序来执行此操作(例如,在.Net 中,使用FtpWebRequest类),它不必是批处理脚本。