Perforce(P4V) Search(검색) 기능

P4V 검색 기능

이번 포스트에서는 P4V에서 검색 기능을 알아보려합니다.
가이드 문서: P4V User Guide: Searching and filtering

P4V 검색 기능 가이드 문서를 간단히 요약하면,
파일, changelist, workspace, branch, stream, job, label을 필터를 통해 검색할 수 있습니다.
Cmd+F(Ctrl+F)를 통해서 검색도 가능합니다.

changelist description 검색 기능

사실 저나 대부분의 사용자는 submit된 changelist에서 설명으로 입력된 내용을 검색을 원할 것 같은데
P4V에는 Ctrl+F 기능을 통해서 간단하게 제공하고 있습니다. (너무 간단해요)
Find File 기능도 사실 Changelist 조건이 있어서 설명 검색이 가능하지 않을까해서 보았는데 숫자로만 검색이 가능한 상태입니다.
(탭 이름도 파일 찾는 탭이니 그럴 수 있다고는 생각합니다.)

검색할 때 필터를 사용하라고 하지만 필터에도 description으로 필터링해서 보여주는 것은 없어요. 🤯
이참에 p4vjs로 커스텀 html tab을 만드는게 낫겠다 싶어서 검색 페이지를 만들어보았습니다.

p4v custom html tab을 통한 검색 기능 설정

https://github.com/pineoc/p4v-html-utils

가이드에 맞춰 설정해주시고 Run Queries 메뉴를 눌러보시면 아래와 같은 화면으로 검색해보실 수 있습니다.


한번 사용해보셔요 😈

마무리

P4V 검색 기능을 소개하려했는데 사실 기본적으로 제공하는 검색 기능이 크게 도움이 되는지는 모르겠습니다. 😂
제가 모르는 기능이 있을지는 모르겠지만.. PM으로 업무를 하면서 사용해본 P4V에는 검색 기능이 좋지는 않은 것 같아요.
그래서 custom html tab까지 만들어서 사용해보고 있는데 나름 만족하고 있습니다.

제가 P4V를 완전히 깊게 사용하지 못해서 모르는 부분이 있을 수 있으니 정정이 필요한 부분이 있다면 댓글로 남겨주세요!

향후 업데이트에 검색 기능이 강화될 수 있지만.. 현재는 원하는 changelist를 검색하기가 어려운 상태이긴합니다.
description으로 필터링하는 기능이 생기기를 기원하며 마치겠습니다.
감사합니다 😸

다른 Perforce 가이드 문서들

Perforce(P4V) bookmark(북마크)

Bookmark(북마크)

P4V Guide: Bookmarks

P4V에는 폴더나 파일에 빠르게 접근할 수 있는 기능인 북마크 기능이 있습니다.
Tools > Bookmarks 메뉴에서 볼 수 있는데요.
(웹 브라우저에서 사용하는 북마크라고 생각하시면 될 것 같네요. 😸)

Name에는 북마크 이름, Location에는 파일이나 폴더의 경로를 입력하고 OK를 누르면 저장됩니다.
shortcut도 저장할 수 있네요. (맥에서는 ^+shift+[1~9 숫자]) 최대 9개의 숏컷을 저장할 수 있습니다.

북마크는 Tools > Bookmarks에서 리스트를 볼 수 있고 Manage Bookmarks 메뉴에서 관리할 수 있습니다.

짧은 소개 마무리

자주 찾는 폴더 경로나 파일을 빠르게 접근할 수 있는 북마크 기능을 알아보았습니다.
mainline과 특정 스트림을 이동하는 작업이 많을 경우 북마크를 등록하고 숏컷을 이용하여 편하게 이동할 수 있을 것 같아요.
다만, 북마크에는 타입에 따라 이동에 약간의 제한이 있습니다.

  • folder: Workspace folder / Depot folder
  • file: Workspace file / Depot file

Workspace folder, file의 경우 현재 workspace와 맞는 북마크만 보여지고 숏컷을 이용하더라도 workspace가 일치하지 않으면 이동하지 못합니다.
이와 달리 Depot folder, file현재 workspace와는 상관없이 이동할 수 있구요.

북마크 기능이 workspace까지 변경되면서 이동하지는 않으나 숏컷만으로도 유용한 기능이긴 한 것 같습니다.
이미 잘알고 사용하시는 분도 있겠지만 사용하고 있지 않다면 한번 사용해보시는 것도 좋겠네요. 😸

Perforce(P4V) Workspace(작업공간) 관리

Workspace(작업 공간)?

P4는 workspace을 만들고 그 공간에서 작업(checkout, submit 등)을 합니다.
(말 그대로 작업 공간이니 당연한 말을 하고 있었네요. 🙈)

Perforce 가이드 문서에는 workspace를 아래와 같이 설명하고 있습니다.

Workspace: Helix Core server에서 관리하는 파일의 개정판을 작업하는 워크스테이션의 폴더 또는 디렉토리입니다.

단순하게 보면 작업 공간이긴하나 git과 다른 점은 p4 서버가 내 작업 공간 정보를 가지고 있다는 것 입니다.

여러 컴퓨터에서 생성한 workspace 리스트

위의 화면은 서버에 등록된 workspace를 선택하여 사용할 수 있는 화면입니다.
Show only workspace available for use on this computer 옵션을 통해서 현재 컴퓨터에서 만든 workspace를 필터링해서 보고 선택하여 사용할 수 있습니다.

Workspace 만들기

시작 화면에서 Workspace 만들기

작업을 시작하기 위해 workspace를 만들어보죠. p4v를 실행하면 제일 먼저 아래화면을 보실겁니다.

이 화면에서 Workspace에 있는 New 버튼을 눌러보면 아래와 같은 화면을 볼 수 있습니다.

이 글을 보는 모든 분들이 같은 화면을 보지는 않겠지만, Workspace name, Stream에 텍스트를 입력해줍니다.
Workspace name은 workspace의 이름이고 Stream은 해당 workspace에 어떤 스트림을 매핑할지 고르는 거에요.
Stream은 Browse해서 찾을 수도 있고, 입력칸에 검색해서 입력할 수 있습니다.
(직접 입력하면 Stream이 정확하게 입력되지 않을 수 있으니 직접입력하고 자동완성되는 항목을 선택하는 것을 추천합니다.)

이렇게 workspace를 만들고 Open Connection 화면에서 접속을 진행합니다.

현재 Workspace에 접속한 상태에서 다른 Workspace 만들기

시작 화면에서 Workspace 만들기 방법과 같지만 현재 접속한 화면에서 다른 workspace를 만드는 방법도 있습니다.

  • 상단에 있는 메뉴에서 Connection > New Workspace​를 선택합니다.
  • Streams tab (오른쪽 탭)에서 workspace를 만들고자하는 스트림에 마우스 오른쪽 클릭New Workspace를 선택합니다​.
  • Workspaces tab (오른쪽 탭) 상단에 드롭박스 메뉴를 선택한 뒤에 New Workspace를 선택합니다.

위에서 각 New Workspace 메뉴 선택한 뒤에 workspace 만드는 방법은 동일합니다.

Workspace에서 작업하기

workspace를 만들었으니 작업을 위해 소스들을 가져와야겠죠?
다만, 이 포스트에서는 Get Latest 내용만 간단히 보고 넘어가겠습니다.
(workspace와 관련한 내용을 다루기 위한 포스트니까요 😸)

현재 workspace에 연결된 스트림에 있는 모든 파일을 싱크(Sync)하고자 한다면 현재 폴더에서 Get Latest를 선택해주시면 됩니다.

또는 특별히 필요한 폴더만 싱크하고자 한다면,
오른쪽 탭에서 Depot에 스트림 하위에 필요한 폴더에서 마우스 오른쪽 클릭으로 Get Latest Revision을 선택하여 원하는 것만 싱크할 수 있습니다.

이후에 수정이 필요한 소스를 Checkout하고 작업한 뒤에 Changelist를 만들고 Submit하면 커밋이 완료됩니다. 👍

나중에 changelist, submit까지 흐름을 간단하게 정리해보면 좋겠네요.

Workspace 이동(Switch)

작업을 하다보면 브랜치를 이동해야하는 경우가 있습니다.
퍼포스에서는 workspace가 곧 스트림에 연결되어있으니 workspace를 이동하여 작업합니다.

드롭다운 메뉴에서 바로 이동!

Switch to Workspace 메뉴를 통해 이동

위 예시 스크린샷은 같은 스트림을 보고있는 workspace이지만, 다른 스트림을 바라보는 workspace로도 이동할 수 있습니다.

Workspace 삭제(delete)

P4 Guide: Workspace Delete & Unload

workspace를 삭제하는 방법은 간단합니다.

  1. 삭제하고자 하는 workspace에 작업중인 내용이 있다면 리버트합니다. (pending changelist, shelve가 있다면 revert해줍니다.)
  2. View > Workspaces 메뉴에서 Workspaces 탭을 열어줍니다. (이미 열려있다면 해당 탭으로 갑니다)
  3. 마우스 오른쪽 클릭을 누른 뒤 삭제합니다.

삭제하고자하는 workspace에 작업중인 내용이 있다면 아래와 같은 오류가 발생할 수 있으니 작업중인 내용이 있는지 확인해보세요.

Client 'pineoc-feature1' has files opened. To delete the client, revert any opened files and delete any pending changes first. An administrator may specify -f to force the delete of another user's client.
예시로 삭제해보려했는데 파일 하나가 checkout 되어있어 위와 같은 오류를 볼 수 있었습니다.

가이드 문서에 있는 언로드는 제가 테스트하는 workspace에서는 나오지 않아 넘어가겠습니다.

Workspace 관리 마무리

이렇게 Perforce에서 workspace를 생성하고 이동, 삭제하는 것까지 살펴보았습니다.
사실 더 자세하게 정리하면 이야기할 내용이 많지만 use case 별로 정리를 하고 포스팅을 해봐야겠네요. 😎

다른 Perforce 가이드 문서들

P4V(Perforce Client) 프로그램 분석기

P4V, Perforce 클라이언트

https://www.perforce.com/products/helix-core-apps/helix-visual-client-p4v
https://www.perforce.com/downloads/helix-visual-client-p4v

P4V main view

앞선 포스트에서 기본 내용을 소개한 것과 연관해서 P4V는 어떻게 만들어졌는지 궁금해져서 확인해보았습니다.

사실 git 클라이언트 프로그램은 많은데 “왜 Perforce는 다양한 클라이언트가 없을까?”하는 궁금함이 있었고 프로그램에 뭔가 있지 않을까해서 확인해보게되었네요. 🙈

앱(프로그램) 파일 구조 확인 on Mac

Mac에서 p4v를 설치하고 내부 패키지가 어떻게 구성되었는지 확인해보았습니다.
Frameworks에 Qt관련 폴더가 가득한 것을 보니 Qt를 사용해서 개발한 것 같네요.

실제로 패치노트에서도 Qt를 언급하고 있긴합니다. Qt 5버전을 쓰고 있네요.
https://www.perforce.com/perforce/doc.current/user/p4vnotes.txt

1
2
3
4
5
6
7
--------------------------------------------------------------------------
Supporting Libraries for 2020.3.1/2059355
Qt 5.15.1
OpenSSL1.1.1
ICU 65.1
Helix Core C/C++ API 2020.2
--------------------------------------------------------------------------

Qt 프레임워크?

https://www.qt.io/

Qt 프레임워크를 간단하게 설명하면, C++로 개발한 프로그램(GUI 포함)을 다양한 플랫폼에서 사용할 수 있도록 개발할 수 있는 프레임워크입니다. 크로스 플랫폼 프레임워크죠 (React Native나 Ionic, Flutter 같은 프레임워크)
다시 P4V 분석으로 돌아가봅니다.

Qt Webkit, WebEngine을 사용한 웹 렌더링

P4V에는 p4vjs를 통해 웹페이지를 보여주거나 커스텀 HTML을 통해 p4v에서 기본적으로 보여주는 것 외의 것들을 제공할 수 있는데요.

참고 데모: https://www.perforce.com/manuals/p4vjs-ug/Content/P4VJS-UG/run-demo-mode.html

Qt에서는 크로미움(Chromium)을 사용한 웹킷으로 HTML을 보여줄 수 있도록 지원하고 있습니다.
이를 이용해서 P4V도 HTML을 보여줄 수 있는 방법을 열어준 것 같네요.

더 분석할만한 프로그램 내용

딱 파일 구조랑 사용한 프레임워크 외에는 더 분석할 만한 내용은 보이지 않네요. CLI 정도까지만 간단하게 보겠습니다.
(리버스 엔지니어링까지 할만한 프로그램은 아니라고 생각이 들기도하구요. 😸)

P4V 외의 P4 CLI(Command Line Interface)

https://www.perforce.com/manuals/cmdref/Content/CmdRef/Home-cmdref.html

p4도 당연히 CLI가 존재하고 커맨드라인으로 p4v에서 할 수 있는 것들을 할 수 있습니다.
(커맨드를 잘 다룰 수 있다면, 더 많은 것들을 할 수도 있겠죠)

짧은 분석, 공부 마무리

사실 p4v를 사용하면서 뭘로 만들어졌길래 뭔가 안이쁘지? 하고 확인, 정리해보았는데요.
개발툴이라고 생각하고 보면 git 관리툴들이 다 이쁘게 만들어진게 아닐까하는 생각도 들었습니다.

이번에 정리하면서 기본적인 UI 외에 p4vjs로도 뭔가 더 커스텀하게 만들어볼 수 있으니 그걸 쓰면 더 이쁘게 쓸 수 있지 않을까하는 생각도 들었어요. 🤔

p4v를 사용하면서 더 공유할만한 내용이 있다면 또 들고 오겠습니다.
다음 포스트에서 보아요! 😎

P4V 소개 - 기본 개념 및 Cheat Sheet

P4V, Helix Visual Client 소개

전에 작성했던 P4V 가이드 글 외에도 Perforce를 참고할만한 내용이 많지 않아 가이드 문서를 번역해보고 알아보는 포스트를 작성해보고자 합니다.

전에 작성했던 기본 가이드: Perforce Client(P4V) basics

그중에 P4V, Helix(Perforce) 비주얼 클라이언트 소개 글을 정리해보고자 합니다.
각 기능에 대한 번역 및 소개들도 차차 포스팅해보겠습니다.
(대부분의 사람들이 주로 쓰는 프로그램이 비주얼 클라이언트일테니까요. 😸)

Basic concepts (기본 개념)

Helix Core 서버는 여러 버전의 매뉴얼, 웹 페이지 또는 운영 체제 관리 파일과 같은 소스 파일 및 기타 문서를 관리하는 데 사용할 수 있는 엔터프라이즈 버전 관리 도구입니다.
Helix Core 서버에서 관리하는 파일은 저장소(depot)에 있습니다.
파일 작업을 하려면 파일을 열고 작업 공간(workspace)에서 편집합니다.
완료되면 변경 목록(changelist)을 사용하여 변경된 파일을 저장소에 제출(submit)합니다.
저장소는 파일의 모든 현재 및 이전 개정을 추적합니다.

P4V Diagram

각 용어는 번역하지 않고 그대로 두겠습니다.

  • Workspace: Helix Core server에서 관리하는 파일의 개정판을 작업하는 워크스테이션의 폴더 또는 디렉토리입니다.
  • Helix Core app: 워크스테이션에서 실행되는 P4V (또는 명령 줄 클라이언트 또는 P4VS, Visual Studio 용 Helix 플러그인과 같은 다른 Helix Core 애플리케이션)는 Helix Core 서버로 요청하고 해당 요청의 결과 (파일, 상태 정보 등)를 제공합니다.
  • Helix Core server or Helix server: Helix Core app의 요청에 응답하고, Depot 파일을 유지하고, Workspace의 상태를 추적하는 프로그램입니다.
  • Depot: Helix server에서 호스팅하는 파일 저장소입니다. 여기에는 제출된 모든 파일의 모든 기존 버전이 포함됩니다. Helix server는 여러 저장소를 호스팅 할 수 있지만 이 가이드의 예에서는 단일 저장소를 보여줍니다.

P4V Cheat Sheet

P4V 치트 시트가 있긴한데 많이 유용한지는 모르겠습니다.
프린트해놓고 옆에 두고 쓰거나하면 좋을지는 모르겠네요. 😂

Cheat Sheet 원본: P4V Cheat Sheet (EN)

아이콘 모양이나 파일 상태, 스트림 타입에 대해서는 옆에두고 보면 좋을 것 같긴합니다. 😸
(익숙해지기 전까지는요)
치트 시트를 번역해보고 싶었는데 PDF다 보니 이미지를 추출하기도 힘들어서 나중에 기회가 된다면 번역해보겠습니다.

다음 포스트는 스트림과 관련한 내용을 쓸까 싶습니다.
정리되는대로 포스팅해보겠습니다.

감사합니다.

다른 Perforce 가이드 문서들