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 가이드 문서들

What is Buildbot

빌드봇(Buildbot)

https://buildbot.net/
“The Continuous Integration Framework”
“Python-based continuous integration testing framework”
Jenkins, Circle CI와 같은 CI 프레임워크로 지속적인 통합을 위한 프로그램입니다.

Buildbot in Action

Buildbot Home - https://buildbot.buildbot.net/#/

빌드봇 기본 설명

기본적으로 Buildbot은 작업 예약 시스템입니다. 작업을 대기하고 필요한 리소스를 사용할 수 있을 때 작업을 실행하며 결과를 보고합니다.
소스 저장소에서 소스를 받아 마스터(master)가 워커(worker)에게 빌드를 요청합니다.

사실 다른 CI 서비스들과 크게 다른 점은 없지만 현재 사용하고 있는 CI 서비스라서 공부 및 소개하는 차원에서 정리해봅니다.

다른 자료들을 보면서 어떤 장, 단점이 있는지 참고하면서 공부하려고 했는데 자료가 거의 없네요. 😂
빌드봇 공식 문서를 보면서 정리해보고자 합니다. :)

빌드봇 가이드 문서 살펴보기

Introductions

https://docs.buildbot.net/current/manual/introduction.html

빌드봇 소개는 기능 소개로 시작되네요.

  • run builds on a variety of worker platforms
  • arbitrary build process: handles projects using C, Python, whatever
  • minimal host requirements: Python and Twisted
  • workers can be behind a firewall if they can still do checkout
  • status delivery through web page, email, IRC, other protocols
  • track builds in progress, provide estimated completion time
  • flexible configuration by subclassing generic build process classes
  • debug tools to force a new build, submit fake Changes, query worker status
  • released under the GPL

정리해보면 다음과 같습니다.

  • 다양한 워커 플랫폼으로 빌드할 수 있고, 다양한 언어 프로젝트를 빌드 가능
  • Python, Twisted로 설치 요구사항이 적음
  • 빌드 상태 추적 및 예상 완료 시간 제공
  • 빌드 프로세스 설정과 관련하여 유연하게 설정 가능

현재 빌드봇을 사용하는 이유가 빌드 프로세스 설정을 커스텀하게 할 수 있어서이긴 합니다.

사실 젠킨스도 커스텀하게 설정할 수는 있겠지만 현재 사용하는 시스템을 대체하려면 여러가지 커스텀하게 변경해야하는게 많아서 어렵다고는 생각합니다. 😂

https://stackshare.io/buildbot
Stackshare 서비스에서 투표된 내용을 기반으로 보면, 장점으로 “Highly configurable builds”가 1순위네요.
추가로는 “Beautiful waterfall(이쁜 워터폴)”, “Hosted internally(내부 설치)”가 있었습니다.

시스템 구조 오버뷰

앞서 첨부했던 이미지에 있는 내용과 동일한 이미지를 시작으로 시스템 아키텍쳐(구조)에 대한 이야기가 나옵니다.
소스코드 저장소에서 변경사항이 있을 경우 빌드마스터가 이벤트를 받아 워커에 빌드를 요청하고 빌드 상황을 이메일, 웹, 등에서 볼 수 있다는 기본적인 구조를 설명합니다.

워커는 빌드마스터에게 명령을 받고 빌드를 진행하며, 빌드마스터가 코드를 제공하지는 않고 저장소에서 코드를 받아 빌드를 진행합니다.

Buildmaster Architecture

buildmaster architecture

빌드마스터 구조라고 소개해두었지만, 빌드마스터가 어떻게 워커에게 일을 주는 지에 대해 알 수 있는 그림이네요.
문서 상에 설명되어있는 내용을 기준으로 정리해보겠습니다.

Change Sources(변경사항들)
VCS 저장소 내에서 무엇인가 수정될 때마다 변경사항 오브젝트를 생성합니다.
대부분의 ChangeSource는 어떤 종류의 후크 스크립트에서 메시지를 받습니다.
일부 소스들은 정기적으로 저장소를 적극적으로 폴링합니다. 모든 변경사항은 스케줄러에게 제공됩니다.

Schedulers(스케쥴러)
빌드 수행 시기를 결정합니다.
스케쥴러는 BuildRequest에 대한 변경사항을 수집하고, 이 변경사항은 워커를 사용할 수 있을 때까지 빌더들에 전달하기 위해 대기열에 있습니다.

Builders(빌더)
각 빌드의 수행 방법을 정확하게 제어합니다(BuildFactory에서 구성된 일련의 BuildSteps). 각 빌드는 단일 워커에서 실행됩니다.

Status plugins(상태 플러그인)
HTTP, 메일 및 IRC와 같은 프로토콜을 통해 빌드 결과에 대한 정보를 제공합니다.

Each Builder is configured with a list of Workers that it will use for its builds. These workers are expected to behave identically: the only reason to use multiple Workers for a single Builder is to provide a measure of load-balancing.

빌더는 빌드에 사용할 워커들의 목록으로 구성됩니다.
이 워커들은 동일하게 작동해야합니다: 단일 빌더에 여러 워커들을 사용하는 유일한 이유는 로드 밸런싱을 제공하는 것 때문입니다.

Status Delivery Architecture(상태 전달 아키텍쳐)

Status

가이드 문서상에 있는 내용을 그대로 번역하면서 정리해보겠습니다.

The buildmaster maintains a central Status object, to which various status plugins are connected. Through this Status object, a full hierarchy of build status objects can be obtained.

빌드 마스터는 다양한 상태 플러그인이 연결된 중앙 상태(Status) 객체를 유지합니다. 이 상태 객체를 통해 빌드 상태 객체의 전체 계층을 얻을 수 있습니다.

configuration(구성, 설정) 파일은 활성화된 상태 플러그인을 제어합니다. 각 상태 플러그인은 최상위 상태 객체에 대한 참조를 가져옵니다. 여기에서 각 빌더, 빌드, 단계 및 로그 파일에 대한 정보를 요청할 수 있습니다.
이 on-demand 쿼리 인터페이스는 html.Waterfall 플러그인에서 웹 브라우저가 기본 URL에 도달 할 때마다 기본 상태 페이지를 작성하는 데 사용됩니다.

상태 플러그인은 또한 새로운 빌드가 발생할 때 이 상태를 확인(hear)하기 위해 구독(subscribe)할 수 있습니다.
MailNotifier는 이를 사용하여 최근에 완료된 각 빌드에 대해 새 이메일 메시지를 작성합니다.

상태 객체는 빌드 마스터의 기본 디렉토리에 있는 디스크의 기존 빌드 상태를 기록합니다. 이를 통해 히스토리 빌드에 대한 정보를 리턴할 수 있습니다.

스케줄러빌더에 해당하는 상태 객체도 있습니다. 이를 통해 상태 플러그인은 예정된 빌드 및 각 워커의 온라인 / 오프라인 상태에 대한 정보를 보고 할 수 있습니다.

이미지를 보면서 정리해보면, 상태 객체 - 빌더 상태 - 빌드 상태 - 단계(step) 상태 - 로그 파일 구조로 상태를 볼 수 있게 구조화되어있습니다.
최상위 상태 객체는 상태 플러그인이 메일로 상태를 알릴 것인지, IRC로 상태를 알릴 것인지 등 정보를 제공합니다.

Control Flow

가이드 문서에는 “빌드봇에서의 하루” 느낌으로 플로우를 설명합니다.

  • 개발자는 일부 소스 코드 변경 사항을 저장소에 커밋합니다. 일종의 훅(hook) 스크립트 또는 커밋 트리거는 구성된 변경 소스 중 하나를 통해 이 변경에 대한 정보를 빌드 마스터에게 보냅니다. 이 알림은 이메일 또는 네트워크 연결을 통해 도착할 수 있습니다 (빌드마스터가 변경 사항을 구독 할 때 시작되거나 커밋 트리거가 변경 사항을 빌드마스터에게 푸시 할 때 시작됨). 변경 사항에는 변경한 사람, 수정된 파일, 변경 사항이 포함된 리비전 및 체크인 코멘트(주석)에 대한 정보가 포함됩니다.
  • 빌드마스터는 이 변경 사항을 구성된 모든 스케줄러에 분배합니다. 중요한 변경 사항으로 인해 “tree-stable-timer”가 시작되고 변경 사항이 새 빌드로 들어갈 목록에 추가됩니다. 타이머가 만료되면 구성된 각 빌더 세트에서 빌드가 시작되어 모두 동일한 소스 코드를 컴파일 / 테스트합니다. 달리 구성하지 않는 한, 모든 빌드는 여러 워커에서 병렬로 실행됩니다.
  • 빌드는 일련의 단계로 구성됩니다. 각 단계는 해당 빌더와 연관된 원격 워커에서 몇 개의 명령을 호출하게합니다. 첫 번째 단계는 거의 항상 변경사항을 생성한 같은 VC 시스템에서 적절한 리비전을 체크아웃하는 것입니다. 나머지는 일반적인 컴파일 및 실행 단위 테스트를 수행합니다. 각 단계가 실행될 때 워커는 명령 결과 값을 보고(리포트)하고 상태를 빌드마스터에게 반환합니다.
  • 빌드가 실행되면 “빌드 시작”, “단계 시작”, “빌드 완료”등과 같은 상태 메시지가 상태 대상 모음에 게시됩니다. 이러한 대상 중 하나는 일반적으로 이벤트 목록을 표시하는 HTML Waterfall 표시이며 각 열의 맨 위에 있는 최신 빌드 결과를 요약합니다. 개발자는 이 페이지를 주기적으로 확인하여 변경사항이 어떻게 되었는지 확인할 수 있습니다. 빨간색으로 표시되면 실수를 한 것이므로 문제를 해결해야합니다. 녹색으로 표시되면, 그들은 자신의 의무를 다했다는 것을 알 수 있고 그들의 변경사항이 무엇을 깨뜨린 것은 아닌지에 대해 걱정할 필요가 없습니다.
  • MailNotifier 상태 대상이 활성화된 경우, 빌드가 완료되면 빌드변경사항을 기여(참여)한 모든 개발자에게 이메일이 발송됩니다. MailNotifier는 실패한 빌드 또는 전달에서 실패로 전환된 빌드에 대해서만 메일을 보내도록 구성할 수 있습니다. 다른 상태 대상은 IRC와 같은 다른 통신 채널을 통해 유사한 실시간 알림을 제공할 수 있습니다.

빌드봇 살펴보기 마무리

사실 다른 CI 서비스를 많이 아는 상태에서 빌드봇을 둘러보아서 차이점이나 장점을 자세히 소개하지는 못했던 것 같습니다.
다음 포스트에서는 빌드봇 설치, CI 환경 구축까지 해서 테스트가 잘되는지 한번 해봐야겠습니다. 😀
그 후에 젠킨스나 다른 설치형 CI 서비스도 한번 둘러보고 포스트 남겨보겠습니다.

이번 글이 가이드 문서의 번역글로 작성된 것 같기는 합니다.
나중에 빌드봇을 설치하고 설정해보면서 알게되는 내용도 같이 정리해보겠습니다.
그때는 이 글에 #1, #2 이렇게 붙을 수도 있겠네요. 😀

What is Clumsy

Clumsy 소개

https://jagt.github.io/clumsy/index.html

네트워크 환경, 상태를 컨트롤할 수 있는 툴 입니다.
Windows 환경에서만 동작하는 툴이어서 맥(Mac), 리눅스(Linux)에서는 사용할 수 없는 툴입니다.
(Windows의 WinDivert라는 네트워크 관련 패키지를 사용해서 컨트롤하는 프로그램이기 때문입니다.)

clumsy demo

다운로드

사용 방법

https://jagt.github.io/clumsy/manual.html

General

Clumsy Screen

  1. Filtering: 패킷은 이 필터를 조건으로 캡처됩니다. 필터링에 있는 내용을 조건으로 패킷을 잡아 아래 함수들이 동작합니다.
  2. Presets 메뉴: 선택할 수 있는 내장 프리셋 목록이 있습니다. 어떤 필터들이 있는지 드롭다운을 눌러서 볼 수 있습니다.
  • config.txt 에 실행파일과 함께 번들로 필터를 추가할 수도 있습니다.
  1. Start 버튼: 패킷 캡쳐를 시작합니다. 필터의 구문이 맞지 않거나, 다른 이슈로 인해 시작이 안될수도 있습니다.
  • 캡쳐가 시작되면 버튼은 “Stop”으로 변경되고, 버튼 왼쪽 작은 아이콘에 녹색으로 표시됩니다.
  • 캡쳐에 실패하면 아이콘은 적색으로 표시됩니다.
  1. Function control: 캡쳐된 패킷에 대해 원하는 기능을 사용할 수 있습니다.
  • Lag - 패킷 전송을 지연시킵니다. Lag time 만큼 지연시킵니다.
  • Drop - 패킷을 전송하지 않고 떨어뜨립니다.(드롭합니다) Chance 값에 따라 떨어뜨립니다.
  • Throttle - 특정 시간 동안 트래픽을 차단하고 나중에 일괄적으로 보냅니다.
  • Out of order - 순서를 뒤섞습니다.
  • Duplicate - 패킷을 중복으로 보냅니다.
  • Tamper - 패킷 내용을 변경(변조)합니다.
  1. Parameters control
  • Inbound - 밖에서 안으로 들어오는 패킷에 대해 적용합니다.
  • Outbound - 안에서 밖으로 나가는 패킷에 대해 적용합니다.
  • Lag time / Chance - 적용하고자하는 확률, 지연 값을 설정할 수 있습니다.
  1. Status: 현재 상태에 대한 메세지를 보여줍니다.

Client Packet Loss Test

10% packet loss test

  • 모든 패킷에 대해서 10% 확률로 패킷을 드롭시키는 설정입니다.

정리

이 틀을 네트워크 테스트를 하다가 알게되었는데 가이드 문서가 없어서 블로그에 한번 정리해보았습니다.
툴 자체는 간단하고 네트워크 지식(UDP, TCP, 인바운드, 아웃바운드 정도) 알면 사용하는데에는 무리가 없어보이는 툴입니다.
네트워크 상태 테스트에서 일반적으로 발생하는 문제 케이스에 대한 테스트 케이스도 한번 정리해두면 좋을 것 같습니다.

Perforce Client(P4V) basics

P4V 가이드 #1

갑자기 PM이 Perforce 프로그램인 P4V 가이드를 작성하게 되었는데요. 사실 저는 Git, SVN 정도를 사용해본 경험만 있고 이번에 Perforce를 처음 사용하게 되었습니다.

제가 P4V를 볼 일은 많지 않지만 다른 사용자분들의 P4V 사용을 돕기 위해서 가이드 문서를 작성하다가 한국쪽 가이드 문서가 많지 않아 이렇게 블로그로 정리해보게 되었습니다.

툴 설명이라 엄청나게 큰 팁이 있다기 보다 이런 기능도 있구나, 이런 화면에 이런 기능도 있구나 하는 것을 조금씩 정리해보고 공유해보려 합니다. :)

이번 포스트에서는 접속화면 부터 메인메뉴 화면을 중심으로 다뤄보고 다음 포스트에는 P4V에서 자랑하는 기능들을 중심으로 설명해보려합니다. 시작하겠습니다!

다른 Perforce 가이드 문서들

접속 화면

P4V를 켜게되면 아래와 같은 화면을 볼 수 있습니다.

Login

  • 서버 주소, 이름, 워크스페이스를 설치하면서 설정한대로 또는 추가 설정하여 진행할 수 있습니다.
  • 워크스페이스(Workspace)는 내가 앞으로 로컬에서 작업할 공간을 의미합니다.
    • 특정 스트림과 맞춰 설정해두고 그 스트림에 수정사항을 제출할 수 있는 공간으로 이해하시면 됩니다.
  • Show dialog at startup 옵션을 체크해두면 시작할 때마다 이 창을 볼 수 있습니다.
    • 똑같은 값인데 항상 뜨는 창이 귀찮다면 해당 옵션을 끄고 시작하면됩니다.

Setting

처음 접속 시에 아래와 같은 화면이 나와 설정이 필요할 경우 참고하세요.
(갑작스러운 윈도우 화면이지만 정보와 버튼 UI 레이아웃은 맥과 동일합니다)

SSL fingerprint trust

Encoding check

  • Trust this fingerprint 체크! → Connect
    • p4 서버 연결시 SSL이 설정되어있을 경우, 확인 절차로 나옵니다. 아닌 경우에는 설정창이 뜨지 않습니다.
    • 이 컴퓨터에서 보안 연결하는 것을 설정하는 작업입니다.
  • 드롭다운을 눌러서 서버에 설정된 인코딩에 맞춰 설정합니다.
    • CPC949 또는 UTF-8, UTF-8 (no bom) 등이 있습니다. 자신의 서버에 맞게 설정해주세요.

메인 화면

Main view

  • 메인 화면은 처음 실행한 화면과 예시 화면이 다를 수 있습니다.
  • 현재 히스토리(History)를 보여주는 영역을 메인 영역으로 정의하고 설명드리겠습니다.
    • 화면 상단에 뷰(View) 메뉴를 눌러보면 많은 뷰 메뉴가 있습니다.
    • 모든 뷰 메뉴에 대한 자세한 설명이 필요하다면 이 링크를 참고해주세요. (영어 주의)
  • 현재 보이는 화면에서 자주보는 메뉴는 다음과 같습니다.
    • History: 왼쪽 트리에서 선택한 디팟(Depot), 스트림, 파일의 히스토리를 볼 수 있습니다.
    • Files: 왼쪽 트리에서 Workspace 탭으로 갔을 때, 각 폴더에 있는 파일 목록을 볼 수 있습니다.
    • Pending: 현재 작업하고자 Checkout한 파일리스트 또는 제출(서밋, Submit)하기 위해 만든 체인지리스트(Changelist)를 관리할 수 있습니다.
    • Submitted: 내가 제출한 체인지리스트의 목록을 볼 수 있습니다.

History

History view

  • 왼쪽 메뉴에서 선택한 항목(디팟, 스트림, 파일)의 히스토리를 볼 수 있습니다.
  • Revision / Date Submitted / Submitted By / Description 각 컬럼별로 정렬하여 볼 수 있습니다.
  • 브랜치(스트림)에 상관없이 디팟의 히스토리를 보고 싶다면 stream 항목을 눌러서 히스토리를 볼 수 있습니다.
  • 왼쪽 메뉴 상단의 필터 버튼을 통해 스트림을 타입별로 골라서 볼 수 있습니다.
    • mainline 스트림만 보고 싶다면, 필터 버튼 > Tree Restricted to Stream Type > Mainline
    • Development 스트림만 보고 싶다면, 필터 버튼 > Tree Restricted to Stream Type > Development
    • Release 스트림만 보고 싶다면, 필터 버튼 > Tree Restricted to Stream Type > Release
    • 필터를 사용하지 않고 모든 스트림을 보는 옵션은 No Filter 또는 All Types 입니다.
  • 저장소의 히스토리만 보고자 한다면, 로컬에 소스를 받을 필요없이 리모트의 히스토리만 볼 수 있습니다.

Files

Files view

  • 왼쪽 메뉴에서 선택한 항목의 하위에 있는 파일들을 볼 수 있습니다.
    • 폴더를 선택할 경우 해당 폴더안에 있는 파일들을 볼 수 있습니다.
    • 파일을 선택하더라도 같은 폴더안에 있는 파일들도 볼 수 있습니다.
  • 각 파일 항목 별로 마우스 오른쪽 버튼을 누르면 기능들이 많습니다.
    • Check Out, Mark for Delete, File History 등 사용하고자하는 기능을 사용할 수 있습니다.

Pending

Pending view

  • 현재 보여지는 화면과 가이드를 보고 있는 여러분의 화면은 다를 수 있습니다.
    • 메뉴 상단에 필터가 어떻게 적용되어있냐에 따라 다릅니다.
    • 필터를 어떻게 적용하냐에 따라 다른 사람의 Pending changelist(작업 내용)을 볼 수 있습니다.
  • 체크아웃을 하여 작업한 내용을 넣거나 체크아웃 하기 전 미리 체인지리스트를 만들 수 있는 화면입니다.

Submitted

Submitted view

  • 기본 필터로는 현재 사용자가 제출한 체인지리스트를 볼 수 있습니다.
    • 필터를 어떻게 적용하냐에 따라 다른 사용자가 제출한 내용도 볼 수 있습니다.
  • 각 항목은 마우스 오른쪽 버튼을 클릭하면 상세 내용을 볼 수 있는 메뉴들을 볼 수 있습니다.

Filter 기능

Filter

  • 내가 원하는 조건에 따른 결과를 볼 수 있도록 하는 필터 기능입니다.
  • 위에 메인메뉴에서 있던 Pending, Submitted 등의 메뉴에서 사용할 수 있습니다.
  • -/+ 버튼으로 조건을 추가할 수 있습니다.
    • User, Workspace, Files를 조건으로 검색할 수 있습니다.
  • 필터 기능은 슬프게도 히스토리(History) 메뉴에는 없습니다. :(
  • 각 필터 항목에 OR / AND 연산을 할 수 있는 쿼리가 지원되지 않습니다.
    • 혹시나 해서 && 나 || AND OR 등 지원되는 것이 없네요. :(
  • 자주사용하는 필터는 저장해서 사용할 수 있습니다.
    • 메뉴 상단 필터 버튼 > Save Filter… > 필터 이름입력 > OK

각 메뉴에서 Ctrl + f (Cmd + f)를 누르면 검색할 수 있습니다. 다만 제한조건이 있습니다.

  • 히스토리 메뉴에서는 Revision, Submitted By, Description 항목에 있는 내용으로 검색할 수 있습니다.
  • 각 Pending, Submitted에서는 설명 메세지, 체인지리스트 값으로 검색할 수 있습니다.
  • 다만 한계점은, 지금 리스트에 보이는 만큼에서만 검색됩니다.
    • 퍼포스는 전체 체인지리스트를 한번에 받아오지 않게 되어있기 때문입니다.
    • 검색 기능은 다소 불편하지만 스크롤을 쭉 내려서 검색하는 것도 방법입니다.

추가적으로 할 수 있는 방법은 HTML Tools를 사용해서 검색 툴을 만드는 것 정도가 있을 수 있겠습니다.

  • https://www.perforce.com/.../enable-html-tools.html
  • 예시 중에 Demo Run Queries 를 참고하면 전체 체인지리스트에서 검색할 수는 있어보입니다.
  • 나중에 다른분들도 사용해볼 수 있도록 만든 뒤에 공유해보겠습니다.

마무리

회사에서 SVN을 사용하다가 Perforce로 마이그레이션하면서 빠르고 편한 것도 있지만 여러 어려움을 겪고 있는데요. 기존에 검색되던 것들이 쉽게 검색되지 않는 것과 종종 발생하는 대규모 lock 사태 등..

조금씩 사내 시스템에 개선해나가면 Perforce도 쓸만해지지 않을까라는 생각을 하며 다른 사용자분들도 잘 사용하고 계신지 궁금하네요. 다음 포스트에서 더 유익한 정보 가져오겠습니다.

감사합니다.