Mercurial Working Tree에서 모든 .orig 파일을 자동으로 제거하는 방법은 무엇입니까?
문제
해결되지 않은 파일의 경우 Mercurial 잎 .orig 파일을 병합합니다. 그러나 문제를 수동으로 해결하고 파일을 올바르게 표시 한 후에는 .orig 파일이 삭제되지 않습니다. 일부 명령으로 자동으로 제거 할 수 있습니까?
Mac에서 작업하여 다음과 같은 것을 사용할 수 있습니다.
find . -iname '*.orig' -exec rm '{}' ';'
그리고 별명이나 무언가이지만 HG 청소와 같은 것을 사용하고 싶습니다 ...
업데이트:
지금부터 지금부터 퍼지 확장 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
확인이있는 파일을 삭제하려면 [안전 메커니즘
이것이 도움이되기를 바랍니다.
나는 개인적으로 Repo의 루트에서 다음을 사용합니다.
hg purge -p -I **/*.orig | xargs rm -f
포함하려는 특정 파일 유형을 필터링 할 수 있기 때문에 단지 'HG Purge'또는 'HG Purge (모두')를 사용하는 것보다 조금 낫습니다.
설명을 위해 :
- -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
무시 된 모든 임시 파일을 정리하고 편집기 (예 : VIM)의 파일을 스왑하는 데 사용될 수 있습니다.
Linux에서 청소에 사용하는 명령은 Find로 새로운 검색을 수행 할 필요성을 저장합니다.
이들은 수은 프로젝트의 루트 디렉토리에서 실행해야합니다.
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에서 작동합니다