【问题标题】:Common git repo for already existing SVN project现有 SVN 项目的通用 git 存储库
【发布时间】:2016-01-09 14:15:35
【问题描述】:

我很难找到一个好的标题,所以如果你知道如何更清楚地表达我的问题,请编辑。

我正在做一个使用 SVN 的大项目。由于我习惯使用 git(经常提交,使用许多分支)并且也不想更改我的工作流程,因此我在我的 SVN 工作副本的父目录中设置了一个 git 存储库,用于本地版本控制。所有 SVN 相关文件都已包含在 .gitignore 中。使用 git-svn 对我来说并不是一个真正的选择,因为我不想用我所有的微小提交来“污染”SVN 存储库。

最近我开始了与另一个人(称他为 B 人)在同一项目上的工作密切相关的工作。然而,他还没有准备好将他的工作推送到 SVN 存储库中,所以最初他手动给了我他更改的文件,我将它们包含在我的项目中的分支 topic 中。由于这个过程非常费力,我们决定使用 git 来交换项目的进度。

因为不想乱搞B人的SVN,所以我的想法是这样的:

  • 我从我的 git 存储库创建了一个裸存储库,并将其放在 B 人可以访问的服务器上
  • 人 B 运行 git init,复制我的 .gitignore 文件,运行 git add . 并进行初始提交
  • B 人将他的分支重命名为 topic,将我创建的裸仓库添加为远程 origin 并获取所有数据

由于我已经将他的工作包含在我的 repo 中,所以 B 的 topicorigin/topic 现在应该完全没有区别。但他们确实如此。

我遇到的两个问题(可能还有更多):

  • 一些文件已添加到 B 的 git 存储库中,即使它们位于 .gitignore 列表中(这与我工作正常的完全相同的文件)
  • 在运行git diff topic origin/topic 时,它显示一个在主题和源/主题中肯定存在的文件被删除(源/主题中的路径:/dev/null

有人知道这里出了什么问题吗?也欢迎提供替代方案的建议,但请注意,B 人将他的更改推送到 SVN 存储库和/或在整个项目中完全放弃 SVN 是没有选择的。

【问题讨论】:

  • 当你说你不想用小提交污染 SVN 存储库时,我很困惑。在您推送之前,您的提交不会命中 SVN,因此您可以在推送之前清理您的历史记录,一切都会好起来的。我正在使用 Mercurial 做类似的事情。
  • 我不想使用 git-svn 的另一个原因是我想 100% 确保不会搞砸任何事情。我也想保持我的提交历史,但只是为了我自己。不过感谢您的反馈!

标签: git svn version-control


【解决方案1】:

注意:OP LLang 结束于in the comments

事实证明,只需将 .git 文件夹(从我的同事从我放在服务器上的裸仓库克隆的仓库中)复制到他保存工作副本的地方就可以了。


原答案:

使用git-svn 对我来说并不是一个真正的选择,因为我不想用我所有的微小提交来“污染”SVN 存储库。

你仍然可以使用 git-svn,在独立的分支中工作,并且 merge squashing 你的提交到与 svn 同步的分支中。

一些文件已添加到 B 的 git 存储库中,即使它们在 .gitignore 列表中(这与我工作正常的完全相同的文件)

检查差异(不同的操作系统、不同的 git 版本、不同的 shell、不同的路径)。
尝试在您的工作站上重做相同的操作,看看是否仍能按预期工作。

运行git diff topic origin/topic 时,它会显示一个文件,该文件肯定存在于topicorigin/topic 中,已被删除(origin/topic 中的路径:/dev/null

/dev/null should means new file or deleted file.
在不知道为什么删除文件的情况下,至少尝试将其复制并添加到 B 端。

【讨论】:

  • 感谢您的建议。经过几周更重要的事情后,我有时间回到这个问题上,结果证明只是将 .git 文件夹(从我的同事从我放在服务器上的裸仓库克隆的仓库中)复制到他所在的地方保留他的工作副本就可以了。不过,我仍然不知道为什么最初的想法行不通。
  • @LLang 太好了!我已将您的评论包含在答案中以提高知名度。
猜你喜欢
  • 2013-07-25
  • 1970-01-01
  • 2015-04-01
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
相关资源
最近更新 更多