标签: git

git http-backend 在每个浏览器访问时显示信息

我目前正在为我的私人项目托管我自己的 git-repos。为此,我使用 Apache 和标准的 git http-backend

现在,可以在如下 URL 下访问存储库:

http://vcs.myserver.lc/git/Repo.git
Run Code Online (Sandbox Code Playgroud)

有了这个 URL,我可以使用向/从这个 repo 推送、获取和克隆。然而,在浏览器中打开这个 URL 只会给我一个空白页面,现在我正在寻找一种方法来避免这种情况。

相反,我希望 Apache 显示一个页面,其中包含一些信息,例如:

这不是网页,这是一个 git-repo。您可以使用git clone [URL]...

如果[URL]将其替换为当前 URL(例如使用 PHP)会很好,但是纯 HTML 也可以。

我知道这应该是可能的,因为 对他们的回购做同样的事情。

我设法vcs.myserver.lc通过DocumentRoot在 VHost-config 文件中指定 a来为-domain做类似的事情:

DocumentRoot /srv/http/vcs/
Run Code Online (Sandbox Code Playgroud)

在此路径中,我放置了一个index.html带有基本说明的简单文件。

那么,当 git-client 仍然可以使用 repo 时,他们是否有任何简单的方法来显示浏览器的信息端?我可以将浏览器重定向到特定的信息站点吗?

git arch-linux apache-2.2

5
推荐指数
1
解决办法
244
查看次数

如何使用 Nginx + git-http-backend + fcgiwrap (Debian Squeeze)

我正在尝试使用 Nginx 设置 git-http-backend,但是在浪费了 24 小时的时间并阅读了我所能阅读的所有内容之后,我认为这个配置应该可以工作,但没有。


server {
   listen   80;
   server_name  mydevserver;
   access_log /var/log/nginx/dev.access.log;
   error_log /var/log/nginx/dev.error.log;

location / {
   root  /var/repos;
}

location ~ /git(/.*) {
   gzip off;
   root /usr/lib/git-core;

   fastcgi_pass  unix:/var/run/fcgiwrap.socket;
   include /etc/nginx/fastcgi_params2;

   fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
   fastcgi_param DOCUMENT_ROOT /usr/lib/git-core/;
   fastcgi_param SCRIPT_NAME git-http-backend;

   fastcgi_param GIT_HTTP_EXPORT_ALL "";
   fastcgi_param GIT_PROJECT_ROOT /var/repos;
   fastcgi_param PATH_INFO $1;
   #fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
}
}
Run Code Online (Sandbox Code Playgroud)

/etc/nginx/fastcgi_params2 的内容


    fastcgi_param  QUERY_STRING       $query_string;
    fastcgi_param  REQUEST_METHOD     $request_method;
    fastcgi_param  CONTENT_TYPE       $content_type;
    fastcgi_param  CONTENT_LENGTH     $content_length;

    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
    fastcgi_param  REQUEST_URI        $request_uri;
    fastcgi_param  DOCUMENT_URI       $document_uri; …
Run Code Online (Sandbox Code Playgroud)

debian nginx git

5
推荐指数
1
解决办法
9626
查看次数

从 php 脚本运行 git pull

我正在尝试使用 Git、GitHub 和 SSHPerfect Workflow,但似乎无法运行git pull. 我试过了git status,没问题。

git pull 2>&1我得到:

错误:无法打开 .git/FETCH_HEAD:权限被拒绝

我试图 chmod .git dir 到 777 没有运气。

当我whoami从浏览器运行时,它向我显示:apache

- - 编辑 - -

我刚刚做了chown apache:apache -R .git,现在我得到:

无法创建目录“/.ssh”。主机密钥验证失败。致命:远端意外挂断

php permissions ssh git apache-2.2

5
推荐指数
1
解决办法
1万
查看次数

Git 推送失败,错误“内存不足”

我在内存不足的服务器上使用 gitosis,特别是大约 512 MB。当我尝试推送一个大文件夹(恰好是来自 android 手机的备份)时,我得到:

me@corellia:~/Configs/$ git push origin master

Counting objects: 18, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (14/14), done.
fatal: Out of memory, malloc failed MiB | 685 KiB/s   
error: pack-objects died of signal 13
error: failed to push some refs to 'git@dagobah:Configs'
Run Code Online (Sandbox Code Playgroud)

我一直在寻找的网站,并特别发现:http://www.mail-archive.com/git-users@googlegroups.com/msg01747.html以及HTTP://git.661346.n2.nabble。 com/Out-of-memory-error-during-git-push-td5443705.html但这些似乎对我没有帮助,原因有两个:1)我推送时实际上并没有内存不足。当我在推送期间运行 'top' 时,我得到:

24262 git       18   0 16204 6084 1096 S    2  1.2   0:00.12 git-unpack-obje   
Run Code Online (Sandbox Code Playgroud)

此外,在推送期间,如果我运行 /head/meminfo,我会得到:

MemTotal:       524288 kB
MemFree:        289408 kB
Buffers: …
Run Code Online (Sandbox Code Playgroud)

git

5
推荐指数
1
解决办法
2万
查看次数

GPG 在部署脚本中验证 git 标签

我们希望我们的部署过程直接从我们的 git 存储库中提取,但只有在签名时才激活新的更改(通过 git tag -s在使用 GPG 签名)签名。我发现很少有使用 GPG 验证 git 标签的工作流示例,所以我不确定是否有此类事情的“最佳实践”。

到目前为止,我们所拥有的看起来是这样的:

# discard erroneous local changes
git reset --hard HEAD

# get changes
git fetch
start=$(git rev-parse FETCH_HEAD)

# get new tags
git fetch --tags

# find most recent release tag
tag=$(git describe --abbrev=0 --match "release-*" $start)

if git tag -v $tag; then
  git checkout $tag
  ...do stuff...
fi
Run Code Online (Sandbox Code Playgroud)

这有意义吗?特别是,为了避免在部署过程中进行错误的本地更改git reset --hard HEAD,这样做是正确的吗?此外,记住FETCH_HEAD似乎是必要的,其他明智的标签随后HEAD不会出现在git describe. 有没有另一种方法可以做到这一点?

或者,如果您有一个使用签名标签进行验证的文档化部署工作流程,我会对指向它的链接感兴趣。

deployment git

5
推荐指数
1
解决办法
237
查看次数

Redmine 2.x 与 gitolite 集成

这里有人用gitolite正确配置了Redmine 2.x(我使用的是 Redmine 2.0.3)吗?

如果是,如何?

redmine git gitolite ruby-on-rails-3

5
推荐指数
1
解决办法
1780
查看次数

将多个 svn 存储库迁移到单个 git 存储库中

我们希望从 svn 永久迁移到 git,以便能够在分支和协作方面使用 git 更好的功能。

我们当前的 svn 存储库看起来像这样

svnrepo/
   frontend/
      trunk
      branches/
         ng/
         ...
      tags/
         1.x
         ...
   backend/
      trunk
      branches/
         ng/
         ...
      tags/
         1.x
         ...
Run Code Online (Sandbox Code Playgroud)

工作布局是我们检出前端项目,并在其中创建一个后端文件夹并检出后端项目。

我们现在想迁移到 git,并放弃前端和后端之间的拆分(就独立项目而言),因为它给我们带来的问题多于优势。我们希望它们都在一个 git 存储库中。

我想使用svn2git进行转换。不幸的是,最新的开发都发生在一个分支中,而不是在主干中,但我认为这对于 svn2git 来说应该不是问题。因此,新的 git 存储库布局应如下所示:

/            => svnrepo/frontend/branches/ng
/backend     => svnrepo/backend/branches/ng
Run Code Online (Sandbox Code Playgroud)

其中 => 表示“迁移/转换自”。

对于转换,我们没有必要将 svn 存储库中的所有标签和分支转换为 git。这对我们来说并不重要。然而重要的是,我们拥有所有提交到分支/ng 目录中的所有文件的完整历史记录,返回到主干分支以及之前发生在主干中的所有提交。我们希望所有这些提交都在单个 git 存储库中具有上述布局。这甚至可能吗?我们将如何做到这一点?

我已经在 google 和 stackoverflow 12 中进行了搜索,但找不到我们问题的确切解决方案。

svn migration version-control git

5
推荐指数
1
解决办法
8297
查看次数

如何通过 SSH 门将 git 用户转发到 gitserver?

我试图通过 ssh 门设置 ssh/git 访问,但 googleing 已经空了。基本上,我希望将用户 git 到我的 ssh 门的任何连接转发到我的 ssh 服务器,以便我可以远程进行推和拉。但是,如果任何其他用户连接,我希望他们像往常一样登录。

internet--(git)-->gate--(git)--> git-server

internet--(user)-->gate
Run Code Online (Sandbox Code Playgroud)

任何帮助或建议将不胜感激。

在客户端执行此操作的一种方法是将以下内容添加到您的 .ssh/config:

Host git.life-hack.org
    HostName          git.life-hack.org
    ProxyCommand      ssh darkclown@www.life-hack.org nc %h %p
    User              git
Run Code Online (Sandbox Code Playgroud)

但我希望有一种方法可以做到这个服务器端。

ssh git forwarding

5
推荐指数
1
解决办法
1740
查看次数

企业环境中 DVCS 管理的合规性,从 CVCS (Perforce) 过渡会带来什么?

我在一家大型跨国公司担任软件工程师,目前我正在与 IT 和其他开发人员就采用 DVCS(Mercurial 和/或 Git)进行非常愉快的对话。

IT 提出的问题之一是合规性和知识产权(顺便说一句,Perforce 大声谈论了这一点以及与 Git 相关的问题)。在我看来,IT 的印象是因为 Mercurial/Git 是分布式的,所以在每台开发人员机器上都有存储库是一种失控的情况,他们必须审核每个存储库。

我认为 IT 部门担心的另一件事是现在拥有“100”个存储库而不是“10”个庞大的存储库,我的印象是他们认为维护/监控它们的管理工作会增加“10-折叠”。我认为存储库管理软件(Rhodecode、Atlassian Stash)将是实现访问控制和可追溯性的第一步。

我的问题是:

  1. 存储库管理软件是否足以满足这种规模的公司(比方说约 2000 名开发人员和约 10 个服务器上的约 50 个 Perforce 仓库)是否合规(并满足其他企业要求?)

  2. 这个“合规性”要求到底包含什么?,您是否可以提供任何参考资料(例如 IEEE 标准或类似标准)?

我的公司已经使用 Perforce 大约 10 年了

mercurial git perforce

5
推荐指数
1
解决办法
122
查看次数

如何通过 sudo 对不同用户使用 etckeeper 并在提交消息中使用正确的用户?

我正在一个有几个管理员用户的服务器上工作。它们中的每一个都可以sudo用来进行配置更改。我们正在/etc使用etckeeper保持我们的目录版本控制。

但是,当我或其他管理员调用 时sudo etckeeper commit COMMITMESSAGE,git 使用root用户的名称和电子邮件作为提交消息。git config user.name在这种情况下,在 etc 存储库上的设置不起作用,因为每次etckeeper commit调用时,都将使用相同的数据。

我想要的是实际用户名和电子邮件出现在etckeeper git 存储库中,以便从提交日志中我可以追踪谁做了哪些更改。

任何帮助是极大的赞赏!

ubuntu debian sudo git etckeeper

5
推荐指数
1
解决办法
679
查看次数