【问题标题】:Controlling eGit's treatment of symbolic links控制 eGit 对符号链接的处理
【发布时间】:2010-07-22 14:47:47
【问题描述】:

我正在建立一个项目,该项目将在我的组织中的多个程序员之间共享。我们正在使用 git——我是新手。项目目录包含指向不应受版本控制的文档目录的符号链接。我想将版本控制下的符号链接作为符号链接进行维护,而不是将它们取消引用并将符号链接目录的所有内容置于版本控制之下。

我发现 git 命令行工具的行为方式符合我的要求:git add -A。但是,如果我尝试使用 Eclipse 版本的 git eGit 添加所有当前未版本化的文件,在项目上下文菜单上使用 Team->Track,eGit 想要添加符号链接目录中的每个文件。有没有办法告诉 eGit,不,这些是真正的符号链接,不应该被取消引用?

【问题讨论】:

  • 不是您的问题的答案,但如果您是 git 新手,我强烈建议您阅读以下内容:progit.org/book 我尝试了一些 DVCS,只是在使用 git 提交时摸索了一下,但是一旦我到达/通过第 3 章,我就觉得我真的可以变得相当强大。您应该阅读它(以及您团队中尚未阅读的任何人!)
  • 我的两分钱:我最近刚看了 EGit,作为一个非常了解 git 的人,我会说你使用它有点自欺欺人。许多常用的 git 功能尚未实现,最值得注意的是 merge(快进除外)。您必须在 Eclipse 外部使用 git pull。是的,你仍然可以在某些事情上使用 EGit,但是为什么要使用一个笨拙的插件来强迫你通过许多右键单击菜单,而你可以只使用 git/msysgit 呢?总是有 git-gui 和 gitk,如果你坚持使用 GUI,它们比 EGit 的界面更干净。
  • @Jefromi:我开始得出同样的结论。
  • @Jefromi:有几个很棒的 Mylyn 集成功能非常棒。这些是吸引我首先尝试 EGit 的原因。但是,目前我的大部分工作仍在使用命令行和 gitk。

标签: eclipse git symlink egit


【解决方案1】:

我们的问题在此讨论过:Eclipse Community Forums Thread

目前看来,Linux 原生的lstat 支持不太容易移植。他们用 Java 编写 Eclipse 的 Least Common Denominator 范式使得在 Linux 或 Mac 上进行原生工作变得更加困难。 (阅读:*cough* Windows 不支持符号链接 *cough*)。

好消息是:

这似乎是可能的,但他们需要以符合他们的“Write Once Test Everywhere”编程标准的方式对其进行编码。由于这个问题,我觉得在使用 EGit 时在 Linux 上拥有一些原生的 statlstat 支持很重要,还有 Eclipse bug #346079

在执行 Git Refresh 时,只需安装 EGit 就会导致速度变慢和 IDE 冻结 :-(

坏消息是:

这两个错误阻止了我在大多数 git 命令中使用 EGit。用户体验让 EGit 对我来说无法使用。能够在 Eclipse 中使用 EGit 将是非常好,这样 Mylyn 用户故事和任务可以自动绑定到功能分支。拥有自动提交消息模板功能也很棒。这将使提交消息中的当前任务和状态变得轻而易举。

这让我几乎烦透了,我已经准备好看看是否有可能制作一些脚本来查询 Eclipse / Mylyn 以获取当前的提交消息模板输出,并从使用这个的命令行。我不确定如何自动创建每个用户故事的功能分支。

在这些问题得到解决之前,我敢肯定很多 EGit 用户不会高兴:-(

【讨论】:

  • Windows 确实支持符号链接。链接
  • 是的,新版本的 Windows 确实如此(Win Server 2008、Vista、Win7 及更高版本)。 eclipse 的人可能会使用此功能,但我不确定他们希望与旧版本的 Windows 具有多大的向后兼容性。
  • 另一个问题是Java在1.7之前不支持符号链接
【解决方案2】:

我们遇到了这个问题,导致提交屏幕无休止,并且偶尔会导致有人忘记包含他们创建的文件。

我们提出的解决方案是手动编辑 .gitignore 文件,以包含取消引用符号链接时链接文件出现的路径:

/ProjectHomeFolder/.gitignore

由于我们在 Play Framework 中工作,我们还编辑了以下忽略项: /ProjectHomeFolder/conf/.gitignore
/ProjectHomeFolder/public/.gitignore

我们只是添加了 /ModuleName 用于每个已符号链接的模块,现在 egit 会正确忽略它们,为了完整起见,这里是我的根 .gitignore 文件的全部内容,该文件位于项目的根目录中:

/.project
/.classpath
/.gitignore
/日食
/tmp
/粗略
/.git
/.settings
/模块
/conf
/betterlogs-1.0
/chronostamp-0.1
/logisimayml-1.5
/betterlogs-1.0
/sass-1.1
/deadbolt-1.4.2
/jquery-1.0
/log4play-0.5
/messages-1.1.1
/navigation-0.1
/jqueryui-1.0
/scaffold-0.1
/table-1.2
/tabularasa-0.2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2022-01-15
    • 2019-04-04
    • 1970-01-01
    • 2017-08-22
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多