'git gui'를 실행할 때“Loose Object”팝업을 건너 뛰는 방법
'git gui'를 실행하면 다음과 같은 팝업이 나타납니다.
이 저장소에는 현재 약 1500 개의 느슨한 객체가 있습니다.
그런 다음 데이터베이스 압축을 제안합니다. 전에이 작업을 수행했으며 느슨한 객체를 약 250 개로 줄 였지만 팝업을 억제하지는 않습니다. 다시 압축해도 느슨한 객체 수는 변경되지 않습니다.
현재의 워크 플로우는 Perforce에서 전환 할 때 '리베이스'를 많이 사용해야하며 Perforce는 여전히 표준 SCM입니다. Git이 정식 SCM이되면 정기 병합을 수행하고 느슨한 객체 문제를 크게 완화해야합니다.
그동안이 '유용한'팝업을 없애고 싶습니다.
아무도 대답을하지 않았으므로 코드를 조사하여 해당 대화 상자를 표시하는 코드를 제거하는 방법을 보았습니다. 나는 hint_gc
그것을 수행하는 절차와 그것이 호출되는 장소를 발견했습니다. 동시에 2011 년 말 에 대화 상자를 사용하지 않도록 설정하는 구성 옵션 이 추가되었습니다 . 이 변경 (git-gui 0.16.0의 일부)은 2011-12-14 에 Git의 메인 라인에 병합되었습니다 .
따라서 Git v1.7.9 이상을 사용하는 경우 다음 명령으로 경고 대화 상자를 비활성화 할 수 있습니다.
git config --global gui.gcwarning false
이전 버전을 사용하는 경우 라인을 편집 및 제거 하거나 프로 시저 본문을 편집 /lib/git-core/git-gui
및 제거 할 수 있습니다 . (이 파일 경로는 Cygwin에 있으며 다른 환경에서는 파일이 다른 위치에있을 수 있습니다. Windows의 경우 )after 1000 hint_gc
/usr/share/git-gui/lib/database.tcl
hint_gc
c:\Program Files\Git\mingw64\libexec\git-core\git-gui.tcl
업데이트 : git prune
느슨한 객체를 제거한다는 점에서 문제를 "해결"합니다
( 기본적으로 2 주보다 오래된 느슨한 객체에 대해서만 git gc
호출 git prune
).
그러나 OP에 Michael Donohue가 언급 한 바와 같이 :
나는 느슨한 객체를 2 주 동안 유지하는 안전 측면을 좋아합니다. 돌아가서 오래된 개정판을보고 싶을 때이 솔루션을 좋아하지 않습니다.
git의 크기 또는 성능에 문제가 없습니다. 데이터베이스를 압축해도 아무런 영향을 미치지 않더라도 데이터베이스 압축을 요구하는 것은 'git gui'입니다.
원래 답변 :
" git gc
" 느슨한 개체를 모두 제거하지 않는 문제가 이전에보고되었습니다 (2008 년 말 " " git gc
"더 이상 느슨한 개체를 제거하지 않는 것 같습니다. "
git gc
2 주가 지난 느슨한 객체 만 제거합니다. 실제로 제거하려면 git prune을 실행하십시오.
그러나 실행할 때 다른 자식 프로세스가 활성화되어 있지 않아야하거나 뭔가 밟을 수 있습니다."
git gc
"는 도달 할 수없고 현재 포장 된 개체의 포장을 풉니 다 .
결과적으로, 자식 저장소에서 사용하는 디스크 공간의 양이 실제로 갈 수있는 최대 는 "후 극적으로git gc
자신의 파일 시스템 전체에 가까운를 실행하는 사람을 놀라게 할 수있다"작업, 추적 저장소에서 지점의 번호를 삭제 그리고 "git gc
"는 매우 불쾌한 놀라움을 줄 수 있습니다.
[
예 :]
이전 지점은과 같은 태그를 통해 예약됩니다next-20081204
. 매일 리포지토리
의 로컬 복사본을 업데이트하면linux-next
이 오래된 분기 태그가 많이 누적됩니다.
그런 다음 전체 시리즈를 삭제하고 실행git-gc
하면 작업하는 데 시간이 오래 걸리고 사용 된 블록 및 inode 수가 크게 늘어납니다."
git prune
" 다음에 사라지 지만이 하우스 키핑 작업을 할 때 종종--yes-I-know-what-I-am-doing-and-it's-unsafe-but-just-drop-the-unreachable-objects-cause-this-is-just-a-tracking-repository
"git gc"옵션을 원했습니다 .
그렇다면 귀하의 경우 " git prune
"가 도움이 되겠습니까?
( gc.pruneexpire
위의 동작이 발생하는 데 필요한 config 변수 에 "now"를 사용했을 수 있습니다 ).
당신은 또한 (같은 스레드에서) :
repack -a -d -l
소문자 'a'에 주목하십시오.
git-gc
도달 할 수없는 오브젝트의 압축을 해제하는 대문자 'A'로 repack을 호출합니다. 작은 'a'는 자신이하는 일을 알고 있고 git이 도달 할 수없는 객체를 떨어 뜨리기를 원하는 사람들을위한 것입니다.
"Loose Object"가 팝업되면 git의 가비지 콜렉터를 실행할 시간임을 알고 있습니다.
git gc
그 후 팝업이 사라집니다.
업데이트 : (TED의 제안으로 인해)
아래 루틴을 추출했습니다 git/share/git-gui/lib/database.tcl
. 필요에 맞게 수정할 수 있습니다.
proc hint_gc {} {
set object_limit 8
if {[is_Windows]} {
set object_limit 1
}
set objects_current [llength [glob \
-directory [gitdir objects 42] \
-nocomplain \
-tails \
-- \
*]]
if {$objects_current >= $object_limit} {
set objects_current [expr {$objects_current * 256}]
set object_limit [expr {$object_limit * 256}]
if {[ask_popup \
[mc "This repository currently has approximately %i loose objects.
To maintain optimal performance it is strongly recommended that you compress the database when more than %i loose objects exist.
Compress the database now?" $objects_current $object_limit]] eq yes} {
do_gc
}
}
}
흠 .... docs에 대한 명령 줄 인수가 표시되지 않습니다 .
나는 항상 소스를 풀고 대화 상자의 코드를 꺼내고 다시 빌드 할 수 있다고 가정합니다.
참고 URL : https://stackoverflow.com/questions/1106529/how-to-skip-loose-object-popup-when-running-git-gui
'IT박스' 카테고리의 다른 글
C 데이터 유형은“대부분의 컴퓨터에서 직접 지원”되는 방식은 무엇입니까? (0) | 2020.07.23 |
---|---|
단위 테스트, NUnit 또는 Visual Studio? (0) | 2020.07.23 |
install : install-file로 추가 된 로컬 메이븐 저장소에서 jar 파일을 제거하는 방법은 무엇입니까? (0) | 2020.07.23 |
Java에서 오류 코드 / 문자열을 정의하는 가장 좋은 방법은 무엇입니까? (0) | 2020.07.23 |
iOS 9 Xcode 7-애플리케이션이 상단과 하단에 검은 색 막대로 나타납니다 (0) | 2020.07.23 |