45

我是开始迁移到 Git 的典型 Eclipse/Subversion 用户。我研究了 git 的基本概念,并决定最初坚持每个存储库一个项目的方法,以保持简单。不过,在决定将每个项目的存储库放置在哪里时,我仍然遇到了麻烦。

我花了很多时间来查看这个问题的答案,尽管我相信那个问题的作者假设你只能使用 Eclipse 来管理存储库,如果存储库位于 Eclipse 工作区中,当然,不对。

然而,这个问题最让我印象深刻的是,除了一个答案(包括接受的答案)之外,所有答案都建议将存储库保留在 Eclipse 工作区中,而只有一个答案指出EGit 用户指南建议完全相反.

然而,在实践中,Eclipse/EGit 实现了许多方法,其中一些似乎与 EGit 的建议相矛盾。

例如,如果您使用新建项目向导从 Git 创建一个新的 PHP 项目并且存储库是远程的,Eclipse/EGit 将愉快地在 Eclipse 工作区中创建一个项目文件夹并将存储库 (.git) 放在项目文件夹中。这是我真正想要的最终结果,因为它将所有内容都封装在 Eclipse 工作区中。

但是,如果您使用新建项目向导并选择本地的 Git 存储库,Eclipse/EGit 不会像克隆远程存储库那样克隆存储库。相反,它使用该存储库的工作副本作为项目位置,在该位置创建其 .project 和其他元数据,并在该工作副本中创建一个与您的项目同名的新(看似不必要的)文件夹(所以你结束例如, ~/git/blah/blah)。如果您删除了多余的文件夹,您最终会得到与第一个示例相同的结构,唯一的区别是项目文件夹不是 Eclipse 工作区文件夹的子文件夹,它位于文件系统的其他位置(例如.~/git/blah)。这种方法似乎唯一的积极之处在于它遵守了 EGit 用户指南中的建议,但从技术角度来看,很难看出这与第一个示例有何不同。

鉴于这些令人费解的观察,我想知道人们在使用这些方法中的每一种都有什么样的体验,以及如果忽略 EGit 用户指南中的建议可能会遇到什么陷阱。

4

2 回答 2

26

您链接的用户指南中直接列出了这两种解决方案的含义。我可以告诉你那部分

这可能会导致性能问题

不幸的是非常真实。因此,如果您的工作区中有一个包含大量文件的 git 目录,许多 git 操作将从“计数对象...”对话框开始,该对话框会阻止您的 IDE,因为它会扫描工作区中的所有文件。对于我当前的 20000 个文件,这意味着每次提交、每次切换、... 等待 10 到 20 秒

在业余时间活动中,幸运的是我可以使用另一种选择(在工作区之外有 git 工作目录),一切都感觉更快捷,合并和切换很有趣。

因此,如果您进行大型项目,请考虑将工作空间外的 git 目录作为首选。

于 2012-05-10T10:36:20.977 回答
3

我正在做与原始海报相同的迁移,并发现另一个线程对 Egit 建议表达了同样的疑问:我应该将 git 存储库存储在 Home 还是 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
于 2012-11-22T10:30:44.477 回答