2012-04-17 114 views
9

我继承了存储在CVS中的项目。之前的开发人员在他的工作目录中有大量未执行的更改,包括删除大量文件,我希望检查它们。这是我的计划:我可以将.git复制到另一个目录吗?

  1. cvs checkout the_project。
  2. 按照the remote cvs/local git workflow,初始化与the_project的原始状态的混帐回购协议。
  3. 将新的.git复制到其他工作目录中。
  4. Presto!所有的删除/更改显示为未分离的差异。

这最初看起来像它要去工作。我应该担心的任何重大缺陷?

+1

我相信这是与从Git的删除所有文件工作副本,并从CVS仓库粘贴文件。这应该工作并向您展示所有已经做出的更改。 – Tadeck 2012-04-17 23:37:47

回答

4

我做同样的事情所有的时间。我使用GIT从一个大型SVN项目中跟踪多个版本和多个分支。该项目在'src'的子目录中有200个SVN模块。当我启动GIT仓库时,我检查了项目的v9.4.4,做了一个'git init'添加了.gitignore和.gitattributes,做了'git add -A'和'git commit -m'v9.4.4'。然后我移动 git的了了项目,并创建了一个符号链接它。当v9.4.5发布时,我检查了它,添加了一个到现在共享的.git目录的符号链接,添加了.gitignore和.gitattributes,做了'git add -A'和'git commit -m'v9。 4.5' 。在这一点上,我有一个GIT仓库象征性地从两个目录链接。

使用此设置,您可以执行任何不接触工作目录的git操作。因此,对于我的应用程序,'git diff v9.4.4..v9.4.5'效果很好。当然,你也可以做git的操作是做触摸索引和工作目录但你必须要小心的是该存储库是在正确提交您所坐的释放。

我也用这适用于多个分支。在这种情况下,使用'git symbolic-ref HEAD refs/heads/a-branch'来更改分支而不使用来触摸工作目录非常重要。所以当我的项目版本s3出现时,我做了一个'git branch s3 v9.4.4',创建了我的.git符号链接,做了'git symbolic-ref HEAD refs/heads/s3',然后用'add'和'承诺。'

+0

感谢您描述您的具体体验。 – chreekat 2012-04-18 13:43:45

0

是的,这将工作。您当然也可以做相反的事情 - 删除除.git之外的所有内容并从其他位置粘贴文件。

相关问题