git 데몬이 내가 만든 저장소를 제공하도록 만들기

git 데몬이 내가 만든 저장소를 제공하도록 만들기

나는 이것에 대해 머리를 쥐어뜯고 있었고 해결책이 없는 가능한 결론에 도달했습니다. 첫째, 나의 딜레마.

프로그래밍 방식으로 저장소를 만들 수 있는 프로젝트가 있습니다. 저장소 설명을 편집하고 기본 분기 &c를 설정할 수 있습니다. 이건 괜찮아.

git daemon또한 생성된 모든 저장소가 보관되는 폴더를 제공하는 데도 사용하고 있습니다 . 여기서 문제가 발생합니다.

저장소를 복제할 수 있지만 복제된 저장소의 .git내용이 원본 저장소와 일치하지 않습니다.

내가 생각할 수 있는 유일한 것은 내가 그럴 때이다.창조이 저장소에서는 내 시스템의 git 프로세스를 사용하고 있지만 복제할 때는 git daemon의 프로세스를 사용하고 있습니다... 그게 말이 되는지조차 모르겠고 검색에 몇 시간을 투자해도 아무것도 나오지 않았습니다.

참고로 활성화하기 위해 실행하는 명령은 다음과 같습니다 git daemon.

git daemon --reuseaddr --port=9999 --base-path=/Users/me/repos/ --export-all --verbose --enable=receive-pack --informative-errors --detach

다음은 복제 명령의 예입니다.

git clone git://localhost:9999/me/test18.git

저장소를 생성하기 위해 실행하는 명령은 다음과 같습니다.

git init
git remote add origin git://localhost:9999/me/repo.git
git symbolic-ref HEAD refs/heads/magic
# more stuff

이것들은 작동합니다. 나는 단지 git daemon내 리포지토리를 있는 그대로 제공하면 됩니다.


.git/config다음은 내가 만든 저장소의 내용에 대한 예입니다 .

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = git://localhost:9999/me/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "coolerbranch"]
    remote = origin
    merge = refs/heads/coolerbranch

복제된 동일한 저장소는 다음과 같습니다.

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = git://localhost:9999/me/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

보시다시피 [branch ...]섹션이 일치하지 않습니다.


반대로, 내가 찾지 못한 또 다른 것이 있다면 git daemon그것에 대해 듣고 싶습니다. Github는 몇 년 전부터 자체적으로 작업을 진행해 왔지만 포기했습니다.

또한 원래 이 질문을 SO에 게시했지만 다른 SE 사이트를 추가로 검색한 후 SF에 더 많은 git-daemon질문이 있다는 것을 깨달았습니다.


@조레다케:

저장소를 복제해도 구성은 복사되지 않습니다. 구성은 대부분 컴퓨터, 사용자 또는 디렉터리에 대해 로컬로 수행됩니다.

이 지식이 없으면 복제 시 git이 초기 구성을 동기화하도록 하는 방법이 있을 것이라고 가정했습니다. Git의 기본값은 서버에서 재정의할 수 없으며 사용자만 재정의할 수 있습니다.

아마도 git은 언젠가 이 옵션을 허용할 것입니다. 아마도 그렇지 않을 것입니다. 아 글쎄요.

답변1

복제된 .git이 서버의 .git 내용과 일치해야 한다고 생각하지 않습니다. 서버를 설정하려면 책의 지침을 따르는 것이 좋습니다.https://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server.

관련 정보