ubuntu - SVN/Git/bash

标签 ubuntu bash svn git

我正在和一个团队一起做一个项目。他们使用 SVN,但我更喜欢 git。虽然我可以通过简单地提高 SVN 来更轻松地做到这一点,但我宁愿让我的生活变得复杂并使用 Git。

这是他们的设置:

  ~/www(svn)
   |       \
trunk(svn)  mybranch(svn)

我想拥有

/srv/git/www 

有分支trunk和mybranch

当我在 /srv/git/www 中执行 git pull 时在主干分支上,如果脚本在 ~/www/trunk 上运行 svn 更新,我会很高兴并使用任何 svn 提交更新 git 分支(以便 git 历史和提交消息与 svn 和提交消息匹配)

它会在 git pull 上执行相同的行为在 git mybranch 分支上

我的工作流程将是

git checkout trunk
git pull
git checkout mybranch
git rebase trunk

做一些工作

(如果主干自从我 pull 上它后还没有更新):

git commit 
git push
git checkout trunk
git merge mybranch
git push

如果 git hook 会在代码被推送到这些分支中的任何一个时触发 svn commit,我会很高兴。

请提供任何建议。我最初只尝试使用 SVN - 但我对它的锁定感到非常沮丧,并且每当 merge 出现问题时都必须重新 checkout ,以至于我对 SVN 感到非常恼火。

如果有人有更好的模型,请告诉我。否则,如果你能指出我如何使用 git 来做这件事,那就太棒了!我知道有一个 git svn 命令,但我不相信它 - 我希望上面的命令更安全(尽管对我来说似乎有点疯狂。)

谢谢!

最佳答案

您已经描述了如何 SubGit作品。从 2.0 开始,它允许使用预接收 Git Hook (在“git push”上执行)在 Git 和 SVN 之间进行双向转换。为此,请在您的机器上运行

$ subgit configure --svn-url <URL_of_repository_root> repo.git
$ #adjust repo.git/subgit/{config,passwd,authors.txt} to set auth options, branches to translate and SVN<->Git authors mapping
$ subgit install repo.git

然后克隆 repo.git(即使它在同一台机器上只是为了使“预接收” Hook 工作)

$ git clone repo.git myproject
$ cd myproject
$ #do something with master
$ git push origin master

从“master”可访问的每个新提交都将被转换为 SVN 中的提交。默认情况下,其他分支也是如此。

关于ubuntu - SVN/Git/bash ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158576/

相关文章:

ubuntu - NVRM : RmInitAdapter failed: Xid: 79, GPU 已经脱离总线

matlab - 在 Kubuntu 上构建 MEX 文件 (MATLAB 2012a) 时出错 '/usr/bin/ld: cannot find -lstdc++'

bash - 管道 docker run 容器 ID 到 docker exec

bash - 在 perl 中通过 ssh 将外部命令错误定向到文件

svn - 如何在代码 checkin 后立即触发 Jenkins 中的构建

ubuntu - 使用现有的 PCRE 编译 nginx?

php - 如何从 laravel 重启 apache2?

linux - bash 脚本搜索特定/用户的服务器/然后删除

java - Eclipse: 'Revert' 和 'Override and Update' 之间的区别

svn - "branch"、 "tag"和 "trunk"在 Subversion 存储库中意味着什么?