Ubuntu SVN/Git/Bash

Ubuntu SVN/Git/Bash,ubuntu,bash,svn,git,Ubuntu,Bash,Svn,Git,我正在和一个团队一起做一个项目。他们使用SVN,但我更喜欢git。虽然我可以通过简单地提高SVN来更容易地做到这一点,但我更愿意让我的生活变得复杂,并使用Git 以下是他们的设置: ~/www(svn) | \ trunk(svn) mybranch(svn) 我想要 /srv/git/www 有树干和我的树枝 当我在主干分支上执行git拉入/srv/git/www时,如果脚本在~/www/trunk上运行svn update并使用任何svn提交更新git分支(以便

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

以下是他们的设置:

  ~/www(svn)
   |       \
trunk(svn)  mybranch(svn)
我想要

/srv/git/www 
有树干和我的树枝

当我在主干分支上执行git拉入
/srv/git/www
时,如果脚本在
~/www/trunk
上运行svn update并使用任何svn提交更新git分支(以便git历史记录和提交消息与svn和提交消息匹配),我会非常喜欢它

它将在git mybranch上的git pull上执行相同的行为

我的工作流程将是

git checkout trunk
git pull
git checkout mybranch
git rebase trunk
做些工作

(如果行李箱在我拉上后还没有更新):

如果git钩子在代码被推送到任何一个分支时触发svn commit,我会非常高兴

请提供任何建议。我最初尝试只使用SVN,但对它的锁定感到非常沮丧,每当合并失败时,我都必须重新签出,这让我对SVN非常恼火

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

谢谢大家!

我最初尝试只使用SVN,但对它的锁定感到非常沮丧,每当合并失败时,我都必须重新签出,这让我对SVN非常恼火

我真的没有注意到Subversion有你似乎有的问题。我没有体验过它与Subversion的锁定和合并工作得很好。事实上,与Git合并相比,Subversion合并的问题更少。我怀疑你的挫败感很大程度上是因为使用了不熟悉的软件,而不是Subversion本身固有的问题。我也对那些不能按我习惯的方式工作的软件感到沮丧

但是,您也可以使用Subversion,而不是绕开这个问题。你会一次又一次地遇到Subversion,因为它在软件世界很流行。它使用简单,并且做得很好。在这个世界上,与Windows相比,您可能更喜欢OSX和Linux,但您仍然需要了解Windows。我知道我也对不熟悉的软件感到沮丧。然而,与Windows不同,Subversion并不是邪恶的。此外,它确实工作得很好

对于Git,我非常喜欢的一件事是,我非常怀念Subversion,因为它能够在不影响主存储库的情况下提交我的工作。我在Git中的工作流如下所示:

git checkout
git pull
git add
git commit
git add
git commit
git add
git commit
git add
git commit
git add
git commit
git add
git commit
git push
如果你像我一样是一个串行提交者,你可能想试试:这允许你在本地使用Git并进行串行提交,但是当你进行推拉操作时,你实际上是在与Subversion存储库交谈。然而,这并不意味着您可以简单地假装您只使用Git。当我进行分支和合并时,我仍然必须直接与Subversion对话

如果你不是一个连续提交者,Git SVN可能不会给你买很多东西。你最终所做的就是增加复杂性和更多的挫折感

Subversion设计用于处理在连续集成环境中使用的不稳定主干模型。这意味着每个人通常共享同一个分支。它迫使你与他人友好相处,并进行微小的增量更改。然而,没有理由不能在Subversion中创建自己的私有分支并在那里工作

我做了很多代码重组,这意味着移动文件,做了很多一天都做不到的工作。我不能在其他开发人员使用的同一个分支上工作,所以我创建了自己的私有分支。如果有人有合并问题,那应该是我,因为我不仅仅是在这里或那里修改一个文件,我正在改变代码的整个布局。然而,Subversion几乎总是冷静地处理合并。我定期重新设定基准。当我完成我的工作,我会做一个大规模的交付没有任何问题。然后,我将删除我的分支。

您已经描述了如何工作。自2.0以来,它允许使用预接收Git钩子(在“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

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

他们想在git上使用svn,这太疯狂了。但那是另一个故事……我不知道你在问什么,但你知道git svn的
?一个可以让你从git访问SVN的工具?@Zoredache你的评论就是我想要的答案。考虑回答这个问题,这个问题可能会被设定为答案。
$ 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
$ git clone repo.git myproject
$ cd myproject
$ #do something with master
$ git push origin master