같은 사이트 GitHub 및 GitLab 는 방법을 제공합 병합하는 지점에서 직접 자신의 웹 인터페이스를 제공합니다. 주어진 그러한 사이트 저장 맨 repos,그들은 어떻게 작업을 수행할 수 merges? 할 수 있습 같은 일을 수행 명령행에서 벌거벗 clone? 내가 찾은 이것 으로 가능한 대답을 사용하여 배관의 명령입니다.
기 때문에 GitHub 닫원,우리는 확실히 말할 수 없는 방법을 정확하게 그들의 백엔드 병합 처리 작업입니다. 그러나, GitLab 은 오픈 소스는 우리가 할 수 있습을 엿 구현 정보가 있는 시간이 지남에 따라 변경됩니다.
는 방법 GitLab 가
오늘날 대부분의 git 관련 기능이 있는 표면에서 UI 를 포함하여,git 병합에 GitLab 에 의해 처리됩 gitaly 구성 요소의 GitLab,과 상호 작용하는 물리적 보관 git repositories. 그것은 주로 사용하여 종속된 라이브러리, git2go,을 수행하기 위한 실제적인 git 작업입니다.
가까이 보고서에 대한 소스 코드 gitaly
최고의 평가를 내가 만들 수 있는 gitaly 실제로 는 광범위하게 사용 작업을 위해 나무를 git 포함하여 작업을 위해 병합할 필요가 없습니다. 저장소 및 작동나무가 일반적으로 열에 복제를"격리"디렉토리는 단지 임시 직원 만든 디렉토리 비행 및 저장소의 작업무이에 복제 temp 디렉토리. 십시오( 검역에 있습니다.go#L40-58,에서 호출 합니다.go#L53).
그들은 어떻게 작업을 수행할 수 merges?
그래서,당신의 질문에 대답:적어도 GitLab,작업무 는 사용한 병합(사이에 다른 작업)하고 있는지에서 수행되는 베어냅니다. 당신은 단지 그들을 볼 수 없기 때문에 임시 디렉토리에 사용되기 전에 그들은 실제 저장소 경로입니다.
우리는 아마도 가정 GitHub 가 비슷하지만,그것은 불가능을 확실히 알 수 있습니다.
그것을 할 수 있습니까?
할 수 있습 같은 일을 수행 명령행에서 벌거벗 clone?
당신은 지적을 하나의 예를 보인 하는 작업을 확인하지 않고 밖으로 작동하는 나무입니까? 하지만 그것은 작품으로 쓰는 나무(사용 git write-tree
),는 실용적인 수준에 보이지 않는 어떤 이점을 말한 복제에서 벌거벗은 repo 고 확인하는 작업이 트리 및 사용 git
운영합니다. 성능(을 예측 가능한 이의제기),사용할 수 있습 tempfs 또는 다른 메모리 매핑된 위치에 있습니다.
나도 모르는 연결할 것이 충분한 수행을 위한 다양한 병합 사용된 전략에 의해 git merge
.
그래서에서 전문적,어쩌면? 대답은 당신이 연결된 것 같다는 그 질문에 대답니다. 실제적인 수준에 유용할 것이 아니,그것은 보이지 않는다.
relativePath
이 경우에는 임시 디렉토리 만들어지는 상대적인 저장소에서 디스크에 있습니다. 그것처럼 보이는 그것의 복제 repo,다음 재정의 개체 경로(quarantinedRepo.GitObjectDirectory = relativePath
가) quarantineRepo
객체를 tempdir(는 것을 반대로 나는 가정은 기본값의 실제 저장소의 개체 위치에서 반환된 복제 방법).
git clone --shared
.