Introduction to perforce

Download Report

Transcript Introduction to perforce

형상관리 도구 Perforce 개요
Perforce Overview
1
Perforcec 의 특징






Client/Server (over network)
극소 변경 작업
작업공간 관리
파일간의 브랜치
멀티 플래폼 지원
빠르다!
Perforce Overview
2
구조
The Perforce Client-Server Model
Perforce
server
Perforc
e
client
Perforc
e
client
Perforc
e
client
Perforce Overview
3
Perforc
e
client
구조
The Perforce Server
Depot
Perforce
server
Depot
Database
Perforce Overview
4
구조
Perforce Client Programs
p4win
p4
“Joe1”
Workspace
Perforce Overview
“Joe2”
Workspace
5
극소 변경 작업들
Changelists
Changelist
3567
src/zoo/zebra.c#23 edit
src/zoo/chimp.c#1 add
src/zoo/walrus.c#14 edit
src/zoo/lion.c#3 delete
src/zoo/hippo.c#9 edit
Perforce Overview
6
Client 작업공간 생성
Editor
form
Command
p4 client
Client:
laura-ws1
Date:
1998/06/15 12:39:47
Owner:
laura
Description:
Laura’s first client workspace.
Root:
c:\demo
Options: nomodtime noclobber
View:
//depot/main/jam/... //laura-ws1/main/jam/...
Perforce Overview
7
작업공간 등록
p4 sync
//depot/main/jam/regexp.c#4 - added as
c:\demo\main\jam\regexp.c
//depot/main/jam/regexp.h#2 - added as
c:\demo\main\jam\regexp.h
//depot/main/jam/RELNOTES#77 - added as
c:\demo\main\jam\RELNOTES
//depot/main/jam/rules.c#5 - added as
c:\demo\main\jam\rules.c
and so on...
Perforce Overview
8
작업 파일들 수정
cd c:\demo\main\jam
p4 edit rules.c regexp.h
//depot/main/jam/rules.c#5 - opened for edit
//depot/main/jam/regexp.h#2 - opened for edit
vi rules.c
vi regexp.h
Perforce Overview
9
신규 파일들 추가
vi alias.c
p4 add alias.c
//depot/main/jam/alias.c#1 - opened for add
p4 add -t binary logo.bmp
//depot/main/graphics/logo.bmp#1 - opened for
add
Perforce Overview
10
파일들 삭제
ls
lists.c
lists.h
make.c
make.h
make1.c
mkjambase.c
mkjambase.h
newstr.c
newstr.h
option.c
parse.h
rules.h
scan.c
scan.h
search.c
variable.c
variable.h
yyacc
p4 delete rules.h parse.h
//depot/main/jam/rules.h#3 - opened for delete
//depot/main/jam/parse.h#9 - opened for delete
Perforce Overview
11
작업 파일들 복구
p4 revert regexp.h alias.c parse.h
//depot/main/jam/regexp.h#2 - was edit,
reverted
//depot/main/jam/alias.c#1 - was add,
abandoned
//depot/main/jam/parse.h#9 - was delete,
reverted
Perforce Overview
12
작업공간 파일들 작업 이력 조회
p4 opened
//depot/main/jam/hash.c#2 - edit default
change (text)
//depot/main/jam/check.c#1 - add default
change (text)
//depot/main/jam/execnt.c#9 - delete default
change (text)
Perforce Overview
13
변경사항 조회
p4 diff hash.c
==== //depot/main/jam/hash.c#2 c:\demo\main\hash.c ====
76c76
<
TARGET target, t = &target;
-->
TARGET target, *t = &target;
Perforce Overview
14
매일작업 마감
변경리스트 제출
Depot
rules.c#2
check.c#1
execmac.c#2
Workspace
5489
5490
5491
5492
5493
5494
5495
5496
Perforce Overview
15
변경리스트 제출
p4 submit
Change 5085 created with 3 open file(s).
Change:
new
Submitting change 5085.
Description:
add
//depot/main/jam/check.c#1
<enter
description
here>
Added
“check”
function.
delete
//depot/main/jam/execmac.c#2
Files:
edit
//depot/main/jam/rules.c#6
//depot/main/jam/check.c
# add
Change
5085 submitted.
//depot/main/jam/execmac.c
# delete
//depot/main/jam/rules.c
# edit
Perforce Overview
16
파일 병합
About “resolve”
 The resolve command
 When to use resolve:
• After a failed submit
• After re-syncing opened files
• When integrating between branches
Perforce Overview
17
joe-ws
depot
ann-ws
foo.c#3
foo.c
sync
edit
submit
sync
edit
foo.c
foo.c#4
submit
제출 실패
foo.c
resolve
submit
foo.c#5
Perforce Overview
18
분석 명령어
p4 resolve
c:\demo\main\jam\rules.c
- merging //depot/main/jam/rules.c#7
Diff chunks:
0 yours + 0 theirs + 0 both + 1 conflicting
Accept(a) Edit(e) Diff(d) Merge (m)
Skip(s) Help(?) [e]:
Perforce Overview
19
파일 병합
Conflict markers in the merged file
theirs
#
#
#
#
include
include
include
include
yours
"jam.h"
"option.h"
"patchlev.h"
"make.h"
merged
# include "jam.h"
# include "option.h"
>>>> ORIGINAL foo.c#3
==== THEIRS foo.c#4
# include "patchlev.h"
==== YOURS
# include "patchlevel.h"
<<<<
# include "make.h"
Perforce Overview
20
#
#
#
#
include
include
include
include
"jam.h"
"option.h"
"patchlevel.h"
"make.h"
result (after editing)
#
#
#
#
#
#
#
#
include "jam.h"
include "option.h"
ifdef FATFS
include "patchlev.h"
else
include "patchlevel.h"
endif
include "make.h"
Inter-File Branching
 Branching a codeline
 Propagating changes from one
codeline branch into another
Perforce Overview
21
브랜치 와 통합
Branching a Codeline
//depot/rel1/...
//depot/main/...
main
Perforce Overview
22
브랜치 와 통합
브랜치를 통한 변경 전개
main
Perforce Overview
23
대상 브랜치 를 위한 Client 점검
p4 client
Client: jim-ws
Description:
Jim’s Release 1.0 workspace.
Root:
c:\demo
View:
//depot/main/...
//jim-ws/main/...
//depot/rel1/...
//jim-ws/rel1/...
Is the target branch
in this list?
Perforce Overview
24
새 브랜치 작성
p4 integ //depot/main/... //depot/rel1/...
//depot/rel1/regexp.h#1 - branch/sync from
//depot/main/regexp.h#3
//depot/rel1/rules.c#1 - branch/sync from
//depot/main/rules.c#7
//depot/rel1/rules.h#1 - branch/sync from
//depot/main/rules.h#4
…and so on
p4 submit
...
Perforce Overview
25
workspace
depot
sync //depot/main/...
integrate //depot/rel1/... //depot/main/...
resolve
submit
rel1/foo.c#3
foo.c
main/foo.c#9
“base”
editor
“yours”
rel1/foo.c#4
foo.c
“merged”
foo.c
“result”
Perforce Overview
26
main/foo.c#10
“theirs
”
브랜치 들 간의 변경 전달
p4 sync //depot/main/...
//depot/main/... - files up-to-date.
p4 integ //depot/rel1/... //depot/main/...
//depot/main/make.c#4 - integrate from
//depot/rel1/make.c#2,#3
//depot/main/make1.c#7 - integrate from
//depot/rel1/make1.c#2
p4 resolve
...
p4 submit
...
Perforce Overview
27
브랜치 와 병합
Integrating by Branch View
 A way to store and reuse
source/target branch relationships
 To use branch views:
• create branch view spec
• use branch view name with integrate
command
Perforce Overview
28
브랜치 뷰 명세 작성
branch view name
p4 branch r1
Branch:
r1
Description:
Release 1 branch for Server & API
View:
//depot/main/svr/... //depot/rel1/svr/...
//depot/main/api/... //depot/rel1/api/...
target paths
source paths
Perforce Overview
29
브랜치 명세 이용
p4 integ -b r1
…instead of:
p4 integ //depot/main/svr/… //depot/rel1/svr/…
p4 integ //depot/main/api/… //depot/rel1/api/…
And:
p4 integ -r -b r1
…instead of:
p4 integ //depot/rel1/svr/… //depot/main/svr/…
p4 integ //depot/rel1/api/… //depot/main/api/…
Perforce Overview
30
Multi-platform Support
 Runs on zillions of platforms!
 If we don't run on yours, let us
know and we'll port it!
Perforce Overview
31
Summary






Fast
Scalable
Intuitive
Highly portable
Low administration
Excellent technical support
Perforce Overview
32