在两个存储库之间保持两个文件同步 - 符号链接?或另一种方式?

时间:2012-09-24 09:31:47

标签: git svn symlink

在我们的学校项目中,使用的VCS是SVN。

约束:

  • 我们的教授不希望将非工作代码提交到中央存储库。

  • 我将在旅途中处理代码。我在一天的不同时间在办公室的笔记本电脑,台式电脑和个人电脑上进行编码(我觉得很有效率)

  • 我们不允许分支

我原以为我会将我正在处理的文件存储在另一个存储库(也许是GIT)中,以便在主存储库中提交“死代码”。在那之后,为了避免在两个repos之间复制粘贴内容,我将一个repo上的文件符号链接到另一个repo。所以,我会在一个回购中无休止地提交文件,然后在完成后,我会在另一个回复。

但是,我不知道VCS在符号链接方面的行为是什么。

我已阅读an answer here in StackOverflow GIT将符号链接存储为文件,并在检索时将其返回到符号链接,无论目标是否存在 - 这都不好。我可能会得到“死文件”。

我也读过this documentation for SVN并且没有说明检索符号链接后出现的内容。

那么,我应该怎么做才能将两个存储库与同一个文件同步?我应该选择符号链接还是其他方式?

2 个答案:

答案 0 :(得分:2)

说明:

“没有死代码”和“没有分支”是糟糕和丑陋的开发政策,政策导致巨大的,不可管理的提交(大部分时间)

  1. 忘记纯符号链接,使用原生工具和方法
  2. (some)可以使用Subversion externals
  3. 将外部源链接到Subversion repo
  4. 移动开发是(几乎)与问题的第一部分无关的问题:使用任何(D)VCS选择,最近可以桥接到Subversion(Mercurial,Git,Bazaar,Fossil-SCM / over git-export /)

答案 1 :(得分:2)

以下是我的建议:

  1. git svn clone< url to professor repo>
  2. 在步骤1之后,您拥有subversion repo的本地副本
  3. git branch<分支名称> - 不要担心你的教授不会看到这个分支
  4. 在你的分支上工作并提交任何你想要的东西,直到你完成 - 所有的工作和测试都通过了 - 是时候把你的代码交给教授了
  5. git checkout master
  6. git svn rebase - 将从svn主线选择最新更改
  7. git merge<你的分支名称> - 如果教授喜欢看单一提交,你可以使用--squash选项
  8. git svn dcommit - 将在主线上发布您的更改
  9. HTH。