2012-03-07 3 views
10

저는 사람들이 테스트에 "솔루션"을 저장할 수있는 도구를 만들고 있습니다. 이후 버전 제어를 재발 명하고 싶지 않기 때문에 git의 tree/blob/object stuff를 사용하기로 결정했습니다. 제 아이디어는 현재 작업 디렉토리에서 git tree 객체를 만드는 것입니다.인덱스를 건드리지 않고 작업 트리에서 자식 트리를 만드시겠습니까?

문제는이 도구가 기존 개체에 해시를 찾는 것 외에는 사용자 저장소의 상태를 변경하지 않기를 바라는 것입니다.

나는 모두 mktreewrite-tree을 보았고 전자는 ls-tree 출력이 필요하고 후자는 색인을 검사해야합니다. 이들 중 어느 것도 내가 원하는 것은 아니다.

더 깊이 들어가서 작업 트리에 대한 이러한 명령의 유사점을 적어도 좋지만 나무, 얼룩 및 개체를 조작하는 하위 수준 자식 도구를 찾는 데는 문제가 있습니다.

$ git create-tree . 

을하고 자식은 새로 만든 트리 객체의 해시를 뱉어 :

이상적으로, 사용자가 실행할 수 있습니다.

+0

정확히 무엇을하고 싶은지 잘 모르겠습니다. 당신은 "사용자 저장소의 상태를 건드리지"않고 동시에 동일한 저장소에 트리를 생성하고 싶습니까? 그 나무를 어떻게 사용 하시겠습니까? – svick

+0

"히스토리"로 사용하지 않고 저장소의 일부 스냅 샷으로 사용하고 있습니다. 그것은 틀에 얽매이지 않습니다. –

+0

좋아요,하지만 스냅 샷으로 무엇을 할 건가요? 레포에서 어떻게 꺼내나요? – svick

답변

11

git mktree을 사용하는 것은 확실히 가능합니다. ls-tree 형식의 텍스트를 읽지 만, 원하는 메커니즘을 사용하여 직접 생성 할 수 있습니다.

그렇다면 색인을 사용하는 것이 더 쉬울 수도 있습니다. 결국, 여러분은 인덱스로 원하는 위치를 자유롭게 지정할 수 있습니다. GIT_INDEX_FILE 환경 변수를 사용하십시오. 이 임시 변수를 임시 위치를 가리 키도록 설정하고 원하는 인덱스를 만들고, 트리를 만든 다음 env var를 재설정하고 임시 인덱스를 버리십시오.

+0

우수. 필자는 인덱스 위치를 구성 할 수 있다는 것을 놓쳤습니다. 감사! –

관련 문제