GVKun编程网logo

通过Apache的gitolite仓库的GitSmartHTTP不允许我推送(git访问不了)

15

在本文中,我们将为您详细介绍通过Apache的gitolite仓库的GitSmartHTTP不允许我推送的相关知识,并且为您解答关于git访问不了的疑问,此外,我们还会提供一些关于2.github创建

在本文中,我们将为您详细介绍通过Apache的gitolite仓库的GitSmartHTTP不允许我推送的相关知识,并且为您解答关于git访问不了的疑问,此外,我们还会提供一些关于2. github创建 git仓库,克隆,拉取和推送操作(所有的git命令前提是一定在当前项目目录下)、7步把本地Git仓库推送到已新建的Github仓库、Apache DocumentRoot的Gitolite本地工作副本、Centos7 以http方式搭建git服务器 apache+git的有用信息。

本文目录一览:

通过Apache的gitolite仓库的GitSmartHTTP不允许我推送(git访问不了)

通过Apache的gitolite仓库的GitSmartHTTP不允许我推送(git访问不了)

我设置了一个git-http-backend CGI脚本来处理我的git.domain子域。 服务器位于AWS云上的ELB(弹性负载均衡器)之后。 我的服务器configuration如下(我的git托pipe由gitolite处理):

<VirtualHost *:80> ServerName git.domain ServerAdmin hjpotter92+git@domain #SuexecUserGroup git git DocumentRoot /opt/gitolite/repositories/ PerlLoadModule Apache::Authn::Redmine SetEnv GIT_PROJECT_ROOT /opt/gitolite/repositories/ SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER # Have also tried removing this variable SetEnv GIT_HTTP_EXPORT_ALL ScriptAliasMatch "(?x)^/(.*/(HEAD | info/refs | objects/(info/[^/]+ | [0-9a-f]{2}/[0-9a-f]{38} | pack/pack-[0-9a-f]{40}.(pack|idx)) | git-(upload|receive)-pack))$" /opt/gitolite/git-core/git-http-backend/$1 <Directory "/opt/gitolite/git-core"> AllowOverride None Options +ExecCGI -Includes Require all granted </Directory> <Location /> # enabled in desparation... # saw it somewhere in bugzilla powered mailing list DAV On Order allow,deny Require all granted AuthType Basic AuthName "Git Repositories" AuthUserFile /dev/null Require valid-user PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler RedmineDSN "DBI:MysqL:database=redmine;host=endpoint.rds.amazonaws.com" RedmineDbUser "user" RedmineDbPass "your" RedmineGitSmartHttp yes </Location> LogLevel info CustomLog /var/log/apache2/gitolite.access.log combined ErrorLog /var/log/apache2/gitolite.error.log </VirtualHost>

我的apache服务器是由www-data:www-data user / group运行的,gitolite是用git:git user / group设置的。 为了让apache读取/写入存储库,我做了:

# usermod -a -G git www-data // and as a desparate measure,in frustration,the following: # usermod -a -G www-data git

PerlAccessHandler和用户身份validation工作正常,因为我能够使用redmine安装程序的有效凭据克隆我的存储库。

但是,当我试图推动; 我在服务器日志中得到以下内容:

在Ubuntu 14.04上,VirtualHost总是使用Apache返回默认主机

我如何设置VirtualHosts指向同一IP上的两个端口到不同的ServerNames?

如何在Debian上的Apache 2.4中selectPHP版本5和7?

如何在Ubuntu上为Apache2configuration子域名?

为什么我的PHP源代码显示?

10.0.225.176 [11/Feb/2017:07:46:26 +0530] "GET /xxx.git/info/refs?service=git-upload-pack HTTP/1.1" 401 726 "-" "git/2.11.0" 10.0.225.176 [11/Feb/2017:07:46:27 +0530] "GET /xxx.git/info/refs?service=git-upload-pack HTTP/1.1" 401 725 "-" "git/2.11.0" 10.0.225.176 [11/Feb/2017:07:46:27 +0530] "GET /xxx.git/info/refs?service=git-upload-pack HTTP/1.1" 200 848 "-" "git/2.11.0" 10.0.225.176 [11/Feb/2017:07:46:27 +0530] "POST /xxx.git/git-upload-pack HTTP/1.1" 200 130408 "-" "git/2.11.0"

并在客户端(以下出现在我的负载平衡器,30秒到10分钟的任何连接超时后):

Counting objects: 2,done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2),done. Writing objects: 100% (2/2),930 bytes | 0 bytes/s,done. Total 2 (delta 1),reused 0 (delta 0) error: RPC Failed; HTTP 504 curl 22 The requested URL returned error: 504 GATEWAY_TIMEOUT fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly

通常情况下,我也有长度为0的git-upload-pack的POST (对于同一个存储库中的同一个命令)

10.0.225.222 [11/Feb/2017:07:50:55 +0530] "POST /pandorica.git/git-receive-pack HTTP/1.1" 200 0 "-" "git/2.11.0" 10.0.225.222 [11/Feb/2017:07:53:21 +0530] "POST /pandorica.git/git-receive-pack HTTP/1.1" 200 0 "-" "git/2.11.0"

并在我的服务器错误日志中收到以下内容:

[core:error] [pid 1683] (70007)The timeout specified has expired: [client 10.0.225.176:2534] AH00574: ap_content_length_filter: apr_bucket_read() Failed [cgid:error] [pid 1683] (70007)The timeout specified has expired: [client 10.0.225.176:2534] AH02550: Failed to flush CGI output to client

我甚至玩过git用户的setuid和setuid,希望能帮我推送一个仓库。 但无济于事!

chmod u+s /opt/gitolite/repositories chmod g+s /opt/gitolite/repositories // and the same commands for `*.git` inside `repositories`

/opt/gitolite/repositories/xyz.git/的gitconfiguration:

http.postbuffer=200M core.repositoryformatversion=0 core.filemode=true core.bare=true redminegitolite.projectid=xxx http.receivepack=true http.uploadpack=true

对于参考资料,我已经完成了以下各项:

GIT-HTTP的后端

Apache和git-http-backend

如何设置通过http的git?

用Apache 2.4设置git-http-backend

在Windows上设置Git服务器使用git-http-backend.exe

如何设置Apache VHost,使其开始接受git push 。

虚拟主机2没有wwwredirect到虚拟主机1

configuration虚拟主机和本地主机redirect到xampp文件夹

如何在Nginx中设置大量的dynamic虚拟主机?

Nginx反向代理设置,连接到上游时,768个worker_connections是不够的

将Google云端硬盘目录用作Apache虚拟主机

总结

以上是小编为你收集整理的通过Apache的gitolite仓库的GitSmartHTTP不允许我推送全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

2. github创建 git仓库,克隆,拉取和推送操作(所有的git命令前提是一定在当前项目目录下)

2. github创建 git仓库,克隆,拉取和推送操作(所有的git命令前提是一定在当前项目目录下)

步骤:

  1.点击小猫,回到初始页面

  2.点击start a project,首先会出现一个验证email地址(我们注册的时候,有一个email输入,进去邮箱验证一下)

 

 3.重新点击start a project,进入一个页面。填完以后点击 create repository

4.出现以下的页面,只需要关心框里面的那一行信息,这是远程仓库的地址。之后的都是一些git的命令。

需要注意ssh和https,之前我们配置的是ssh,所以,我们就要用到ssh里面的地址。

5.可以在自己的本地新建一个文件,cd到文件夹下,然后执行 “git clone git@github.com:peixm/Autotest.git” 这个命令,那么,本地就会有了这样的项目

6.自己在本地修改项目,新建文件,然后都可以提交到远程仓库中去。

首先新建一个test.txt文件,然后往里面随便写点什么。

然后git status是查看项目有什么修改,下面出现红色的test.txt,说明有一个test.txt是被修改过,或者新加的。

之后执行git add test.txt ,如果由多个,可以执行 git add .  代表全部添加进去

然后说明提交的信息用命令   git commit -m "提交的信息"

接下来直接提交到远程仓库。用git push命令

 

7.现在我们来看 github上面。先点击绿色的头像,然后点击Your profile,进入一个页面,点击你所提交的项目。

8.如果要下拉的话,需要用到git pull的命令。

fork: fork怎么用,如果第一次没有fork过,那么先拷贝以下项目的路径,作为upstream master。然后点击fork一下,再点击your profile,然后查看自己的地址。将自己的地址作为 origin 仓库。每次提交代码都是提交到自己的origin仓库。

以下是一些命令

git pull upstream master  从远程仓库拉取代码

git remote add upstream +ip  设置远程仓库的地址

 

git remote -v 查看当前仓库的地址  查看所有仓库地址

git remote origin set-url URL 

git remote rm origin   先删除后添加

git remote add origin http  添加自己的仓库地址

 

 

 

7步把本地Git仓库推送到已新建的Github仓库

7步把本地Git仓库推送到已新建的Github仓库

你在本地已经一个项目,想使用Git进行版本管理,并推送到已新建的GitHub仓库。可参考以下步聚:
# 1 进入项目目录
cd /xx/xx/o2o

# 2 初始化本地git仓库
git init

# 3 在你的项目中设置你在GitHub新建的公开仓库,并命名为 origin
git remote add origin https://github.com/Guoye/o2o.git

# 4 拉取Github仓库上master主分支上的文件
git pull origin master

##########代码提交并推送#################

# 5 把所有的代码加入缓存区 除.gitignore排除外
git add *

# 6 提交代码,并附上消息:"init"
git commit -m "init"

# 7 推送代码到远程仓库 origin 的master主分支上
git push --set-upstream origin master

# 完成

Apache DocumentRoot的Gitolite本地工作副本

Apache DocumentRoot的Gitolite本地工作副本

如何解决Apache DocumentRoot的Gitolite本地工作副本?

| 我有git和gitolite的系统设置。一切工作正常,除了我希望我的结构像这样: 本地环境->开发服务器->生产服务器 我在开发服务器上安装了一个存储库,并且已成功将其克隆到本地环境中。现在,我需要的是开发服务器上的本地文件系统工作副本,但是我不确定如何使用gitolite做到这一点。
git clone /home/gitolote/repositories/myrepo.git
正常工作,直到我尝试推/拉为止,这时我得到了:
remote: ENV GL_RC not set
remote: BEGIN Failed--compilation aborted at hooks/update line 20.
remote: error: hook declined to update refs/heads/master
关于如何用乙醇钠做这件事的任何想法?     

解决方法

您正在为克隆使用本地协议,这意味着您将完全绕过gitolite(通过ssh force命令调用gitolite脚本)。 您应该使用兼容gitolite的地址在开发服务器上进行第二次克隆:
git clone git@gitoliteserver:myrepo.git
该第二个回购协议将能够在您要开发的服务器上提供“本地文件系统工作副本”的同时,将其推入/拉出gitolite服务器。     ,如果需要使用本地协议,则只需将
GL_BYPASS_UPDATE_HOOK
环境变量设置为
1
gorgo@somegitoliteserver:~/testing$ GL_BYPASS_UPDATE_HOOK=1 git push
Counting objects: 3,done.
Delta compression using up to 3 threads.
Compressing objects: 100% (2/2),done.
Writing objects: 100% (2/2),234 bytes,done.
Total 2 (delta 1),reused 0 (delta 0)
Unpacking objects: 100% (2/2),done.
To file:///home/gitolite/repositories/testing.git/
96be337..ab5ca6d  master -> master
    

Centos7 以http方式搭建git服务器 apache+git

Centos7 以http方式搭建git服务器 apache+git

用到apachegit

第一步,安装httpdgit

yum install git httpd

第二步,启动httpd服务

systemctl start httpd.service

第三步修改firewalld配置文件和重启firewalld

firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart firewalld.service

第四步,创建git仓库

mkdir -p /opt/http_git/test.git
cd /opt/http_git/test.git
git init --bare

//设置权限
chown -R apache:apache /opt/http_git

第五步,创建账号

// testuser为账户名 可以随意定义
htpasswd -m -c /etc/httpd/conf.d/git-team.htpasswd testuser
 
// 修改git-team.htpasswd文件的所有者与所属群组
chown apache:apache /etc/httpd/conf.d/git-team.htpasswd
 
// 设置git-team.htpasswd文件的访问权限
chmod 640 /etc/httpd/conf.d/git-team.htpasswd

第六步,设置apache,使其请求转发到git-cgi:

vi /etc/httpd/conf/httpd.conf
 
// 在最后一行IncludeOptional conf.d/*.conf的上面添加下面内容:
<VirtualHost *:80>
        ServerName 192.168.1.55
        SetEnv GIT_HTTP_EXPORT_ALL
        SetEnv GIT_PROJECT_ROOT /opt/http_git
        ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
        <Location />
                AuthType Basic
                AuthName "Git"
                AuthUserFile /etc/httpd/conf.d/git-team.htpasswd
                Require valid-user
        </Location>
</VirtualHost>
 
///
ServerName是git服务器的域名,这里最后填写你机子的IP
/opt/http_git是代码库存放的文件夹
ScriptAlias是将以/git/开头的访问路径映射至git的CGI程序git-http-backend
AuthUserFile是验证用户帐户的文件

第七步,重启httpd

systemctl restart httpd.service

之后就可以进行clone

git clone http://server/git/test.git

如何出现push权限被禁止的话,需要关闭selinux

//查看selinux状态
getenforce

//临时关闭selinux
setenforce 0

//永久关闭selinux
vi /etc/sysconfig/selinux
//将SELINUX=enforcing改为SELINUX=disabled
//重启服务器即可

 

今天的关于通过Apache的gitolite仓库的GitSmartHTTP不允许我推送git访问不了的分享已经结束,谢谢您的关注,如果想了解更多关于2. github创建 git仓库,克隆,拉取和推送操作(所有的git命令前提是一定在当前项目目录下)、7步把本地Git仓库推送到已新建的Github仓库、Apache DocumentRoot的Gitolite本地工作副本、Centos7 以http方式搭建git服务器 apache+git的相关知识,请在本站进行查询。

本文标签: