将git工作目录的改动应用到svn

本文介绍了如何在维护git和svn仓库时,通过git diff生成patch文件,然后应用到svn工作目录,以实现改动同步。作者面临git svn rebase和git svn dcommit操作缓慢的问题,选择手动同步并编写脚本`git2svn.sh`自动化该过程,避免人工同步的错误和耗时。脚本中使用perl命令处理git log日志,但目前脚本未涵盖文件的添加和删除操作。
摘要由CSDN通过智能技术生成

之前在维护自己写的WordPress插件时,为了能够方便地同时向GitHub仓库和WordPress官方的svn仓库提交,我只在本地维护了一个git工作目录,然后用git svn dcommit向svn仓库提交,用git push向GitHub提交。(详见我之前写的日志。)

但可能是因为WordPress官方的svn仓库太大,历史记录太多,而git-svn的内部实现又有点问题,所以最近几次我用git svn rebase和git svn dcommit都毫无反应。思来想去,为了不耽误时间,我还是决定老老实实用svn客户端了。

于是现在我本地就有了两个目录:一个git工作目录,用于向GitHub提交;一个svn工作目录,用于向svn提交。由于svn里的分支和标签实际上就是目录,因此svn工作目录下还有trunk、branches和tags子目录。trunk子目录里的内容才和git工作目录里的内容相同。

一般我是在git工作目录下写代码,因此思路是在git工作目录commit之后,用git diff生成patch文件, git log输出提交日志到另外一个文件。然后用patch命令将git diff应用到svn工作目录。最后svn commit的时候利用git log的输出,这样就可以做svn trunk分支的提交和git master分支的提交一一对应。这个过程如下图所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值