2009-10-16 3 views
6

커밋 된 변경 목록을 삭제하려고 시도 할 때 커밋 된 변경 목록이 비어 있지 않기 때문에 어떤 점이 궁금합니다.어떻게 PERFORCE의 모든 빈 변경 목록을 신속하게 찾고/삭제합니까?

그러나 튜토리얼 저장소로 놀고 있고 전체 지점에서 지우는 명령을 사용하면 빈 커밋 된 변경 목록 (-f 플래그로 삭제해야 함)으로 끝날 수있는 상황이 있음을 알 수 있습니다.

그러나 관련 파일이없는 changelists를 찾는 방법을 모르기 때문에 커맨드 라인에서 어떻게 찾을 지 모르겠습니다.

쉬운 방법이 있나요?

감사합니다,

토마스

답변

0

내가 Windows에서 오전, 나는 오히려 :) 쉘, 파워 쉘 또는 픽셀보다, PERL에서 똑같은 일을하고 약간의 스크립트를 만들었습니다 실제로 것을

#******************************************************************************* 
# Module: delete_empty_changelist.pl 
# Purpose: A script to delete empty changelist 
# 

@list = `p4 changes -s submitted`; 

foreach $chg (@list) 
{ 
$chgnbr = (split /\s+/, $chg)[1]; 
print `p4 change -d -f $chgnbr`; 
}  
exit 0; 

주 모든 경우에 매우 영리한 스크립트는 아닙니다. 제출 된 모든 변경 목록을 절대 삭제하려고하며, 파일이 연결되어 있으면 오류가 발생하므로 perforce가이를 수행 할 수 없습니다.

스크립트의 결과를 로그로 보내고 구문 분석하여 관련 행만 강조 표시해야한다고 가정합니다.

과 유사한 출력을 생성합니다 스크립트를 실행 :

Change 857 has 1 files associated with it and can't be deleted. 
Change 856 has 1 fixes associated with it and can't be deleted. 
Change 855 has 1 fixes associated with it and can't be deleted. 
Change 854 deleted. 
Change 853 has 1 fixes associated with it and can't be deleted. 
Change 852 has 8 files associated with it and can't be deleted. 
Change 851 has 1 files associated with it and can't be deleted. 
Change 850 has 2 files associated with it and can't be deleted. 
Change 849 has 2 files associated with it and can't be deleted. 
Change 846 deleted. 
Change 845 has 2 files associated with it and can't be deleted. 

건배,

토마스

6

아! 나는이를 요청하기 전에 더 많은 문서를 검색해야

...

http://public.perforce.com/wiki/Perforce_Command_Line_Recipes

설명 : 모든 빈 제출 된 변경 목록을 삭제합니다.
셸 명령 : p4 changes -s submitted | cut -d ""-f 2 | xargs -n1 p4 변경 -d -f
Powershell : p4 changes -s submitted | % {p4 change -d -f $ _. split() [1]}
px : px -F 변경 % 변경 - 제출 됨 | 샘 스탠, 필립 KANIA, 숀 Hladky

뜨아 : 픽셀은
참여자 -f -d 변경 -X-.

토마스

+0

자신의 대답을 수락해야합니다 (질문에 답변으로 표시). :-) – PhiLho

+0

내 Windows PC에서 제안 된 답변을 사용할 수 없어서 동일한 작업을 수행 할 작은 PERL 스크립트를 작성했습니다. :-) –

0

여기에 DOS CMD 전용 버전입니다. % p4streams 사용자 %를 바꿉니다.

for /f "tokens=* delims=" %%i in ('p4 changes -u %p4streamsUser% -s pending') do (
     for /f "tokens=1-7*" %%a in ("%%i") do (
      echo Deleting CL %%b %%h %%f 
      p4 change -d -f %%b 
     ) 
    ) 

저는 Windows 7 시스템입니다. 이것은 여러 다른 버전의 windows/dos에서 작동합니다.단순히 는 삭제하지 않고 모든 빈 제출 한 변경 목록을 찾으려면

1

, 당신은이 두 명령의 출력 비교할 수 있습니다 - 모든 변경 목록

  • p4 changes -s submitted //... -

    • p4 changes -s submitted 관련 파일의 모든 변경 목록을

    Windows PowerShell에서 예를 들어

    0123을 실행하십시오.
  • +0

    좋은 트릭! 감사 ! :) –

    관련 문제