我在位于Windows系统的Apache http服务器中发布了几个git存储库。并且文件保存在同一台计算机中。现在我想将这些git存储库移动到另一台计算机,其中还有一个带有gitweb的Apache http服务器。通常我使用git clone http://username@ipaddress/git/repository_name
将这些存储库克隆到其他本地计算机中。
但是当我直接将这些git存储库复制到一个git根目录中时,git clone
将报告一个关于info/refs
的错误。
有没有有效的方法来完成这项工作?谢谢。
更新:
在Windows 7计算机中,我将这些存储库保存在F:/gitroot
目录中。在httpd.conf
中,相关配置如下:
SetEnv GIT_PROJECT_ROOT F:/gitroot
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ "D:/Program Files/Git/libexec/git-core/git-http-backend.exe/"
<Directory "D:/Program Files/Git/libexec/git-core/">
Allow From All
</Directory>
<Directory "F:/gitroot">
Options All
AllowOverride None
Order Deny,Allow
Deny From All
Allow From 192.168.0.0/24
Allow From 127.0.0.1
Allow From All
</Directory>
<Location /git >
AuthType Basic
AuthName "Git repository"
AuthUserFile F:/gitroot/htpasswd
Require valid-user
</Location>
为清楚起见,我在test
中创建了一个名为F:/gitroot
的新目录,然后进入test
目录git init --bare
,然后我们可以初始化一个新的git存储库。然后在其他计算机中,我们可以使用git clone http://username@windows_ipaddress/git/test
来克隆此存储库以进行开发。我们也可以使用git push/pull origin master
来执行有关git的操作来更新或修改git存储库。
现在,我想将F:/gitroot
中的这些存储库移动到操作系统为Ubuntu 12.04
的另一台计算机中,并且还安装了apache服务器并使用gitweb进行配置,以便在Windows中进行http访问系统。我只是将F:/gitroot
中的这些文件复制到Ubuntu计算机的/media/backup_data/gitroot
中。这些git存储库的结构没有改变。
当我使用git clone http://username@ubuntu_ipaddress/git/test
时,错误是:
Cloning into 'test'...
fatal: http://192.168.0.2/git/test/info/refs not found: did you run git update-server-info on the server?
最后,我找到了答案:我们应该更改复制目录的权限。
sudo chown -R www-data:www-data test
然后,git clone
将成功执行。
答案 0 :(得分:0)
我在原帖的UPDATE
部分回答了这个问题。