2010-08-16 1 views
1

가능합니까?작업 디렉토리에서 로컬 자식 저장소를 분리하는 방법은 무엇입니까?

.git 디렉토리를 체크 아웃 디렉토리 이외의 다른 드라이브에 설치하고 싶습니다. 둘 다 분리 할 수있는 방법을 찾지 못했습니다.

이유는 다음과 같습니다. 매우 느린 네트워크 드라이브와 제한된 공간에 교환 영역이 있으며 이것은 시간 초과가있는 진짜 악몽입니다. 최소한 리포지토리 작업 (svn 리포지토리와의 동기화)은 시간 초과를 피하기 위해 충분히 빠르게 수행 될 수 있으며 성능 저하로 인해 체크 아웃시 파일 복사가 수행 될 수 있습니다. 이 상황에 대처할 방법을 찾지 못했습니다. (내 제어 권한이 아님)

더 좋은 제안이 없다면 로컬 git 저장소로 대체하고 체크 아웃을 rsync'ing하면됩니다. 느린 드라이브로오고가는 두 방향의 방향.

당신은 더 좋은 아이디어가있을 것입니다! 당신은 set the GIT_DIR environment variable을 할 수

답변

4

:

$GIT_DIR 환경 변수를 설정 한 다음이 저장소의 기본 대신 ./.git의 사용할 수있는 경로를 지정됩니다. 환경 변수를 설정하는 것은 어떤 이유로 불가능한 경우

, 당신은 어떤 자식 명령으로 --git-diroption를 사용할 수 있습니다

--git-dir=<path> 

저장소의 경로를 설정합니다. 이는 GIT_DIR 환경 변수를 설정하여 제어 할 수도 있습니다. 현재 작업 디렉토리에 대한 절대 경로 또는 상대 경로 일 수 있습니다.

+0

계획을 세우는 것이 좋지 않은 repo가 ​​하나만있는 경우를 제외하고는 명령 행 옵션을 사용하는 것이 좋습니다. – Cascabel

+0

힌트를 보내 주셔서 감사합니다. 나는이 옵션이 좋은 것을 간과하거나 오해했다. 내 유스 케이스가 다소 이상하다는 것을 안다. 하지만 자식은 이런 이상한 상황에서도 대처할 수 있습니다! :-) – jdehaan

2

귀하의 기본 드라이브에 전체 리포를 보관하는 것이 좋습니다. 너는 너의 통제 할 수없는 드라이브에 벌거 벗은 repo을두고, 그것으로 밀 수있다. 이는 불량 스토리지와의 상호 작용을 최소화하는 가장 좋은 방법입니다. 어떤 이유로 당신이 해야이 드라이브에 걸쳐 REPO을 분할하는 경우

, 왜 그냥 하나 개의 드라이브에 REPO를 작성하지 재배치 .git에 다음, 다른 드라이브에 .git 디렉토리를 이동하여 REPO에 .git 심볼릭 링크 예배 규칙서.

+0

불행히도 symlinking은 불가능합니다 (webdav). 또한 변경 사항을 가져 오거나 병합해야합니다 ...하지만 다른 사람들에게 좋은 팁입니다. +1. – jdehaan

+0

@jdehaan : 맨발의 repo를 사용하지 못하게하는 방법을 알지 못합니다. 커밋, 병합/끌어 오기, 리베이스 (rebase) 등 모든 작업을 수행하고 모든 것이 완료되면 그냥 누르십시오. 방금 여분의 단계가 필요하지 않습니까? 네트워크 드라이브에 사는 .git 디렉토리는 그곳에 살고있는 베어 레포와 거의 동일합니다. – Cascabel

+0

사람들은 디스크에 데이터를 넣어야하므로 정치적 이유로 git repos에 액세스 할 수 없으며 액세스 할 수 없어야합니다. – jdehaan