Mercurial Working Tree에서 모든 .orig 파일을 자동으로 제거하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1067680

  •  21-08-2019
  •  | 
  •  

문제

해결되지 않은 파일의 경우 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

  1. 운영 orig d 확인없이 모든 거부 및 원산지 파일을 한 번에 삭제하려면
  2. 운영 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에서 작동합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top