43

多年来,我一直在 Windows 上使用 TortoiseSVN,并将本地文件系统存储库用于我自己的项目。我计划开始与一位朋友就其中一个项目进行合作,并将存储库转移到我自己的网站上。我读过很多“git beats SVN!” 过去几年的帖子,我想我至少应该看看有什么大惊小怪的。一些研究发现了“git svn”命令,并且 TortoiseGit 声称有一定程度的 git-svn 支持。我喜欢保留 SVN 存储库的想法,并在将它们提交到存储库之前使用 git 进行一些本地提交或分支。“搁置”命令听起来也很有用。

不幸的是,虽然有许多 CLI git-svn 教程,但 TortoiseGit 没有任何内容(诚然,它似乎仍处于早期开发阶段)。结果,我在试图弄清楚我需要什么样的工作流程来让这些部分进行合作时遇到了问题。

我在 D:\Projects\repositories\MyProject 中有一个 SVN 存储库。我创建了 D:\Projects\temp\gittest,并尝试对存储库进行 TortoiseGit “Git Clone”。从那里开始,我在尝试指示 trunk/branches/tags 文件夹的位置时遇到了问题(这只是我存储库中的标准布局)。只有当我不检查这些时,我才能获得有用的结果。当我似乎确实正确启动了 git 存储库时,我能够进行一些更改并进行几次 git 提交,但随后在执行 SVN DCommit 时遇到了问题。

所以,我希望有人可以提供一套相当详细的说明,说明如何正确使用 TortoiseGit 和现有的 SVN 存储库(存储库位于本地文件系统或远程服务器上)。没有“不要使用 SVN!” 请回复 - 我有兴趣学习如何让这两个部分一起工作。如果您觉得 TortoiseGit 的 SVN 支持还不够成熟,无法完成这项工作,那么这也是有用的信息。

谢谢!

4

8 回答 8

27
  1. 创建目录
  2. 右键单击,“Git 克隆...”
  3. 启用“来自 SVN 存储库”并选择所有其他设置
于 2010-09-30T07:00:47.397 回答
9

更新:我坚持我对书面问题的回答(“我打算开始与朋友合作......”),但如果你确实想要/需要保留 Subversion,我更喜欢我的 git-svn 工作流程

git-svn 存在的唯一原因是允许将 Git 与现有的 Subversion 基础设施一起使用。由于您基本上没有基础设施,因此绝对没有理由不完全切换到 Git。git-svn 比 svn 好,但应尽可能避免。

我强烈敦促你git svn clone -s --no-metadata <path_to_svn>忘记你曾经有过 svn。

于 2010-07-16T03:50:04.103 回答
8

这现在可能很明显,但是 tortoisegit 现在已经内置了对 git-svn 的支持。

于 2012-02-17T07:08:08.830 回答
3

之前已经注意到 - 只是把它放在这里作为一个正确的答案:)

TortoiseGit 现在已经内置了对 SVN 的支持,所以它应该可以正常工作。

于 2013-07-23T08:29:43.897 回答
1

我使用了来自http://msysgit.github.com/的msysgit,以便我可以从需要接受安全证书和其他命令提示选项的 subversion 存储库中提取。提取代码后,我就可以使用 TortoiseGit 来完成大部分功能(svn push AFAIR 除外)

于 2012-05-09T18:46:47.770 回答
1

你可以尝试使用没有集成 SVN 支持的 TortoiseGit,而不是像普通的 Git 客户端一样使用。要完成这项工作,您可以将SubGit安装到 SVN 存储库中。

下面我列出了一些如何设置 SubGit 的基本说明:

$ subgit configure SVN_REPOS
# Adjust SVN_REPOS/conf/subgit.conf to specify your branches and tags
# Adjust SVN_REPOS/conf/authors.txt to specify git & svn authors mapping
$ subgit install SVN_REPOS
...
$ INSTALLATION SUCCESSFUL

安装后,您可以在 SVN_REPOS/.git 找到 Git 存储库,并像使用普通 Git 存储库一样使用它。TortoiseGit 执行的每一个操作都会git push触发接收前和接收后挂钩,将传入的修改复制到 SVN 存储库中。

有关详细信息,请参阅SubGit 文档git-svn比较页面。

从 2.0 版开始(发布时尚未发布)SubGit 允许同步位于不同主机上的 Subversion 和 Git 存储库。

SubGit 是一个商业工具,但它对于最多 10 个提交者的存储库以及开源和学术项目是免费的。

免责声明:我是 SubGit 开发人员之一。

于 2012-10-12T15:25:50.700 回答
0

也许你可以把你的项目放到支持svn 访问的 github 上。因此,您可以继续使用 TortoiseSVN 并与他人协作。另一方面,您可以使用诸如 sourceforge 之类的东西通过 SVN 而不是 git 进行协作。顺便说一句,为什么不使用 git svn clone URLOfTheSVNRepos ,然后再使用 git 提交。

于 2010-04-21T11:09:51.980 回答
0

仅作记录:Windows的 SourceTree 计划从 1.4 版开始支持 git-svn(和 hgsubversion)。相应的问题是SRCTREEWIN-119

于 2013-11-19T11:24:56.737 回答