Mercurial 작업 트리에서 모든 .orig 파일을 자동으로 제거하는 방법은 무엇입니까?
병합하는 동안 수은 해결되지 않은 파일에 대해 .orig 파일을 남깁니다. 그러나 수동으로 문제를 해결하고 파일을 수정 한 후에는 .orig 파일이 삭제되지 않았습니다. 일부 명령으로 자동으로 제거 할 수 있습니까?
Mac에서 작업 할 때 다음과 같은 것을 사용할 수 있습니다.
find . -iname '*.orig' -exec rm '{}' ';'
같은 것을 사용하거나 다른 것을 사용하지만 차라리 hg 정리와 같은 것을 사용하고 싶습니다 ...
최신 정보 :
얼마 후 Purge 확장 은 Mercurial과 함께 많은 비용을 제공합니다.
개인적으로 나는
$ rm **/*.orig
.orig
파일 이 지겹다면 . 이 실행 한 후 Zsh 및 Bash 4에서 작동합니다 shopt -s globstar
.
그러나 다른 셸을 사용하거나 기본 제공 솔루션을 원할 경우 제거 확장 (링크 업데이트 2016-08-25) 이 마음에들 것 입니다. 이를 통해 추적되지 않은 모든 파일을 제거 할 수 있습니다.
$ hg purge
다음을 사용하여 추적하지 않고 무시한 모든 파일을 제거 할 수 있습니다.
$ hg purge --all
사용의 장점은 hg purge
파일을 후 비어있는 디렉토리도 정리한다는 것입니다. rm
명령 줄은 디렉토리를 떠날 것이다.
btw. find
유틸리티에는 작업이 -delete
있으므로 다음 만 입력 할 수 있습니다.
find <path-to-files> -name '*.orig' -delete
.orig 파일을 삭제하고 싶고 Windows 컴퓨터를 사용하는 경우 다음이 잘 작동하는 것입니다.
D:\workspace>hg purge -I **/*.orig --all
이것은 어 .orig 끝나는 추적되지로 않은 모든 파일을 삭제하지만 다른 답변과 마찬가지로 추적 되지 않은 다른 파일 은 삭제하지 않습니다 .
--print
플래그 를 넣어 실행하기 전에 테스트 할 수 있습니다 .
다음은 전체 작업 복사본 계층 구조에서 .orig 파일을 제거하고 공백이 포함 된 경로 작동합니다.
find . -name *.orig | while read -d $'\n' file; do rm -v "$file"; done;
.bash_profile을 사용합니다.
alias clearorig='echo "Removing .orig files..."; find . -name *.orig | \
while read -d $'\''\n'\'' file; do rm -v "$file"; done;'
업데이트 후크 를 사용합니다.
업데이트 : 작업 디렉토리 의 업데이트 또는 병합 이 완료된 후에 실행됩니다.
이 답변을 전에 게시했습니다 . 그러나 이것은 대답에 대한 올바른 장소입니다.
이 배치 파일을 직접 만들었습니다.
IF "%1%" == "d" (
del /s *.orig
del /s *.rej
) ELSE (
del /s /p *.rej
del /s /p *.orig
)
도움말 :이 콘텐츠를 orig.bat 로 저장
orig d
없이 한 번 확인에 모든 거부 및 원본 파일 삭제 실행orig
파일을 통해 확인 삭제 실행 [안전 메커니즘]
이것이 도움이되기를 바랍니다.
개인적으로 저장소 루트에서 다음을 사용합니다.
hg purge -p -I **/*.orig | xargs rm -f
포함하려는 특정 파일 형식을 필터링 할 수 있으므로 'hg purge'또는 'hg purge --all'만 사용하는 것보다 약간 낫습니다.
설명 :
- -p 인수는 제거 할 파일 목록을 인쇄합니다.
- -I 인수 화이트리스트는 포함 할 파일을 필터링합니다.
- 결과 목록은 xargs로 파이프되고 rm -f 명령을 사용하여 실행됩니다.
Powershell에서 작업 중이며 여기에 답변이 표시되지 않습니다.
# NOTE: be in the root of your repository
# fetch all .orig files recursively
$orig = (dir *.orig -recurse) ;
# remove each .orig file
foreach ($item in $orig) { del $($item.FullName) ; }
# afterwards I make sure to remove the references to the .orig files in the repo
# then commit & push
hg addremove ;
hg commit -m "remove .orig" ;
hg push ;
이 방법은 자동으로 제거 방법은 수동으로 실행 간단합니다.
은 hg st
표시 할 수 있습니다 알 수없는 또는 하지 추적 파일을. 이 출력을 시스템 rm
명령에 대한 인수로 사용할 수 있습니다 . 방금 수행 한 실제 예는 다음과 가변적입니다.
$ # SHOW ONLY THE CRUFT
$ hg status --unknown
? config/settings.rb.orig
? lib/helpers.rb.orig
? routes/main.rb.orig
$ # THE CRUFT WITHOUT THE "?" PREFIX
$ hg status --unknown --no-status
config/settings.rb.orig
lib/helpers.rb.orig
routes/main.rb.orig
$ # SAFELY REMOVE ALL CRUFT
$ rm -- `hg st -un`
비어있는 디렉토리가 남아있는 경우 -r
및 -d
플래그 rm
가 도움 이 될 수 있습니다.
A와 보너스 , hg status --ignored
(예를 들어, 빔) 편집기에서 정리에 모든 무시 임시 파일뿐만 아니라 스왑 파일을 사용할 수있다.
정리를 위해 Linux에서 사용하는 명령은 find로 새로운 검색을 수행 할 필요가 없습니다.
Mercurial 프로젝트의 루트 디렉토리에서 실행해야합니다.
hg status | grep ".orig" | cut -d ' ' -f 2- | xargs rm -f
또는 모든 알 수없는 파일을 지우려면.
hg status | cut -d ' ' -f 2- | xargs rm -f
선택한 답변이 마음에 들지 않습니다. 프로젝트의 모든 수준에서 모든 것을 제거하지는 않습니다. 나는 이것을 사용한다 :
for f in `find . | grep .orig$`; do rm "$f"; done
Mac과 * nix 모두에서 작동
'ProgramingTip' 카테고리의 다른 글
Python 3 TypeError : sys.stdout.write ()를 사용하는 바이트가 아니라 str이어야합니다. (0) | 2021.01.10 |
---|---|
C ++로 통화 값을 저장하는 가장 좋은 방법 (0) | 2021.01.10 |
C에서 동적으로 할당 된 메모리의 크기 결정 (0) | 2021.01.10 |
Lua- 테이블 병합? (0) | 2021.01.10 |
JPA, Mysql Blob이 너무 긴 데이터를 반환 함 (0) | 2021.01.10 |