是这样,目前想实现的是增量部署
考虑是这样
server 上面保存一下当前的 repo 版本号 比如 repoversion.txt
然后在需要部署的时候
用最新的 master 分支 比较 server 上面的 repoversion 得到一个 filelist(包含新增的文件、修改的文件、和删除的文件)
然后用脚本来对这个 filelist 进行增量部署 该删的删、该覆盖的覆盖~
目前卡在了 如何获得两次 repoversion 之间的 文件差异 list 上~
求助啊
git whatchanged COMMIT-A..COMMIT-B
#1 楼 @HungYuHei 貌似不行啊 愁~
git diff --name-only 然后 巴拉巴拉吧
git diff --name-status <sha1> <sha2> > /path/to/my/file
效果
M app/models/order.rb D config/routes.rb
为啥非要做 git 自己就可以做的事情呢
#5 楼 @loveky LZ 说了要做增量部署。很可能被部署的环境并没有安装 git。所以他希望提供一个增量包来搞。
#6 楼 @Victor 额,没有 git 可以安装一个吧,这好像也不是太复杂,能通过简单方式实现就没必要搞得那么复杂,diff 出来了还要打包传上去,在分别处理 add,modify,delete...
当然,不排除极端情况 LZ 的环境极其复杂就是不能用 git,所以想问一下应用场景
#4 楼 @Victor 谢谢 我先试试这个方法
#7 楼 @loveky 是这样的,不是新的应用,线上的环境相对复杂,目前通过 git 维护的只是部分文件,所以不能够通过 git 完全的 clone 或 pull~ 所以选择增量部署(部分文件),大概的应用场景是这样
#8 楼 @iamued 明白了。
那你们可以考虑将 git 以外的文件也通过 git 管理,这样统一管理不容易遗漏。如果额外的文件是 binary 这种不适合加入 git 的类型,则可以考虑在 git repo 中添加配置文件记录这些外部依赖的版本,位置信息。等部署时就可以 git 获取到最新代码,按照依赖配置设置环境