[version-control] Perforce 트리에서 추적되지 않은 파일을 찾는 방법은 무엇입니까? (svn 상태의 아날로그)

Perforce 트리에서 추적되지 않은 (정말 : 추가되지 않은) 파일을 찾을 수있는 스크립트 또는 별칭이있는 사람이 있습니까?

편집 : 2009 년 1 월 릴리스에서 P4V가 이에 대한 지원을 추가 한 것처럼 보이기 때문에 이에 대한 수락 된 답변을 업데이트했습니다.



답변

편집 :p4 status 지금 사용하십시오 . 더 이상 농구를 뛰어 넘을 필요가 없습니다. @ColonelPanic의 답변을 참조하십시오 .

2009 년 1 월 버전의 P4V에서는 작업 공간 트리의 폴더를 마우스 오른쪽 버튼으로 클릭하고 “오프라인 작업 조정 …”을 클릭 할 수 있습니다.

이렇게하면 약간의 처리가 수행 된 다음 체크 아웃되지 않았지만 저장소 버전과 다르거 나 전혀 체크인되지 않은 파일의 분할 트리보기가 표시됩니다. 다른 몇 가지 범주가 나타날 수도 있습니다.

이보기에서 파일을 마우스 오른쪽 버튼으로 클릭하고 체크 아웃하거나 추가하거나 되돌릴 수도 있습니다.

내 엉덩이를 몇 번 구해준 매우 편리한 도구입니다.

편집 : 아 질문이 스크립트에 대해 구체적으로 물었지만 경우에 대비 하여이 답변을 여기에 남겨 둘 것입니다.


답변

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


답변

Unix에서 :

find -type f ! -name '*~' -print0| xargs -0 p4 fstat 2>&1|awk '/no such file/{print $1}'

클라이언트 또는 Perforce 저장소에 추가되지 않은 파일 목록이 인쇄됩니다. ! -name '*~'~로 끝나는 파일을 제외 하는 데 사용 했습니다.


답변

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파일 을 작성해야합니다.


답변

받아 들여진 대답과 다른 일부는 내가 생각하는 중요한 문제가 있기 때문에 대답을 추가해야한다는 충동을 느낍니다. 그들은 읽기 전용 쿼리 명령과 변경하는 명령의 차이점을 이해하지 못합니다.

나는이 답변에 대해 어떤 신용도 기대하지 않지만 다른 사람들이 허용되었지만 IMHO 오답을 따라 시간 낭비와 실수를 피하는 데 도움이되기를 바랍니다.

— + 간략한

perforce 작업 공간에서 추적되지 않은 모든 파일을 찾는 가장 편리한 방법은 p4 reconcile -na.

-a “저장소에없는 파일, 즉 추가해야하는 파일을주세요”라고 말합니다.

-n“변경하지 마십시오”라고 말합니다. 즉, 드라 이런입니다. (메시지는 “추가를 위해 열림”이라고 말할 수 있지만 정신적으로는 “-n이 아니면 추가를 위해 열릴 것”으로 해석해야합니다.)

추가해야 할 파일뿐만 아니라 삭제해야하거나를 통해 편집하기 위해 열지 않고 변경된 파일을 오프라인에서 수행 한 모든 로컬 변경 사항을 찾는 가장 편리한 방법 p4 editp4 reconcile -n.

몇 가지 답변은 종종 p4 fstat. 이러한 스크립트를 모두 확인하지는 않았지만 종종 유사한 스크립트를 사용하여 다음과 같은 perforce 명령의 결함을 보완합니다. 예를 p4 reconcile -n들어 Perforce 저장소 경로 나 작업 공간 경로가 아닌 로컬 경로를 원하는 경우가 종종 있습니다.

— + 경고

p4 status 다른 버전 제어 시스템의 상태 명령에 대응하지 않습니다.

p4 status읽기 전용 쿼리가 아닙니다. p4 status실제로 동일한 종류의 변경 사항을 찾아서 p4 reconcile저장소에 추가합니다. 같은 건식 실행 옵션 p4 status이없는 것 같습니다 .-np4 reconcile

그렇다면 p4 status파일을보고 “Oh, I do n’t need p4 revertthem “라고 생각 하면 같은 작업 공간에서 계속 편집하려면 파일을 사용해야합니다. 그렇지 않으면 변경 세트에 p4 status추가 된 변경 사항이 다음에 확인됩니다.

로컬 작업 공간 대 저장소 경로 이름의 일부 세부 사항을 제외하고는 p4 status대신 사용할 이유가 거의 또는 전혀없는 것 같습니다 p4 reconcile -n.

읽기 전용이 아닌 명령으로 ‘상태’를 선택한 사람은 영어 및 기타 버전 제어 도구에 대한 명령이 제한적이라고 생각할 수 있습니다.

— + P4VGUI

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à!