Mercurial-변경 세트에서 변경된 모든 파일?


답변:


149

변경된 파일 만 나열하려면 "status 명령"을 사용해야합니다. 다음은 개정판 REV의 파일 변경 사항을 나열합니다.

hg status --change REV

13
+1하지만 OP는 -n/ --no-status플래그도 원할 것입니다 .
Niall C.

7
간편한 복사를 위해 :hg status --no-status --change REV
zastrowm

+1 이것은 hg status --rev REV~1:REV제가 예전 보다 타이핑하기가 훨씬 쉽습니다 .
Patrick Oscity 2014 년

3
사용하다 '.' 현재 REV. 의미 -hg status --change .
zaxy78

16

그냥 제거 p하여에서 hg log -vpr파일의 목록이 표시됩니다. -p패치 표시를 의미합니다. 템플릿 을 사용 하여 원하는대로 출력 형식을 지정할 수도 있습니다 .


3
나는 다음과 같은 템플릿이 필요합니다 생각 : --template '파일 : {파일} \ n'을
톤 Plomp을

1
나는 {files}가 -v 플래그 기본 템플릿의 일부라고 믿습니다
eskhool

2
hg log -r. --template '{join (files, "\ n")}'파일을 줄 바꿈으로 구분
Foxichu

1
@Foxichu 코멘트는 나를 위해 일했지만 다소 해키했습니다. 실제로 상위 대답 - hg status --change .더 나은 일을하고 파일 작업을 접두사 (등등 \ M \ D)과 더 나은 상대 경로 준
zaxy78

13

질문은 단일 변경 집합에 대한 것이지만 변경 집합 범위에 대해 모든 파일을 수정하려면 다음을 수행 할 수 있습니다.

hg status --rev 1 --rev 10 -m

2
끔찍하다. 범위가 수정 된 파일은 hg log -r BEGIN:END --template "{files}\n"@ geoffrey-zheng과 @ton이 2 년 전에
Lazy Badger

미안합니다. 그들의 대답이 단일 변경 집합에 대한 것이라고 가정했습니다.
Nick DeVore

1
제 생각에이 대답은 그렇게 끔찍하지 않습니다. hg status --rev BEGIN --rev END1. 기억하기가 훨씬 쉽습니다 hg log -r BEGIN:END --template "{files}\n". 2. sed(@Eric Lawler) 또는 join()(@Foxichu) 를 사용하지 않고 별도의 줄에 파일을 인쇄합니다 . 3. -m플래그가 없으면 수정 된 파일뿐만 아니라 추가 및 제거 된 파일도 표시됩니다 (여기에도 표준 색상이 적용됩니다). 4. 다른 필터링을 허용하는 -a-r플래그 가 있습니다 . 5. 상태 접두사를 원하지 않는 경우 -n이를 억제하는 옵션이 있습니다.
Michał Wróbel

9

현재 커밋 된 개정

hg status --change .

.@HEADGit에서 와 마찬가지로 현재 rev의 속기입니다.

현재 커밋되지 않은 개정

hg status

임의의 커밋 된 개정

hg status --change REV_ID

1
가장 간단하고 정확한 답변!
zaxy78

2

비슷한 개념에 대한 인터넷 검색을 통해이 질문을 찾았습니다. 다양한 변경 세트를 통해 변경된 모든 파일을 표시하는 방법 은 다음과 같습니다.

hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
  1. hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"[start rev]에서 [end rev]까지 각 변경 세트에서 변경되거나 추가 된 각 파일의 목록이 새 행에 표시됩니다. 스왑 {file_mods}{file_adds}으로는 {files}모든 파일, 수정, 추가 또는 삭제 표시합니다.
  2. sed -e 's/ /\n/g' 모든 파일을 분할하여 별도의 줄에 표시하고
  3. sort 목록을 정렬하여 uniq로 목록을 필터링 할 수 있습니다.
  4. uniq 목록을 필터링하여 중복 된 파일 (둘 이상의 개정판에서 변경된 파일)을 제거합니다.

이 솔루션은 마지막으로 수정 된 파일과 처음 추가 된 파일을 함께 붙입니다. 또한 파일 이름의 공백을 제대로 처리하지 못합니다. --template이러한 단점이없는 기반 솔루션을 사용하여 구성 할 수 join()@Foxichu에 의해 제안.
Michał Wróbel

1

나는이 질문이 오래된 질문이라는 것을 알고 있으며 아무도 수정 된 코드 양식 OP를 제공하지 않았다는 것에 놀랐습니다. 을 실행하여 수정 / 추가 / 제거 된 파일 목록 (하지만 레이블이 지정되지 않음)을 받았습니다 hg log -v. 또는 hg log -v -l5마지막 5 개의 커밋에서 수정 / 추가 / 제거 된 파일을 확인하는 데 실제로 필요한 것 (아직 리포지토리에 푸시하지 않은 커밋 포함).


"아무도 방금 수정 코드 형태의 영업 이익을 제공하지 않습니다"- @Geoffrey 청은 그 ~ 1 시간 정확히했던 질문을 게시 한 후
마이클 Wróbel

-2

대부분의 상점과 같으면 티켓팅 시스템을 사용하여 변경 사항을 추적합니다. 티켓 번호를 알고 있고 해당 티켓과 관련된 모든 커밋을 찾으려면 (커밋 메시지에 티켓 번호를 포함한다고 가정) 다음을 사용할 수 있습니다.

hg log -k TICKET_NUMBER

이것은 티켓과 관련된 모든 개정을 표시합니다. 그러나 파일을 나열하지 않습니다. 위의 답변 중 하나를 사용하여 개정판과 관련된 파일 목록을 가져올 수 있습니다.

더 간단하게 이전 답변의 정보를 결합하여 다음을 수행하여 변경된 파일을 포함하여 커밋을 검색 할 수 있습니다.

hg log -vk TICKET_NUMBER

이것은 질문과 관련이 있습니다. 포스터는 변경 세트에서 파일을 가져 오는 방법을 물었습니다. 변경 세트는 종종 티켓과 관련이 있습니다. 내 솔루션은 티켓과 관련된 변경 집합과 관련된 파일을 가져 오는 방법을 보여줍니다.
iDimensionz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.