Gitea无法获取存储库

时间:2017-03-14 19:57:59

标签: linux git raspberry-pi gitea

我在我的覆盆子pi上安装了gitea(如果有人不知道它,它是一个开源的gogs叉子)。我在用户pi和用户git下尝试了它。在用户pi中,gitea安装在/home/pi/gitea中,而在git中,它安装在/home/git中。在这两种情况下,存储库目录都在安装根目录中。

我用webui创建了一个新的存储库,我在两次安装时尝试了2个遥控器。

rpilocal = pi@192.168.1.125:/home/pi/gitea/repositories/uname/repositoryname
rpilocal2 = pi@192.168.1.125:uname/repositoryname
rpigitlocal = git@192.168.1.125:/home/pi/gitea/repositories/uname/repositoryname
rpigitlocal2 = git@192.168.1.125:uname/repositoryname/repositoryname

当我尝试按rpilocal2rpigitlocal2时,我收到以下错误消息:

git push rpigitlocal2 master
git@192.168.1.125's password: 
fatal: 'feralheart/leltar.git' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

当我尝试推送rpilocalrpigitlocal时推送成功,但是在网络界面中,我仍然得到了“创建一个新的存储库或使用CLI推送存在”。

什么事?

1 个答案:

答案 0 :(得分:0)

我在VPS 上进行了gitea的测试设置,遇到了可能出现同样问题的问题。经过各种测试后,我发现了一个适合我的解决方法。万一它可以帮助 ......

已经有效的

就我而言,要求gitea创建一个带有初始“自述提交”的新git存储库工作正常。我可以clone,添加新提交和push。新提交出现在gitea Web UI中的第一个提交之后。

什么不起作用

如果我要求gitea创建没有初始提交 的存储库,gitea的网页用户界面就无法反映提交历史记录,即

user@client:~/projects$ mkdir myCode
user@client:~/projects$ cd myCode
user@client:~/projects/myCode$ git init
Initialized empty Git repository in /home/user/projects/myCode/.git/
user@client:~/projects/myCode$ echo "testing 1 2 3" > file.txt
user@client:~/projects/myCode$ git add file.txt
user@client:~/projects/myCode$ git commit -m0
[master (root-commit) f9d8e7] 0
 1 file changed, 1 insertion(+)
 create mode 100644 file.txt
user@client:~/projects/myCode$ git remote add origin git@server:gitea_repos/owner/myCode.git
user@client:~/projects/myCode$ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 210 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@server:gitea_repos/owner/myCode.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
user@client:~/projects/myCode$ 

git将报告成功,git@server:gitea_repos/owner/myCode.git将继续作为远程功能运行,但gitea Web UI将继续显示“空存储库”帮助页面而不是存储库浏览器< SUP>的

解决方案

因为新的提交在非空的存储库中注册,it occurred to me gitea如果git用完整提交覆盖了新项目的存根提交历史记录,gitea可能会注意到更改另一个项目的历史 。要试试这个,请按照:

3个简单步骤:

  1. New Repository网页用户界面中,创建一个新的存储库。在Initialize this repository with selected files and template创建页面上,请务必选中Create Repository旁边的复选框,然后再点击remote
  2. 在您的工作站上,将此新存根作为git添加到具有所需提交历史记录的本地user@client:~$ cd projects/myCode user@client:~/projects/myCode$ git remote add gitea git@server:gitea_repos/owner/myCode.git 存储库。

    gitea
  3. 使用所需材料覆盖user@client:~/projects/myCode$ git push -fu gitea master Counting objects: 97, done. Delta compression using up to 32 threads. Compressing objects: 100% (95/95), done. Writing objects: 100% (97/97), 55.53 KiB | 0 bytes/s, done. Total 97 (delta 45), reused 0 (delta 0) To git@server:gitea_repos/owner/myCode.git + a1b2c3...d4e5f6 master -> master (forced update) Branch master set up to track remote branch master from gitea. user@client:~/projects/myCode$ 生成的存根提交。

    -f
  4. 请注意,对于第3步:

    • git用于强制:这使-u能够执行(否则禁止)“提交树覆盖”
    • master用于 set-upstream - 这会将本地分支gitea/master通过远程跟踪分支gitea连接到由{{1管理的主分支}}

    跟进

    这种策略是一种黑客攻击,我怀疑这会留下一些东西。例如。您可能希望将分支和标记推送到gitea。 (我的测试并没有把我带到目前为止。)对于分支机构考虑--all,对于代码考虑--tags

    user@client:~/projects/myCode$ git push gitea --all
    user@client:~/projects/myCode$ git push gitea --tags
    

    YMMV,祝你好运!

    <强>脚注:

    - 我正与gitea-1.4.2-linux-amd64托管的Ubuntu 16.04.2 LTS上的virmach.com合作。

    - git在引用没有提交的存储库时使用术语“空存储库”,但在gitea用于访问{{}的内部API中1}}功能(有时候,通过git社区成员),使用术语“裸存储库”

    - gitea在引用存储库而非嵌入(作为目录git)时使用术语“裸存储库” “工作树”的根目录。裸存储库经常用作协作的规范副本,并存储在服务器上(并可从服务器访问)。例如。 'github'服务。有时,这些目录以模式./.git

    命名

    - 我尝试了一些设置变体,在project_name.git频道irc上询问,并在代码中进行了搜索。我可以得出的结论是,#gitea→钩子→git链(在空库和非空库之间不同)之间的一些差异是我VPS上的这个问题的原因。

    - 在此之前,我想过在新的存根上重播所需项目的历史记录,但这个gitea操作是一个绝望的黑客攻击:所有提交都获得新的{{1校验和,实际上,所有开发人员都必须再次克隆,就好像在新的存储库上工作一样。