Search code examples
gitversion-controlgitosis

gitosis and git clone problem


I have installed gitosis, but i have strange thing when i'm working with repos. In config i have

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = me@server me@laptop

[group prj1]
writable = prj1
members = me@laptop

and in /home/git/repositories i have created directory prj1.git with empty git repo.

i can work with gitosis-admin from server and laptop without problems, but when i'm trying to git clone prj1 on my laptop i see

$ git clone git@server:prj1.git
Initialized empty Git repository in /Users/alec/temp/prj1/.git/
fatal: no matching remote head

ok, lets push prj1 from laptop to server:

$ git push origin master:refs/heads/master
ERROR:gitosis.serve.main:Repository read access denied
fatal: The remote end hung up unexpectedly

Whats wrong?


Solution

  • Would the following, done on your laptop, solve this issue?
    Instead of a git clone:

      mkdir prj1
      cd prj1
      git init
      touch README
      git add .
      git commit -m "Added blank readme"
      git remote add origin git@server:prj1.git
      git push origin master
    

    ebneter adds in the comment:

    You might mention that the reason this works is that you can't clone an empty repo.
    (As my users regularly discover...

    And that reminds the OP question:

    ... and in /home/git/repositories I have created directory prj1.git with empty git repo

    which is not ideal right there.
    This SO question mentions the issue of cloning an empty repo:

    In other words, don't attempt to clone the empty repo, but rather after creating it, push to it a simple repo containing one innocuous file. Then it is no longer empty and can be cloned.


    Since then, Chris Johnsen comments:

    Any Git later than 1.6.2

    (so actually since March 2009)

    can “clone” empty repositories.
    (scare quotes because it really just amounts normal initialization plus setting up a remote, and creating a tracking configuration for the presumed, eventual master branch).