`
cryolite
  • 浏览: 573455 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mac OS X下自建git服务器

阅读更多
git有4种协议方式建git服务器,分别是本地协议、SSH协议、git协议和http协议。
Mac OS X自带了apache web服务器,使用很方便,但是与其它几种方式相比速度很慢,一般以http协议的方式提供git库的只读访问。
对于日常工作提交,应以git方式为好,因为速度很快。

1。开启web服务器
1.1
打开“系统偏好设置”的“共享”,勾上“Web共享”即可,可以用浏览器访问http://localhost/试试,btw:
http://localhost/~[当前登陆用户]
是登陆用户的主页

1.2 这种方式使用了WebDAV上传/修改/删除服务器上的文件,缺省情况下WebDAV是不能增删改的,所以只能pull不能push,如果git push会出现问题:
error: Cannot access URL http://localhost/<my_project>.git, return code 22

或者
error: cannot lock existing info/refs
fatal: git-http-push failed

多是WebDAV没有配制好的问题

详细情况可参考这里:HOWTO Setup WebDAV on Mac OS X Leopard
会有安全隐患,不熟的没有必要还是不要弄了。

2。安装git
去git的下载主页找最新的安装dmg下载安装,缺省安装路径在 /usr/local/git目录下

3。初始化工程repository
cd ~/Document/workspace/<my project>
git init
git add *
git commit -m "initial import"

在web服务器目录下创建新的bare repository
git clone --bare -l /Users/woo/Documents/workspace/<my project> /Library/WebServer/Documents/<my_project>.git
cd /Library/WebServer/Documents/<my_project>.git
git update-server-info


好了,现在可以用http访问git库了:
cd  /tmp
git clone http://localhost/<my_project>.git


4. http访问比较慢,一般只对外提供只读访问用,日常代码提交可以通过git协议进行:
cd /Library/WebServer/Documents/<my_project>.git
touch git-daemon-export-ok

然后启动git daemon:
sudo /usr/local/git/libexec/git-core/git-daemon --base-path=/Library/WebServer/Documents/ --syslog --verbose --pid-file=/var/run/git-daemon.pid --user=_www --group=_www --detach --enable=upload-pack --enable=upload-archive --enable=receive-pack


base-path参数指出web服务器的Documents目录为git服务器基础目录,git-daemon会扫描该目录下所有尾缀为.git的目录,如果这些目录下有git-daemon-export-ok文件,则将此目录作为git协议的输出repository,用户和用户组都设为_www,与web服务器相同。

试试是否成功:
cd /tmp
git clone git://localhost/<my_project>.git


修改源代码后提交:
git push
如果出现如下错误:
pack-objects died of signal 13
error failed to push some refs   

或者
error: unpack failed: unpack-objects abnormal exit
To git://xxx.yyy.local/<my_project>.git
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'git://xxx.yyy.local/<my_project>.git'

这类错误一般是git服务器端的问题,检查系统日志会发现:
Mar  7 22:11:50 xxx.yyy git-daemon[6334]: error: insufficient permission for adding an object to repository database ./objects

这是因为git-daemon命令启动时--user=_www --group=_www这两个参数制定的用户和用户组权限与服务器上/Library/WebServer/Documents的用户和用户组权限不一致所致。办法有两个:
a。将git服务器相关文件权限修改成www:www用户和用户组即可
sudo chown -R www:www /Library/WebServer/Documents
b。修改git-daemon启动参数(--user=www --group=www),使其与git服务器上repository文件的用户和权限一致,

git push如果出现错误
errno=Connection refused
fatal: The remote end hung up unexpectedly

这是因为git-daemon命令缺少这几个参数:
--enable=upload-pack --enable=upload-archive --enable=receive-pack


综上所述,http方式配制起来很麻烦,比较适合pull,虽然有点慢,采用git协议方式比较安全方便点,而且比较下可以发现git方式比http快的太多了。


参考:
Pro Git 2009
setting up git server fast macos x
Setting up a public (bare) repository with git


分享到:
评论

相关推荐

    Git权威指南PDF完整版

    Git权威指南 目 录 前 言 第1篇 初识Git 第1章 版本控制的前世和今生/ 2 1.1 黑暗的史前时代/ 2 1.2 CVS—开启版本控制大爆发/ 5 1.3 SVN—集中式版本控制集大成者/ 7 ...34.1.2 Mac OS X 下 cvs2svn 的...

    learn-git:一站式学习git的一切

    Git简介 文章A List Apart-git入门使用git轻松进行版本控制掌握GitHub的窍门从概念上了解Git 设计师Git Git-基础Git Windows开发人员系列Mac OS X上的Git入门 培训/教程Git沉浸式:分步教程在Github上尝试Git:由...

    git:冰岛语 Git 指南

    Git 冰岛语说明 这些教程适用于想要学习 Git 的初学者。 如果您看到错误或想要添加内容,请... 与其他系统不同,Git 可以在不接触服务器的情况下处理版本控制。 其他系统如SVN、TFS(TFVC)等。 是集中的(e. Central

    构建 ffmpeg-2023-03-30-git-4d216654ca-full-build

    FFmpeg在各种各样的构建环境、机器架构和配置下编译、运行,支持Linux、Mac OS X、Microsoft Windows、bsd、Solaris等。 full版本是完整构建,shared版本添加了头文件和库,用来学习和调试程序。

    munki:管理安装在OS X中的软件-python

    munki:管理安装在OS X中的软件 Munki macOS 的托管软件安装 简介 Munki 是 Walt Disney Animation Studios 的一个开源项目。 Munki 是一组工具,与基于网络服务器的包和包元数据存储库一起使用,macOS 管理员可以...

    Introduction-to-Distributed-Source-Code-Management-with-git:git分布式源代码管理入门研讨会-git source code

    Git是一个功能强大的命令行工具,可以在Linux,Mac OS和Windows上使用: $ git git的历史 由Linus Torvalds开发,用于2005年Linux内核开发,以替代 。 git的初始版本由Torvalds在两周内编写。 出于对现有源代码...

    fig-node-example:显示如何在 Mac OS X 上将代码共享到 docker 容器的微型无花果节点示例

    #fig 和 node.js 简单服务器 要求 安装 。 安装。 用法 git clone https://github.com/realyze/fig-node.git fig-node cd fig-node npm install fig up 然后你会看到下面的消息, Recreating fignode_web_1... ...

    precache:用于将可用的Apple更新缓存到运行缓存服务的OS X Server中

    iOS / tvOS / watchOS / Mac App Store应用程序/ OS X安装程序/组合更新之类的资产通过检测到的或提供的缓存服务器进行缓存。 如果资产当前不在缓存中,则将其下载; 如果资产在缓存中,那么将跳过资产。 进度指示...

    ffmpeg2023-12-14版本 windows版

    FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员...

    dime-server:您不起眼的Digital Work Me(DiMe)服务器

    对于Mac OS X,您需要先安装 。 您可以从Apple Mac App Store安装它。 编译中 首先,例如通过命令行克隆git存储库: git clone https://github.com/HIIT/dime-server.git 要编译,只需运行: make (如果没有...

    media-server-node:适用于Node.js的WebRTC媒体服务器

    支持的系统: Linux Mac OS X 树莓派安装只需将Medooze媒体服务器添加为对节点proyect的依赖项: npm i --save medooze-media-server分配如果不想每次使用媒体服务器时都编译本机代码,则可以预编译Medooze Media...

    灰帽-ctf

    目前支持Mac OS X或Linux。 git用于获取文件 pwgen用于生成随机密码 python -对于Ansible curl用于下载软件包和其他文件 迷你Ansible howto 学习Ansible Pothead! ansible-playbook -i inventory/hosts ...

    服务器:工作站生态系统的后端

    venv/bin/activate$ ./manage.zsh # for mac os$ ./manage.bat # for windows 测试正在运行的服务器$ curl -s --request POST localhost:5000/api/login --data ' {"username": "khalil","password":"password"} '$...

    prod_rest_client

    Bedrosians IMS UI 测试用 Java 编写的 Bedrosians IMS UI 测试开发环境Mac OS X v10.7.5 或更高版本VirtualBox 与 Ubuntu 11.10 x64 服务器吉特设置使用 Ubuntu 11.10 x64 服务器安装和设置 VirtualBox 使用 ssh ...

    icing-server:结冰媒体服务器。 镜子

    Mac OS X 假设已经安装了Java JDK 1.8,请在“ Terminal应用程序的窗口中输入以下命令: $ xcode-select --install $ brew install maven 费朵拉 $ sudo dnf install -y java-1.8.0-openjdk-devel maven git CentOS...

    galene-docker:Galène视频会议服务器

    该服务器已经在Linux / amd64和Linux / arm64上进行了测试,并且原则上应该可以移植到其他系统(包括Mac OS X和Windows)上。 该客户端使用Javascript实现,并且可以在台式机和移动设备上所有主要Web浏览器的最新...

    homelessness-map:在旧金山映射311个投诉

    该项目支持Ubuntu Linux 14.04和Mac OS X Yosemite。 Windows OS未测试或不支持它。 (可选) 或 快速开始 $ mkvirtualenv homelessness $ git clone git@github.com:sfchronicle/homelessness-map.git && cd $_ $ ...

    os-webview:OpenStax网站的前端Web应用程序

    git clone git@github.com:openstax/os-webview.git cd os-webview script/setup 生成并运行开发服务器 要构建要开发的站点并将其加载到具有默认Web浏览器中,只需运行: . script/bootstrap script/dev 这将创建...

    ESPAsyncWebServer:用于ESP8266和ESP32的异步Web服务器

    它可以在流行的主机操作系统上运行:Mac OS X,Windows,Linux 32/64,Linux ARM(例如Raspberry Pi,BeagleBone,CubieBoard)。 安装 使用“ PlatformIO主页&gt;新建项目”创建新项目将开发者/平台更新为暂存版本:...

    Redis.prefPane:Redis的系统偏好设置面板

    Redis.prefPane Mac OS X系统首选项窗格,可帮助启动和停止Redis数据库服务器。 功能包括: 数据库服务器的启动和停止在计算机启动时启用和禁用自动启动选项。截屏安装使用安装Redis 酿造安装Redis 将homebrew.mxcl....

Global site tag (gtag.js) - Google Analytics