Windows 底下安装 git Server: Bonobo Git Server

李胤
2023-12-01
Bonobo Git Server 是一套基于 asp.net 的 git 服务器。运行于 Windows IIS 上。

把它解压缩出来放到一个目录下,设置注意几点:
1. 该目录让 IIS_User 有访问权;
2. 官方文档特意提到该目录下的子目录 App_Data 要让 IIS_User 有写入权;
3. 将该目录转换为应用程序(在 IIS 管理器里面,鼠标右键去点这个目录),可能事先要将它设置为 IIS 网站底下的虚拟目录。
4. 重点:官方文档提到:IIS7 的网站设置里面的身份验证,要把匿名用户设置为 Enable。但是,官方文档没提到要把其它认证方式都设置为 Disable。
5. 重点:官方文档没提到,这个IIS应用程序的高级设置里面(IIS 管理器里面,右键点该虚拟目录,选择【管理应用程序/高级设置】),在弹出来的框里面,应用程序池的选择,要选择 Asp.Net v4.0,不要选择带 classic 的那个。因为 .net 的应用程序池有两种:集成,经典。选择经典,这个程序不能运行。

 

一开始安装完后,网页无法访问到这个 git 虚拟目录,启动了 FireFox 的开发者工具去跟踪,才发现问题所在。

 

安装好以后,网页可以访问到。在网页里:

1. 首先登录:admin / admin

2. 创建仓库;假设仓库名称叫做:test

然后,可以远程,用 git 去访问它了。比如使用 Windows 底下的 git 的 BASH 窗口打命令:(以下使用的 git 是 mysysgit)

git clone http://localhost/mygit/test.git   这里的 test 是仓库名称。这样看起来,git 客户端是可以直接使用 http 协议的。

克隆服务器的仓库到本地以后,默认是在当前 Windows 用户目录下,创建了一个文件夹叫做 test。进入这个目录,自己创建一个文件,叫 test.txt。然后,在 git 的 Bash 窗口里面输入命令:

git add test.txt  执行成功。(这一步,需要在 Bash 窗口里面,cd 进入 test 目录,才能执行)。

然后,提交:git commit  结果会出来一堆提示,需要在本地 git 里面,注册自己的邮件和 git 帐号。根据提示输入后,再次提交,成功。

提交其实只是提交到本地的 git 仓库。要提交到服务器,必须进一步操作:

git push http://localhost/mygit/test.git  推送到远程仓库。

然后切换到另外一个 windows 用户,将上述仓库克隆下来,修改里面的文件,然后执行:

git add test.txt

git commit (执行这一步,同样要求输入你是谁,根据命令行当提示操作就可以了)

git push http://localhost/mygit/test.git 成功。

然后再切换回原来的 Windows 用户,用 git pull 拉下来。发现这里的 test.txt 真的被更新了。

上面操作的问题在于:

1. 使用 git GUI 界面的克隆菜单,在出来的界面里面,不输入目标文件夹,克隆的按钮是灰色的;输入目标文件夹,无论输入什么,都提示该文件夹已经存在。因此无法操作。

2. 使用 git 命令行(在 Bash 里面),如果做 git clone http://localhost/mygit/test.git d:\test\ 操作,则确实它在本地 D: 盘创建了 test 目录并把 test.txt 从服务器下载过来。但是如果在这里对文件进行了修改,然后在 Bash 里做 git add 操作,无论如何写文件路径,比如写 git add d:\test\test.txt 它都会提示错误,这不是一个 git 仓库。在 Bash 里面好似 CMD 里面一样做当前磁盘切换 D: 然后 cd test 是无法成功的。也就是无法把当前路径切换进去。

3. 如果 clone 命令不跟目标文件夹,则它自动在当前 Windows 用户文件夹底下(C 盘的 User 目录下),创建本地仓库 test 目录并把文件下载到这里。然后在这里修改文件后,可以 add, commit 然后 push 成功。

上述问题,可能是我不懂 git 的用法,命令没搞对导致。

下载一个 git 小乌龟,用 GUI 菜单操作,不用记忆命令。这次,可以成功地克隆仓库到 D 盘,然后在 D 盘改写文件后,add, commit, push 成功。

这个小乌龟只提供图形界面,实际的操作它还是依赖 mysysgit 这套 git for windows 的 git.exe 


总结:看起来,git.exe 自己带了网络客户端,可以直接做远程访问操作,至少是支持 http。

 类似资料: