我是开始迁移到Git的典型Eclipse / Subversion用户。我研究了git的基本概念,并决定最初坚持每个存储库方法的一个项目,以保持简单。不过,我仍然遇到麻烦,决定在哪里为每个项目放置存储库。
我花了很多时间来回顾this question的答案,虽然我相信这个问题的作者假设如果存储库位于Eclipse工作区内,你只能使用Eclipse来管理存储库,当然,这不是真的。
但是,最令我印象深刻的是,除了一个答案(包括已接受的答案)之外的所有答案都建议将存储库保留在Eclipse工作区内,而只有一个答案指出{{3}建议恰恰相反。然而,实际上,Eclipse / EGit实施了许多方法,其中一些方法似乎与EGit建议相矛盾。
例如,如果您使用New Project Wizard从Git创建一个New PHP Project并且存储库是远程的,那么Eclipse / EGit将很乐意在Eclipse工作区中创建一个项目文件夹并将存储库(.git)放入项目文件夹。这是我真正想要的最终结果,因为它将所有内容封装在Eclipse工作区中。
但是,如果您使用“新建项目向导”并选择本地的Git存储库,则Eclipse / EGit不会像对远程存储库那样克隆存储库。相反,它使用该存储库的工作副本作为项目位置,在该位置创建其.project和其他元数据,并在该工作副本中创建一个新的(看似不必要的)文件夹,其名称与项目相同(所以你结束例如,~/git/blah/blah
)。如果删除多余的文件夹,最终会得到与第一个示例相同的结构,唯一的区别是项目文件夹不是Eclipse工作区文件夹的子文件夹,它位于文件系统的其他位置(例如。~/git/blah
)。这种方法似乎唯一有利的一点就是它遵守了EGit用户指南中的建议,但从技术角度来看,很难看出这与第一个例子有什么不同。
鉴于这些令人费解的观察结果,我想知道人们使用这些方法时遇到了什么样的经验,以及如果忽略了EGit用户指南中的建议,可能会有什么陷阱。
答案 0 :(得分:25)
两种解决方案的含义都直接列在您链接的用户指南中。我可以告诉你那个部分
很遗憾,这可能会导致性能问题
非常正确。因此,如果您的工作空间中有一个包含大量文件的git目录,那么许多git操作将以“计数对象...”对话框开始,该对话框会阻止您的IDE,因为它会扫描工作区中的所有文件。对于我当前的20000文件,这意味着每次提交,每个开关等待10到20秒......
在业余时间活动中,我可以幸运地使用其他替代方案(在工作区外部使用git工作目录),一切都变得更加快捷,合并和切换很有趣。
因此,如果您选择大型项目,请将工作空间外的git目录视为首选。
答案 1 :(得分:3)
我正在进行与原始海报相同的迁移,并找到了另一个线程,其中对Egit建议表达了相同的疑问:Should I store git repository in Home or Eclipse Workspace?
@JamesG 那么这是你的布局吗?
~/projectA/workspace/.metadata
~/projectA/workspace/subproj1/.project
~/projectA/workspace/subproj2/.project
~/projectA/subproj1/.git
~/projectA/subproj1/file1
~/projectA/subproj2/.git
~/projectA/subproj1/file2