p4v 의 일상 개발 흐름(get · edit · submit · revert · reconcile · resolve)을 터미널 안에서 전부 다룹니다. 그리고 느리거나 불안정한 링크에서 자동 재연결 · 청크/재개 동기화 · 논블로킹 명령으로 버팁니다. SSH 한 줄, 아이폰 Blink, 얇은 tmux 분할 어디서든.
p4v 는 긴 호출 하나를 붙잡고 있다가 링크가 끊기면 통째로 다시 시작하게 만듭니다. p4v-tui 는 모든 긴 작업을 작은 청크로 쪼개 진행 상태를 디스크에 남깁니다 — 동기화 중간에 꺼도, 다음 실행이 멈춘 지점부터 이어집니다.
자동 재연결(1s→30s 백오프), 청크·재개 가능한 대량 작업, 락을 놓고 재시도해 다른 명령이 사이에 끼어들 수 있는 논블로킹 실행.
Pending/Submitted, 트리 파일 작업, 디프·히스토리·블레임, 리졸브·셸브, Get Revision, 파일 속성, 라벨 태그까지 하루치 워크플로를 덮습니다.
단축키 한 글자로 대부분의 동작. 한글 IME 를 켜도 두벌식 자모 별칭으로 그대로 작동하고, 표·트리·메뉴는 클릭도 됩니다.
100 컬럼 아래로 내려가면 단일 페이지 내비게이터로 자동 전환. 폰에서 세로로 봐도 빵부스러기·푸터가 폭에 맞춰 접힙니다.
p4v-tui 의 존재 이유. 재연결·재개·논블로킹이 앱 전체에 배어 있습니다.
Get Latest 같은 긴 작업은 파일 단위 청크로 쪼개 완료 지점을 ~/.p4v-tui/sync-state/ 에 기록합니다. 연결이 끊기면 지수 백오프로 조용히 재연결하고, 다음 실행 때 멈춘 지점부터 재개합니다.
p4v 의 한 줄짜리 상태 바 대신, 모든 p4 호출·청크 작업·오류가 타임스탬프와 함께 쌓이는 로그 패널과, 부모/자식 명령이 어떻게 쪼개지는지 보여주는 커맨드 모니터(F2)를 둡니다.
체인지리스트부터 디프·리졸브·검색까지 — 모든 화면은 실제 앱이 그린 그대로의 스크린샷입니다.
현재 사용자의 모든 워크스페이스에 걸친 미제출 CL 을 한 표에 모읍니다. 다른 워크스페이스의 것은 흐리게 + 노란 ↗ 마커로 구분하죠. Ctrl+S 서브밋 전에는 미해결·초대형 파일·빈 CL 경고를 먼저 띄워 되돌아갈 틈을 줍니다.
워크스페이스/디팟 트리에서 파일마다 p4 fstat 기반 한 글자 마커(e 편집 · + 추가 · * 오래됨 · · 미동기화)를 보여줍니다. 커서에서 m 으로 맥락 메뉴 — Get Latest, Check Out, Revert, Reconcile, Annotate, Time-lapse 까지.
제출된 CL 은 Ctrl+D 로 통합 디프, 메뉴로 나란히 보기. 임의의 두 경로·리비전·CL 은 Ctrl+Shift+D 로 비교합니다. 파일마다 라인별 블레임, 텍스트 모드 리비전 그래프, 리비전을 걸어보는 타임랩스까지.
충돌 파일은 Auto / Yours / Theirs / Skip 을 파일별로 고르는 리졸브 피커로. 그 자리에서 Ctrl+E 를 누르면 인앱 3-way 머지 에디터가 열려 헝크마다 Yours/Theirs/Base/Both 를 고를 수 있고, Ctrl+T 로 외부 머지 툴(P4Merge 등)도 띄웁니다.
로컬 SQLite 인덱스로 타이핑하는 즉시 파일명을 찾는 Fast Search(Ctrl+F) — 미리보기와 매치 하이라이트, 느슨한 매칭 사다리(부분→토큰 AND→Levenshtein "이거 찾으셨나요"). ?쿼리 내용 grep, cl: 설명 검색, @user:·type: 필터까지.
텍스트 리프에서 Enter — 외부 뷰어로 새지 않고 문법 하이라이트된 파일을 바로 봅니다(이미지는 반블록 ANSI, 바이너리는 헥스). 연결 정보·프로파일·청크 전략은 Ctrl+, 설정 화면에서 TOML 을 직접 편집·저장합니다.
같은 느린 링크는 대개 작은 원격 화면이기도 합니다. 100 컬럼 아래에서 단일 페이지 내비게이터로 자동 전환 — Tab/Shift+Tab 으로 트리→pending→history→submitted→log 를 넘깁니다(Blink 이 Tab 은 보내도 Ctrl+화살표는 안 보내므로 폰에서 신뢰성 있게).
클릭하면 확대됩니다. 모두 데모 백엔드로 그린 합성 스크린샷 — 실제 서버·계정은 담기지 않습니다.
Python 3.12+ 와 Perforce 백엔드 하나(P4Python 또는 p4 CLI)면 됩니다.
가상환경을 만들고 의존성을 설치한 뒤 바로 띄웁니다. Perforce 접속은 P4 환경변수 / P4CONFIG / p4v-tui.toml 중 아무거나 잡히는 것을 씁니다.
인증(login/ticket/SSO)은 일부러 앱 밖에 둡니다 — 보안 경계는 p4 CLI 에 그대로 남깁니다.
# 1) 소스 받기 $ git clone https://github.com/neoocean/p4v-tui $ cd p4v-tui # 2) 가상환경 + 의존성 $ python3 -m venv .venv && source .venv/bin/activate $ pip install -r requirements.txt # 3) 실행 $ python p4v.py
번들된 p4v 래퍼를 PATH 에 심어두면 어느 디렉토리에서든 실행됩니다. .venv 가 없으면 알아서 만들고 의존성을 설치한 뒤 띄웁니다.
# PATH 에 래퍼 심기 $ ln -sf "$PWD/p4v" ~/.local/bin/p4v # 이제 어디서든 $ p4v # 백엔드 고르기(선택) $ P4V_BACKEND=python p4v # P4Python $ P4V_BACKEND=cli p4v # p4 CLI
공개 저장소는 GitHub 에, 상세 사용법은 가이드에 있습니다.
버그 제보 · 기능 제안 · 무엇이든 환영합니다.