我正在开发一个项目,我可以访问代码,但无法将版本控制添加到源目录本身。 (主要开发人员有自己的源代码控制,但由于这里不相关的原因,它不可访问/可理解/等。)
为了保持理智,并跟踪其他开发人员所做的任何更改,我希望设置某种版本控制系统。 (Git是我自VSS黑暗时代以来唯一使用的版本控制系统,所以我可能会使用它。)
我目前的计划是镜像现有的代码库并在本地初始化git。但是,当其他开发人员进行更改时,我需要能够将本地副本与实际源进行比较。
我的问题:
git init --bare
还是git init
?diff -qNr source/ local-source/
? git diff --no-index source/ local-source/
?还有别的吗?答案 0 :(得分:3)
首先,有点背景知识。
在Git中,这些概念是完全分开的:
当您使用git init /some/path
创建本地Git存储库时,它会在/some/path/.git
创建一个Git存储库,当您在/some/path
及更低版本中运行Git命令时,Git会找到存储库,并且假设工作树位于/some/path
。
现在谈谈你的情况:
我正在开展一个项目,我可以访问该代码,但无法将版本控制添加到源目录本身。
您可以在源目录本身之外创建一个Git存储库,并相应地设置GIT_DIR
(repo)和GIT_WORK_TREE
(工作树)变量。
例如,如果源目录位于/srv/project
,则可以执行以下操作:
git init --bare /my/projects/repo.git
export GIT_TREE=/my/projects/repo.git
export GIT_WORK_TREE=/srv/project
然后你可以cd /srv/project
并运行Git命令,就好像你在/srv/project
中有一个常规的Git项目(在/srv/project/.git
中有一个Git存储库)。您可以像往常一样使用Git命令,所有存储库操作都将完成/my/projects/repo.git
。
在真正的Git存储库中,您可以将此其他repo用作远程,并使用Git操作与您自己的分支进行比较。
我希望这会有所帮助。
答案 1 :(得分:2)
此问题的标准解决方案是将传入代码视为“供应商分支”。只需创建供应商分支(作为孤立的,无关的分支,其中没有代码,或在单独的存储库中),添加初始版本和提交。获得更新后,将其放入供应商分支(或供应商存储库)并照常提交。
要将供应商版本视为单独的存储库,您可以使用子模块(据我所知,这实际上是它们的预期用例)。