Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图让rsync将文件复制回svn_Svn_Macos_Diff_Grep_Rsync - Fatal编程技术网

试图让rsync将文件复制回svn

试图让rsync将文件复制回svn,svn,macos,diff,grep,rsync,Svn,Macos,Diff,Grep,Rsync,我正在尝试设置一个特定的工作流程,但很难确定rsync将如何(或是否)为其工作 我的安装程序在Mac OS X上 我有我的SVN目录。当我运行部署脚本时,文件将移到我的集成Apache服务器上。我对文件进行修改,然后手动将它们复制回SVN 我这样做的原因是我需要在编辑html、css和javascript时立即看到浏览器中的更改。但是试图手动复制和跟踪这一点会花费很多时间,我想让它自动化 我想做的是使用rsync来确定我在apacheweb目录中修改过的文件,然后只将这些文件复制回SVN 我一直

我正在尝试设置一个特定的工作流程,但很难确定rsync将如何(或是否)为其工作

我的安装程序在Mac OS X上

我有我的SVN目录。当我运行部署脚本时,文件将移到我的集成Apache服务器上。我对文件进行修改,然后手动将它们复制回SVN

我这样做的原因是我需要在编辑html、css和javascript时立即看到浏览器中的更改。但是试图手动复制和跟踪这一点会花费很多时间,我想让它自动化

我想做的是使用rsync来确定我在apacheweb目录中修改过的文件,然后只将这些文件复制回SVN

我一直在测试一个rsync命令,但我似乎遇到的问题是,由于部署的文件的时间戳都比SVN中的新,rsync希望将所有文件复制回来,因为它将它们视为新文件

我还尝试了diff,它检测文件的差异。我想我可以组合一个shell脚本,它可以使用diff、grep和cp的组合来实现这一点,但我想看看rsync是否可以成为一个一体化的解决方案

rsync -avuzn --exclude=web-inf/classes/ --exclude=web-inf/lib/ /var/www/web-inf /usr/local/src/svn/WEB-INF

我建议在web服务器上进行subversion签出。您应该为所有命名的
.svn
添加一个指令,因此远程用户不会将此视为subversion签出。

您没有说明部署脚本如何将文件移动到集成服务器,也不完全清楚是否涉及多台计算机或集成服务器文件位于哪种文件系统上。如果脚本所做的事情是正确的,那么您可以在最初发送文件时保留文件的修改时间。既然您可以使用rsync将它们带回来,那么您就不能首先使用rsync发送它们吗?除此之外,scp-p是另一种在保留许多属性的同时进行传输的方法


不过,这种工作流听起来是为分布式版本控制系统量身定做的,比如or。

我不明白的是您到底在做什么?一般来说,你应该在自己的电脑上开发。svn存储库应该位于站点目录中,这样您就可以通过localhost在浏览器中实时查看站点。我以同样的方式将Rails与git一起使用。我的本地ruby服务器转到localhost:3000,我可以开发并不断查看我在做什么。然后,当我的编码达到一个合适的点时,我将提交给git并部署到我的测试服务器。站点完成后,将进入生产环境。当我在php/mysql中编写代码时,我在自己的本地apache服务器上进行测试,然后在完成测试后直接通过ftp发送到测试服务器或生产服务器

你应该这样工作。没有理由从测试或生产服务器复制回内容。您的版本控制系统应该完成所有同步。
本地开发,远程测试,然后部署到生产环境中。这是最好的方法。

我还尝试了自动部署,在我编写了自己的rsync脚本之后。。。(易于使用,但安装要求很高,我遇到了…尝试一下

免责声明:谈到我写的FWIW,这与我的自动部署系统非常相似:(但它可能对你没有用处,因为它现在是基于windows的)。不过,正如一些人提到的,在编写系统时,你应该以不同的方式处理“本地”测试(这样你就可以立即看到更改)。