Perforce 트리에서 추적되지 않은 (정말 : 추가되지 않은) 파일을 찾을 수있는 스크립트 또는 별칭이있는 사람이 있습니까?
편집 : 2009 년 1 월 릴리스에서 P4V가 이에 대한 지원을 추가 한 것처럼 보이기 때문에 이에 대한 수락 된 답변을 업데이트했습니다.
Perforce 트리에서 추적되지 않은 (정말 : 추가되지 않은) 파일을 찾을 수있는 스크립트 또는 별칭이있는 사람이 있습니까?
편집 : 2009 년 1 월 릴리스에서 P4V가 이에 대한 지원을 추가 한 것처럼 보이기 때문에 이에 대한 수락 된 답변을 업데이트했습니다.
p4 status
파일은 추적되지 않은 파일을 찾는 것이 아니라 실제로 추적을 시작합니다. 즉 p4 status
, 이름에서 의심하는 것처럼 읽기 전용 쿼리는 아니지만 실제로 작업 공간 파일이 아닌 항목을 변경하는 명령입니다. 이것은 상태 명령이 수행해야하는 작업이 아니며 수행하는 작업 svn status
이 아닙니다 . 내가 찾을 수있는 가장 가까운 것은 svn status
입니다 p4 reconcile -na
- -a는 "실제로 변경 아무것도 할"말 -n "추가해야하는 파일을"말을. /// 원래 훨씬 더 강한 말을했습니다.
p4 status
) . 자신을, 그리고 대답 더 나은 환영
p4 reconcile
와 둘 다 p4 status
지옥처럼 느리지 만 git status
1-3 초 만에 실행이 완료됩니다.
답변:
편집 :p4 status
지금 사용하십시오 . 더 이상 농구를 뛰어 넘을 필요가 없습니다. @ColonelPanic의 답변을 참조하십시오 .
2009 년 1 월 버전의 P4V에서는 작업 공간 트리의 폴더를 마우스 오른쪽 버튼으로 클릭하고 "오프라인 작업 조정 ..."을 클릭 할 수 있습니다.
이렇게하면 약간의 처리가 수행 된 다음 체크 아웃되지 않았지만 저장소 버전과 다르거 나 전혀 체크인되지 않은 파일의 분할 트리보기가 표시됩니다. 다른 몇 가지 범주가 나타날 수도 있습니다.
이보기에서 파일을 마우스 오른쪽 버튼으로 클릭하고 체크 아웃하거나 추가하거나 되돌릴 수도 있습니다.
내 엉덩이를 몇 번 구해준 매우 편리한 도구입니다.
편집 : 아 질문이 스크립트에 대해 구체적으로 물었지만 경우에 대비 하여이 답변을 여기에 남겨 둘 것입니다.
p4 status
추적되지 않은 파일을 찾는 것이 아니라 실제로 추적을 시작합니다. 즉 p4 status
, 이름에서 의심하는 것처럼 읽기 전용 쿼리는 아니지만 실제로 작업 공간 파일이 아닌 항목을 변경하는 명령입니다. 이것은 상태 명령이 수행해야하는 작업이 아니며 수행하는 작업 svn status
이 아닙니다 . 내가 찾을 수있는 가장 가까운 것은 svn status
입니다 p4 reconcile -na
- -a는 "실제로 변경 아무것도 할"말 -n "추가해야하는 파일을"말을. /// 원래 훨씬 더 강한 말을했습니다.
p4 status
기본적으로 p4 reconcile -n
. 아마도 당신은 p4 status -A
무엇에 대한 동의어 p4 reconcile
입니까?
Linux에서 또는 Windows에 gnu-tools가 설치된 경우 :
find . -type f -print0 | xargs -0 p4 fstat >/dev/null
계정이없는 모든 파일에 대해 오류 메시지가 표시됩니다. 해당 출력을 캡처하려면 다음을 수행하십시오.
find . -type f -print0 | xargs -0 p4 fstat >/dev/null 2>mylogfile
.p4ignore
추적되지 않은 / 변경된 / 삭제 된 파일을 지원 하고 미리보고 자동으로 편집 할 수 있습니다.
find . -type l
)를 처리하지 않으며 @
또는 %
문자 를 포함하기 때문에 강제로 추가 된 P4 파일에 대해 잘못된 출력을 제공 합니다. 그러나 이러한 파일은 소수이므로 이러한 엣지 케이스에 대한 수동 검토가 대부분의 경우 작동합니다.
Ahh, Perforce 고전 중 하나 :) 예, 이것이 기본 명령에 내장 된 쉬운 방법이 아직 없다는 것은 정말 짜증납니다.
가장 쉬운 방법은 명령을 실행하여 클라이언트 루트 아래에있는 모든 파일을 찾은 다음 저장소에 추가하는 것입니다. 모든 새 파일의 변경 목록이 표시되고 기존 파일은 무시됩니다.
예 : dir / s / b / AD | p4 -x-추가
(nix 명령 줄에서 'find. -type f -print'사용).
물리적 목록 (콘솔 또는 파일)을 원하면 diff 결과를 파이프 할 수 있습니다 (또는 변경 목록에서도 원하는 경우 추가).
P4Win 내에서 이것을 실행하는 경우 $ r을 사용하여 현재 작업 공간의 클라이언트 루트를 대체 할 수 있습니다.
svn status
또는 의 아날로그가git status
있습니까?
예,하지만 .
Perforce 버전 2012.1부터는 명령 p4 status
과 P4V '오프라인 작업 조정'이 있습니다. 그러나 둘 다 매우 느립니다. 관련없는 파일을 제외하려면 https://stackoverflow.com/a/13126496/284795에 따라 p4ignore.txt
파일 을 작성해야합니다.
p4 status
2012.1 릴리스 이후 로 몇 가지 성능이 향상 되었습니다. p4 status
성능 문제로 인해 멀리 떨어져있는 경우 다시 테스트하여 지금 어떻게 작동하는지 확인하는 것이 좋습니다.
받아 들여진 대답과 다른 일부는 내가 생각하는 중요한 문제가 있기 때문에 대답을 추가해야한다는 충동을 느낍니다. 그들은 읽기 전용 쿼리 명령과 변경하는 명령의 차이점을 이해하지 못합니다.
나는이 답변에 대해 어떤 신용도 기대하지 않지만 다른 사람들이 허용되었지만 IMHO 오답을 따라 시간 낭비와 실수를 피하는 데 도움이되기를 바랍니다.
--- + 간략한
perforce 작업 공간에서 추적되지 않은 모든 파일을 찾는 가장 편리한 방법은 p4 reconcile -na
.
-a
"저장소에없는 파일, 즉 추가해야하는 파일을주세요"라고 말합니다.
-n
"변경하지 마십시오"라고 말합니다. 즉, 드라 이런입니다. (메시지는 "추가를 위해 열림"이라고 말할 수 있지만 정신적으로는 "-n이 아니면 추가를 위해 열릴 것"으로 해석해야합니다.)
추가해야 할 파일뿐만 아니라 삭제해야하거나를 통해 편집하기 위해 열지 않고 변경된 파일을 오프라인에서 수행 한 모든 로컬 변경 사항을 찾는 가장 편리한 방법 p4 edit
은 p4 reconcile -n
.
몇 가지 답변은 종종 p4 fstat
. 이러한 스크립트를 모두 확인하지는 않았지만 종종 유사한 스크립트를 사용하여 다음과 같은 perforce 명령의 결함을 보완합니다. 예를 p4 reconcile -n
들어 Perforce 저장소 경로 나 작업 공간 경로가 아닌 로컬 경로를 원하는 경우가 종종 있습니다.
--- + 경고
p4 status
다른 버전 제어 시스템의 상태 명령에 대응하지 않습니다.
p4 status
읽기 전용 쿼리가 아닙니다. p4 status
실제로 동일한 종류의 변경 사항을 찾아서 p4 reconcile
저장소에 추가합니다. 같은 건식 실행 옵션 p4 status
이없는 것 같습니다 .-n
p4 reconcile
그렇다면 p4 status
파일을보고 "Oh, I do n't need p4 revert
them "라고 생각 하면 같은 작업 공간에서 계속 편집하려면 파일을 사용해야합니다. 그렇지 않으면 변경 세트에 p4 status
추가 된 변경 사항이 다음에 확인됩니다.
로컬 작업 공간 대 저장소 경로 이름의 일부 세부 사항을 제외하고는 p4 status
대신 사용할 이유가 거의 또는 전혀없는 것 같습니다 p4 reconcile -n
.
읽기 전용이 아닌 명령으로 '상태'를 선택한 사람은 영어 및 기타 버전 제어 도구에 대한 명령이 제한적이라고 생각할 수 있습니다.
--- + P4V
GUI
GUI p4v
에서 reconcile 명령은 편집을 위해 추가, 삭제 또는 열어야하는 로컬 변경 사항을 찾습니다. 다행히 기본적으로 변경 목록에 추가하지 않습니다. 그러나 변경 사항을 커밋하지 않으려면 검사 후 조정 창을 닫는 데주의해야 할 수도 있습니다.
저장소 (Windows 용)와 다른 작업 공간의 모든 파일을 백업하는 도구에서 다음을 사용합니다. 삽입 된 공백, 별표, 백분율 및 해시 표시와 같이 Perforce가별로 좋아하지 않는 몇 가지 이상한 경우를 처리합니다.
dir /S /B /A-D | sed -e "s/%/%25/g" -e "s/@/%40/g" -e "s/#/%23/g" -e "s/\*/%2A/g" | p4 -x- have 1>NUL:
" dir / S / B / AD "는 디렉토리 (/ AD )를 제외하고 "bare"형식 ( / B ) 으로이 폴더 ( / S ) 또는 그 아래에있는 모든 파일을 나열합니다 . " sed "는 위험한 문자를 " % xx "형식 (HTML 형식)으로 변경하고 " p4 have "명령 은 서버 에서이 목록 ( " -x- ")을 확인하여 실제로 저장소에서 찾은 파일에 대한 모든 것을 삭제합니다. ( " 1> NUL : "). 결과는 다음과 같은 여러 줄입니다.
Z:\No_Backup\Workspaces\full\depot\Projects\Archerfish\Portal\Main\admin\html\images\nav\navxx_background.gif - file(s) not on client.
Et voilà!
나는 논평 할 평판 포인트가 충분하지 않지만 Ross의 솔루션은 추가 할 수있는 파일도 나열합니다. 그의 대답을 사용하여 작업 공간을 청소하고 싶지 않을 것입니다 .
다음 용도 p4 fstat
(감사 마크 해리슨) 대신에 p4 have
, 및 목록 저장소에없는 파일 및 추가 오픈하지 않습니다.
dir /S /B /A-D | sed -e "s/%/%25/g" -e "s/@/%40/g" -e "s/#/%23/g" -e "s/\*/%2A/g" | p4 -x- fstat 2>&1 | sed -n -e "s/ - no such file[(]s[)]\.$//gp"
=== 잭
이 p4 fstat
명령을 사용하면 작업 공간에 파일이 있는지 테스트하고와 결합 find
하여 다음 Perl 예제에서와 같이 확인할 파일을 찾을 수 있습니다.
// throw the output of p4 fstat to a 'output file'
// find:
// -type f :- only look at files,
// -print0 :- terminate strings with \0s to support filenames with spaces
// xargs:
// Groups its input into command lines,
// -0 :- read input strings terminated with \0s
// p4:
// fstat :- fetch workspace stat on files
my $status=system "(find . -type f -print0 | xargs -0 p4 fstat > /dev/null) >& $outputFile";
// read output file
open F1, $outputFile or die "$!\n";
// iterate over all the lines in F1
while (<F1>) {
// remove trailing whitespace
chomp $_;
// grep lines which has 'no such file' or 'not in client'
if($_ =~ m/no such file/ || $_ =~ m/not in client/){
// Remove the content after '-'
$_=~ s/-\s.*//g;
// below line is optional. Check ur output file for more clarity.
$_=~ s/^.\///g;
print "$_\n";
}
}
close F1;
또는 사용할 수 있습니다 p4 reconcile -n -m ...
'삭제를 위해 열림'이면 작업 공간에서 제거 된 것입니다. 위의 명령은 미리보기 모드 ( -n
) 에서 실행 중입니다 .
Linux, Mac 또는 Windows에서 작동하는 것이 필요했습니다. 그래서 파이썬 스크립트를 작성했습니다. 기본 아이디어는 파일을 반복 p4 fstat
하고 각각에서 실행 하는 것입니다. (물론 종속성 및 tmp 폴더 무시)
여기에서 찾을 수 있습니다 : https://gist.github.com/givanse/8c69f55f8243733702cf7bcb0e9290a9
P4V의 "보기"메뉴 항목에서 "폴더의 파일"을 선택하면 오른쪽 창에 새 탭이 나타납니다. 탭의 맨 오른쪽에는 2 개의 아이콘이있는 "폴더의 파일"이라는 창이 표시되는 작은 아이콘이 있습니다. 깔때기 모양의 왼쪽 아이콘을 선택하면 몇 가지 옵션이 표시됩니다. "디포에없는 항목 표시"를 선택하면 폴더의 모든 파일이 표시됩니다. 그런 다음 추가하려는 파일을 마우스 오른쪽 버튼으로 클릭하고 "Mark for Add ..."를 선택하십시오. "보류 중"탭에서 확인할 수 있습니다. 정상적으로 제출 (Ctrl + S)하십시오.