根据http://cygwin.com/packages/git/最新可用的 Cygwin 包是 1.7.9-1。
我想将 git 更新到至少 1.8.0。
我可以这样做吗?
cygwinports有很多新版本的各种工具
在我写这篇文章的时候它有 1.8.3.4
新的、简化的安装说明:
- 使用最新的 Cygwin 安装程序(至少版本 2.829):setup-x86.exe 用于 32 位,或 setup-x86_64.exe 用于 64 位。(请注意,许多软件包尚未移植到 x86_64。)
使用 -K 标志启动 setup-*.exe,例如:
cygstart -- /path/to/setup-x86.exe -K http://cygwinports.org/ports.gpg
在选择安装类型页面上,选择“从 Internet 安装”。
- 在选择下载站点页面上,选择发行版镜像,然后在用户 URL 字段中输入ftp://ftp.cygwinports.org/pub/cygwinports并按添加(确保两者都突出显示)。
- 或者,您可以使用源软件镜像,但如果这样做,您必须使用托管在与您选择的发行版镜像不同的服务器上的镜像。
- 继续选择和安装包,确保安装任何指定的依赖项。
要安装git 1.8.0
,您需要编译源代码。
您需要克隆 git 存储库 ( git clone https://github.com/git/git.git
),进入 git 目录,将当前版本更改为 1.8.0 或您想要的其他版本 ( git checkout v.1.8.0
),然后键入以下命令:
make configure
./configure --prefix=/usr/local
make
make install
它将在/usr/local
目录下安装 git。有关 git 安装的更多信息(如文档),您可以查看INSTALL
本地化在 git 存储库根目录中的文件。
我按照这些说明成功安装了 git 1.8.4.474 ;我正在运行 Windows 7 64 位,cygwin 版本 1.7.22(0.268/5/3)
运行 Cygwin 设置实用程序并确保您已安装以下软件包:
gcc autoconf curl libcurl-devel, required for http/https support (NOTE: this is an obsolete package, you will need to uncheck "Hide obsolete packages" when selecting packages to install) make libiconv python perl gettext
您可能需要 libiconv-devel 和 cygwin32-liviconv(参见 Marek 的评论)
使用 git clone https://github.com/git/git.git克隆 Git 源。关于 Git 配置的几点说明:
确保
core.autocrlf=false
,否则您最终会得到 DOS 样式的行尾,这会导致构建中断。
http.sslcainfo
我的财产价值也很糟糕;要么取消设置,要么将其指向/usr/ssl/certs/ca-bundle.crt
.从新克隆的 git 存储库中,运行以下命令:
make configure ./configure make make install
你的指示对我真的不起作用......
我遵循了这些说明(只要确保安装了所有正确的软件包)
http://randomartifacts.blogspot.com/2013/04/compiling-git-on-cygwin.html
修改了 Makefile
$ git diff Makefile
diff --git a/Makefile b/Makefile
index 3588ca1..90f337c 100644
--- a/Makefile
+++ b/Makefile
@@ -407,7 +407,7 @@ RPMBUILD = rpmbuild
TCL_PATH = tclsh
TCLTK_PATH = wish
XGETTEXT = xgettext
-MSGFMT = msgfmt
+MSGFMT = msgfmt.py
PTHREAD_LIBS = -lpthread
PTHREAD_CFLAGS =
GCOV = gcov
然后
make configure NO_MSGFMT_EXTENDED_OPTIONS=1
./configure
make NO_MSGFMT_EXTENDED_OPTIONS=1
make install NO_MSGFMT_EXTENDED_OPTIONS=1
不确定是否所有 make 命令都需要参数,但这对我有用
执行“make install”时出现问题。错误信息是:
install -d -m 755 '/usr/local/bin'
git: 'installation' 不是 git 命令。请参阅“git --help”。
./install:第 4 行:通常:找不到命令
./install:第 5 行:将:找不到命令
./install:第 6 行:to:找不到命令
./install:第 8 行:$:找不到命令
./安装:第 11 行:意外标记附近的语法错误(或前缀=/usr/local,当然)。就像任何程序套件一样'.'
./install: line 11:
这是由于 Windows 操作系统不区分大小写,如果您的 PATH 中有“./”。Cygwin 使用 git 源代码树中的 INSTALL 文件而不是 /usr/bin/install。我们必须将源树中的一些“安装”文件重命名为其他文件名。这是http://zengrong.net/post/1817.htm提到的
我在执行此操作时遇到了一个问题,我花了一个小时进行调试,所以我发布了一个答案,以防其他人来这里寻找。
实际上它与 Yorkwar 的原因相同,但错误不同。
一切顺利,直到make install
输出:
$ make install
GEN perl/PM.stamp
SUBDIR gitweb
SUBDIR ../
make[2]: 'GIT-VERSION-FILE' is up to date.
GEN git-instaweb
BUILTIN all
SUBDIR git-gui
SUBDIR gitk-git
SUBDIR perl
SUBDIR templates
install -d -m 755 '/usr/local/bin'
make: execvp: install: Permission denied
Makefile:2342: recipe for target 'install' failed
make: *** [install] Error 127
在对 UAC、setuid、icacls、所有权等进行了大量处理之后,我发现strace
实际的问题是在执行时install
:因为我有./
,PATH
并且 Windows 不区分大小写,所以它尝试执行INSTALL
,这是一个文本文件没有x
设置位。所以“权限被拒绝”是指x
没有在这个文件上设置的事实。
@Yorkwar 通过重命名所有INSTALL
文件来解决这个问题,但是另一个选择是编辑Makefile
和替换
INSTALL = install
和
INSTALL = /usr/bin/install
我在 Windows 7 64 位中使用 cygwin 32 位(在 cygwin64 出现之前安装它并且没有费心升级)。成功构建和安装git version 2.0.0.rc4.dirty
,这是git clone https://github.com/git/git.git
.
预构建的包不可用,因此您必须自己构建它。
或者,您可以下载非 Cygwin 构建并将其添加到您的PATH
.
您可以从git-scm.com/download/win安装适用于 Windows 平台的最新版本。
将以下内容添加到您的~/.profile
:
export PATH=$PATH:`cygpath 'C:\Program Files (x86)\Git\bin'`
我使用 SourceTreecygwin
中的这个 git 客户端并与 Gerrit/SSH 服务器结合使用,还没有遇到任何问题。