标签: git

如何在 ext3/4 上获得透明、高效的文件系统快照或版本控制?

我一直在考虑版本控制文件系统。这是一个杀手级功能,我看过 Wayback、ext3cow、zfs、fuse 解决方案,或者只是 cvs/svn/git 覆盖。

我认为 ext3cow 是满足我要求的模型。透明、高效,但我可以不用额外的ls abc@timestamp功能。只要我以某种方式对我的文件进行自动化、透明的版本控制。

它可以是瞬时的,也可以基于 10 秒、30 秒、1 米、5 米、15 米等间隔的快照。只是可以有效处理给定目录中各种大小的数千个文件的东西,大多数文件很小,但也有一些超过 100m 到 1gb。

ZFS 并不是一个真正的选项,因为我在 linux 上(并且不想通过保险丝使用它,因为我已经有一个我想要版本的 ext3 设置,而不是新的东西)。

有哪些解决方案?

filesystems ext3 versioning git

11
推荐指数
2
解决办法
3217
查看次数

Git 推送 http(使用 git-http-backend)和 Apache 不工作

我一直在拼命尝试使用 git-http-backend 通过“smart-http”模式推动 git 工作。然而,经过数小时的测试和故障排除后,我仍然

error: Cannot access URL http://localhost/git/hello.git/, return code 22
fatal: git-http-push failed`
Run Code Online (Sandbox Code Playgroud)

我使用的是最新版本的 Ubuntu (12.04)、Apache2 (2.2.22) 和 Git (1.7.9.5) 并遵循了 Internet 上的不同教程,例如http://www.parallelsymmetry.com/howto/git .JSP

我的 VHost 文件目前看起来像这样:

<VirtualHost *:80>

    SetEnv GIT_PROJECT_ROOT /var/www/git
    SetEnv GIT_HTTP_EXPORT_ALL
    SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

    DocumentRoot /var/www/git

    ScriptAliasMatch \
            "(?x)^/(.*?)\.git/(HEAD | \
                                            info/refs | \
                                            objects/info/[^/]+ | \
                                            git-(upload|receive)-pack)$" \
            /usr/lib/git-core/git-http-backend/$1/$2

    <Directory /var/www/git>
            Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我已将/var/www/git文件夹的所有权更改root.www-data为我的测试存储库,并通过执行git config http.receivepack …

ubuntu http git apache-2.2

11
推荐指数
1
解决办法
6490
查看次数

是否可以将 etckeeper 与单个共享 git 存储库一起使用?

我注意到有几个人推荐使用etckeeper将版本控制应用于我的 /etc 目录。

在我看来,默认安装将存储库与您尝试管理的 /etc 放在同一台机器上。这适用于版本控制,但不会提供对文件进行服务器外备份的额外好处 - 或者允许我将 /etc 的部分从一台源机器复制到另一台。

是否可以在中央管理机器上共享单个 git 存储库,以便每个服务器上的 etckeeper 将其数据存储在同一位置?

(我现在用 svn 和一些自定义脚本做类似的事情来提交和恢复文件,但我必须记住在我进行更改时提交它们。)

version-control git etc etckeeper

10
推荐指数
1
解决办法
4647
查看次数

如何使用 Gitosis 删除 Git 存储库

我正在使用 Gitosis 来管理远程服务器上的一些 Git 存储库。因为我是刚开始做的,所以我犯了很多错误。这就是为什么现在我需要删除我用 Gitosis 创建的 Git 存储库。这可以使用 Gitosis 还是我必须登录到那台机器并从那里完成?

git

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

使用 gitolite 和 nginx 在 HTTP 上运行 git

我正在尝试设置一个可以通过 HTTP(S) 访问我的 git repo 的服务器。

我正在使用 gitolite 和 nginx(以及用于 Web 界面的 gitlab,但我怀疑它有什么区别)。

我搜索了整个下午,我想我被卡住了。

我想我已经明白 nginx 需要 fcgiwrap 才能与 gitolite 一起工作,所以我尝试了几种配置,但都没有工作。

我的存储库位于 /home/git/repositories。

这是我尝试过的三种 nginx 配置。

1:

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

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

       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 /home/git/repositories;
       fastcgi_param PATH_INFO $1;
       #fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    }
Run Code Online (Sandbox Code Playgroud)

结果:

> git clone http://myservername/projectname.git test/
Cloning into test...
fatal: http://myservername/projectname.git/info/refs not found: did you run git update-server-info on …
Run Code Online (Sandbox Code Playgroud)

nginx git fcgi gitolite

10
推荐指数
1
解决办法
6021
查看次数

SSH 不允许使用具有组可读权限的密钥

我有一个开发 git 服务器,当live分支被推送到时,它会部署到实时服务器。每个用户都有自己的登录名,因此post-receive实时部署的钩子在他们自己的用户下运行。

因为我不想将用户公钥维护为远程实时服务器上的授权密钥,所以我编写了一组“属于 git 系统的密钥以添加到远程实时服务器(在post-receive我使用的钩子中$GIT_SSH使用-i选项设置私钥)。


我的问题是,由于所有用户可能都希望部署到现场,因此 git 系统的私钥必须至少是组可读的,而 SSH 确实不喜欢这样。

以下是错误示例:

XXXX@XXXX /srv/git/identity % ssh -i id_rsa XXXXX@XXXXX
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: id_rsa
Run Code Online (Sandbox Code Playgroud)

我环顾四周,希望能找到强制 ssh 通过连接的方法,但我什么也没找到,但人们盲目地说除了单个用户外,您不应该允许访问任何内容。

linux ssh deployment git private-key

10
推荐指数
2
解决办法
9598
查看次数

如何在 debian 上停止 git-daemon

我正在运行 debian lenny 服务器,并且已经在其上安装了 git。现在有一个 git-daemon 进程(和适当的打开端口),但是没有我可以停止的 /etc/init.d/git 脚本。我知道有 /etc/sv/git-daemon/run 但这也无助于我停止它。

linux debian service git

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

为什么 Debian Lenny git 包没有安装 git?

如果我在 Debian Lenny 上运行以下命令:

apt-get install git
Run Code Online (Sandbox Code Playgroud)

...我无法使用 git:

# git --version
bash: git: command not found
Run Code Online (Sandbox Code Playgroud)

git debian-lenny

9
推荐指数
2
解决办法
7314
查看次数

如何让 sshfs + VPN + git 成为一个可以忍受的工作环境?

目前,我正在处理的项目的代码库远程位于公司服务器上。它必须保持这样。远程git存储库也不能公开。

我目前的设置是:

  • 连接到 VPN
  • 运行sshfs以挂载代码的副本
  • 开始处理代码
  • 当我完成后:ssh到远程服务器并在git那里运行命令

这样做的问题是,VPN 不时sshfs掉线,所以我的安装中断了,我的 IDE 冻结了。我所做的是手动重新连接 VPN,然后sshfs再次运行,然后重新开始工作。

但随着VPN跌倒的次数增多,它会变得很烦人。

所以我想知道是否有sshfs某种缓存的任何设置,这将使我能够工作,并且只有在 VPN 恢复时才同步更改。

这可能没有意义,因为如果远程驱动程序不可用,则没有任何可写入的内容。那么使用某种watch东西并用于rsync以双向方式移动更改的不同设置呢(当我保存文件时,或者当我这样做时git pull

我不能只是 git clone,因为我无法重现整个环境以“本地”工作(数据库和其他东西)

代码必须在他们的服务器中,为了让我测试/查看我的工作,我必须访问一个 URL,即我的沙箱。每次我想查看我的更改时,我都无法 git push。

vpn ssh rsync sshfs git

9
推荐指数
2
解决办法
5247
查看次数

可以浏览,但是ping不通

我支持企业网络。我无法使用 git,因为它无法解析服务器名称

fatal: Unable to look up someserver.org (port 9418) (No such host is known. )
Run Code Online (Sandbox Code Playgroud)

我也无法 ping 那个服务器(名称或 IP),但是我的浏览器可以很好地解析它。

有没有办法找出解决方法?

domain-name-system firewall windows-7 ping git

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