使用符号 link 构建 Git

Build Git with symbolic link

在 GNU/Linux 上,有没有办法使用符号链接而不是硬链接从源代码构建 Git?

例如:

./configure
make
make install

屈服于:

$PREFIX/bin/git
$PREFIX/libexec/git-core/git-log
$PREFIX/libexec/git-core/git-status
$PREFIX/libexec/git-core/git-commit
...

都是硬链接。

我希望 git-loggit-statusgit-commit 成为指向 git 等的符号链接

没有执行此操作的内置方法。 Makefile 总是首先尝试创建硬链接,只有在失败时才回退到符号链接。

您可以尝试使用别名或隐藏 ln 以默认创建符号链接。

可以这样做,除非我误会了。您所要做的就是将 NO_INSTALL_HARDLINKS=YesPlease 添加到 make 行:

./configure
make NO_INSTALL_HARDLINKS=YesPlease
make NO_INSTALL_HARDLINKS=YesPlease install

如果您阅读 Git 源代码根目录中 makefile 顶部的注释,您会发现:

# Define NO_INSTALL_HARDLINKS if you prefer to use either symbolic links or
# copies to install built-in git commands e.g. git-cat-file.

请记住,Git 仅部分使用了 autoconf。它的大部分配置只能通过在命令行上添加 make 选项来选择:阅读 Makefile 顶部的文档,了解您可以做的其他事情。

无论如何它对我有用。

我可以确认 MadScientist 的方法仍然适用于最新的 git 版本。

  wget https://www.kernel.org/pub/software/scm/git/git-2.12.3.tar.gz
  ./configure --prefix=/usr      
  make NO_INSTALL_HARDLINKS=YesPlease -j5
  make NO_INSTALL_HARDLINKS=YesPlease install


  ls -althr /usr/libexec/git-core
  -rwxr-xr-x 1 root root  11M May 11 13:48 git
  lrwxrwxrwx 1 root root    3 May 11 13:48 git-am -> git