SlideShare uma empresa Scribd logo
1 de 28
# 
Sven Erik 
Technical Marketing 
Robert Cowham 
Professional Services
# 
• Background 
• Algorithm 
• Configuration 
• Adapting for continuous transfer 
• Customer Case Study
# 
Author of P4Python. 
Started as Lead Consultant at Perforce. 
Regular presenter at Perforce and other 
conferences. 
API experience includes P4OFC 
(P4COM) and P4Python. Author of 
'Learning Perforce SCM' by PACKT 
Publishing, Sep 2013.
#
# 
• One project in two separate Perforce Servers? 
– e.g. Public Depot and Master Depot 
Source P4D Target P4D 
?
# 
• Git? SHAs do not match. 
• Sandbox? Can only talk to one server. 
• Replication? Not practical. 
• Reconcile? Changes? Integrations? 
• Replay changes one by one ... ?
# 
• Transfer workspace sharing the same root 
Source Target 
transfer
# 
• One workspace on each server with shared root 
• Client views have to match 
– Depot views don’t have to match 
– Filter projects you want to transfer 
• Need to set options to allwrite 
Client: src-trans 
Root: /Users/sknop/perforce/transfer 
Options: allwrite 
View: 
//source/project1/... //src-trans/... 
Client: target-trans 
Root: /Users/sknop/perforce/transfer 
Options: allwrite 
View: 
//target/external/... //target-trans/...
# 
• Written in Python (2.6+ and 3.3+) using P4Python 
• Makes use of P4::Map and P4::Resolver 
– Use Map instead of “p4 where” 
– Resolver allows scripting of resolve results
# 
counter = getCounter() 
changes = p4 –p source changes ...@counter,#head 
for change in changes: 
filterChangeByClientView(change) 
p4 –p source sync 
if add: p4 –p target add 
if delete: p4 –p target delete -v 
if edit: p4 –p target sync –k ; p4 –p target edit 
if move: p4 –p target sync –f old; p4 –p target edit old; p4 –p target move old new 
integrate?
# 
• Integrations within workspace view are transferred 
– Resolve records match source records (details later) 
• Integrations from outside the view are downgraded 
– integrate  add/edit/delete 
• Use P4::Resolver to preserve resolve outcome
# 
Client: src-trans 
View: 
//depot/inside/... //src-trans/... 
Client: target-trans 
View: 
//target/... //target-trans/...
# 
• usage: P4Transfer.py [-h] [-n] [-c CONFIG] [-m MAXIMUM] [-k] [-p] [-r] [-s] 
• [--sample_config] [-i] 
• P4Transfer 
• optional arguments: 
• -h, --help show this help message and exit 
• -n, --preview Preview only, no transfer 
• -c CONFIG, --config CONFIG Default is transfer.cfg 
• -m MAXIMUM, --maximum MAXIMUM Maximum number of changes to transfer 
• -k, --nokeywords Do not expand keywords and remove +k from filetype 
• -p, --preflight Run a sanity check first to ensure target is empty 
• -r, --repeat Repeat transfer in a loop - for continuous transfer 
• -s, --stoponerror Stop on any error even if --repeat has been specified 
• --sample_config Print an example config file and exit 
• -i, --ignore Treat integrations as adds and edits
# 
• [general] 
• counter_name = p4transfer_counter 
• [source] 
• p4port = source.perforce.com:1666 
• p4user = sknop 
• p4client = source_transfer 
• [target] 
• p4port = target.perforce.com:1777 
• p4user = sknop 
• p4client = target_transfer 
P4Transfer.py --sample_config
# 
• How do we test P4Transfer with two servers? 
• Use the “rsh trick” 
– Spawn a local p4d but without consuming port 
P4PORT=rsh:/bin/p4d -r /path/to/target.root –i 
• Tests: 
– Inject changes into source 
– Transfer 
– Verify result in target
#
# 
• Experience based on source code migrations 
– which can take days 
• We want to keep an eye on things 
– But have a life at the same time  
• Reliability/robustness in the face of 
(communication) errors 
• Status / Error reporting to support the above
# 
• Customer working with multiple third parties 
• Provide some level of backup/DR 
• Limited access to remote repositories 
– Replicas considered but rejected 
– Basically only read-only access 
• Data size/connectivity issues
# 
• Volume / connectivity bandwidth 
– 280 Gb of data 
• Seeding via offline backup would have been ideal 
– 1Gb per hour transfer rate 
– Single (early) changelist ~120Gb! 
• We wanted 
– Handle/report VPN disconnects 
– Peace of mind…!
# 
• Use standard Python logging module 
– Subclass for custom behavior 
– Beware of Python 2.x/3.x compatibility issues 
• Custom logging enhancements 
– Use circular buffer to remember last 50 lines 
– Automatically notify users via email, including those 
lines
# 
Transferring 16 changes 
Syncing 16 changes, files 5375, size 11.2 GB 
Processing : 87370 "Removed unused physx files from 
filelist." 
source = 87370 : target = 460 
Processing : 87377 "Copying //depot/stable to live 
(//depot/live) various hotfixes" 
source = 87377 : target = 461 
Synced 8/16 changes, files 676/5375 (12.6 %), size 482.8 
MB/11.2 GB (4.3 %) 
Synced 8/16 changes, files 940/5375 (17.5 %), size 1.2 
GB/11.2 GB (10.7 %)
# 
• P4API / P4Python has callback options 
# Report status per change 
self.progress.ReportChangeSync() 
# Create a custom callback object (next slide) 
mycallback = SyncOutput(self.progress) 
# Pass it to the P4 sync command 
self.p4.run('sync', '...@{},{}'.format(change, change), handler=mycallback )
# 
class SyncOutput(P4.OutputHandler): 
def __init__(self, progress): 
P4.OutputHandler.__init__(self) 
self.progress = progress # Save reporting object 
def outputStat(self, stat): # Function called by P4API 
if 'fileSize' in stat: 
# Report how much data synced for current file 
self.progress.ReportFileSync(int(stat['fileSize'])) 
return P4.OutputHandler.HANDLED
# 
• What happens when the Dragon King is: 
– Der Drachenkönig.jpg 
• Windows servers (not in Unicode mode) handle 
(some) Unicode filenames happily 
– no P4CHARSET required, but… 
• On Mac/Unix - UTF8 does the job 
• On Windows: 
– Python 2.7 fine / Python 3.x requires work…
# 
• On Windows run as a service 
– Install: srvcinst.exe 
– Run service: srvany.exe (or other equivalents)
# 
• Basic algorithm unchanged 
– Fixed a couple of bugs 
– TDD => Test Harness 
• Added repeat/polling options 
• Enhanced Robustness 
– Logging / Status reporting 
– Error handling
# 
Sven Erik Knop 
sknop@perforce.com 
Robert Cowham 
rcowham@perforce.com 
@robertcowham
# 
RESOURCES 
Public Depot: 
swarm.workshop.perforce.com/projects/perforce-software-p4transfer/

Mais conteúdo relacionado

Mais procurados

Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉HyunJoon Park
 
Design and Implementation of GCC Register Allocation
Design and Implementation of GCC Register AllocationDesign and Implementation of GCC Register Allocation
Design and Implementation of GCC Register AllocationKito Cheng
 
Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019Unity Technologies
 
Custom SRP and graphics workflows - Unite Copenhagen 2019
Custom SRP and graphics workflows - Unite Copenhagen 2019Custom SRP and graphics workflows - Unite Copenhagen 2019
Custom SRP and graphics workflows - Unite Copenhagen 2019Unity Technologies
 
My sql connector.c++ 기본 가이드
My sql connector.c++ 기본 가이드My sql connector.c++ 기본 가이드
My sql connector.c++ 기본 가이드ChungYi1
 
Player Traversal Mechanics in the Vast World of Horizon Zero Dawn
Player Traversal Mechanics in the Vast World of Horizon Zero DawnPlayer Traversal Mechanics in the Vast World of Horizon Zero Dawn
Player Traversal Mechanics in the Vast World of Horizon Zero DawnGuerrilla
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Tiago Sousa
 
LOD and Culling Systems That Scale - Unite LA
LOD and Culling Systems That Scale  - Unite LALOD and Culling Systems That Scale  - Unite LA
LOD and Culling Systems That Scale - Unite LAUnity Technologies
 
Stackless Python In Eve
Stackless Python In EveStackless Python In Eve
Stackless Python In Evel xf
 
Advanced Lighting Techniques Dan Baker (Meltdown 2005)
Advanced Lighting Techniques   Dan Baker (Meltdown 2005)Advanced Lighting Techniques   Dan Baker (Meltdown 2005)
Advanced Lighting Techniques Dan Baker (Meltdown 2005)mobius.cn
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxThe Linux Foundation
 
Railway Oriented Programming
Railway Oriented ProgrammingRailway Oriented Programming
Railway Oriented ProgrammingScott Wlaschin
 
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017devCAT Studio, NEXON
 
ECS architecture with Unity by example - Unite Europe 2016
ECS architecture with Unity by example - Unite Europe 2016ECS architecture with Unity by example - Unite Europe 2016
ECS architecture with Unity by example - Unite Europe 2016Simon Schmid
 
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...Takahiro Harada
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
A Peek into Google's Edge TPU
A Peek into Google's Edge TPUA Peek into Google's Edge TPU
A Peek into Google's Edge TPUKoan-Sin Tan
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술henjeon
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010devCAT Studio, NEXON
 

Mais procurados (20)

Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉
 
Design and Implementation of GCC Register Allocation
Design and Implementation of GCC Register AllocationDesign and Implementation of GCC Register Allocation
Design and Implementation of GCC Register Allocation
 
Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019
 
Custom SRP and graphics workflows - Unite Copenhagen 2019
Custom SRP and graphics workflows - Unite Copenhagen 2019Custom SRP and graphics workflows - Unite Copenhagen 2019
Custom SRP and graphics workflows - Unite Copenhagen 2019
 
My sql connector.c++ 기본 가이드
My sql connector.c++ 기본 가이드My sql connector.c++ 기본 가이드
My sql connector.c++ 기본 가이드
 
Player Traversal Mechanics in the Vast World of Horizon Zero Dawn
Player Traversal Mechanics in the Vast World of Horizon Zero DawnPlayer Traversal Mechanics in the Vast World of Horizon Zero Dawn
Player Traversal Mechanics in the Vast World of Horizon Zero Dawn
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)
 
LOD and Culling Systems That Scale - Unite LA
LOD and Culling Systems That Scale  - Unite LALOD and Culling Systems That Scale  - Unite LA
LOD and Culling Systems That Scale - Unite LA
 
Stackless Python In Eve
Stackless Python In EveStackless Python In Eve
Stackless Python In Eve
 
Advanced Lighting Techniques Dan Baker (Meltdown 2005)
Advanced Lighting Techniques   Dan Baker (Meltdown 2005)Advanced Lighting Techniques   Dan Baker (Meltdown 2005)
Advanced Lighting Techniques Dan Baker (Meltdown 2005)
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
 
Railway Oriented Programming
Railway Oriented ProgrammingRailway Oriented Programming
Railway Oriented Programming
 
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
 
ECS architecture with Unity by example - Unite Europe 2016
ECS architecture with Unity by example - Unite Europe 2016ECS architecture with Unity by example - Unite Europe 2016
ECS architecture with Unity by example - Unite Europe 2016
 
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
A Peek into Google's Edge TPU
A Peek into Google's Edge TPUA Peek into Google's Edge TPU
A Peek into Google's Edge TPU
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
Integrity Protection for Embedded Systems
Integrity Protection for Embedded SystemsIntegrity Protection for Embedded Systems
Integrity Protection for Embedded Systems
 

Destaque

Thong bao thi tuyen chuc danh 2015
Thong bao thi tuyen chuc danh 2015Thong bao thi tuyen chuc danh 2015
Thong bao thi tuyen chuc danh 2015tuyencongchuc
 
Document Freedom Day & Mongo Summer Festival 2014 / DFDと納涼もんご祭り2014の宣伝
Document Freedom Day & Mongo Summer Festival 2014 / DFDと納涼もんご祭り2014の宣伝Document Freedom Day & Mongo Summer Festival 2014 / DFDと納涼もんご祭り2014の宣伝
Document Freedom Day & Mongo Summer Festival 2014 / DFDと納涼もんご祭り2014の宣伝Naruhiko Ogasawara
 
#IT fest 2013 - Co to jest RWD? I kiedy warto myśleć o nim w kontekście aplik...
#IT fest 2013 - Co to jest RWD? I kiedy warto myśleć o nim w kontekście aplik...#IT fest 2013 - Co to jest RWD? I kiedy warto myśleć o nim w kontekście aplik...
#IT fest 2013 - Co to jest RWD? I kiedy warto myśleć o nim w kontekście aplik...#IT fest
 
One Library Per Village
One Library Per Village One Library Per Village
One Library Per Village Sujai.G Pillai
 
Thesis Project Luke Morton 2016
Thesis Project Luke Morton 2016Thesis Project Luke Morton 2016
Thesis Project Luke Morton 2016Luke Morton
 
Industrial Attachment Program (IAP) Report
Industrial Attachment Program (IAP) ReportIndustrial Attachment Program (IAP) Report
Industrial Attachment Program (IAP) ReportAkshit Arora
 
Sasha latypovaonprospectingforstartups
Sasha latypovaonprospectingforstartupsSasha latypovaonprospectingforstartups
Sasha latypovaonprospectingforstartupsMartin Edic
 
Translation #9 cello poem no.3 (chinese and malay)
Translation #9 cello poem no.3 (chinese and malay)Translation #9 cello poem no.3 (chinese and malay)
Translation #9 cello poem no.3 (chinese and malay)Isaac Low
 
Samsung EP96-02787B
Samsung EP96-02787BSamsung EP96-02787B
Samsung EP96-02787Bsavomir
 
2 2-making greatdecisions
2 2-making greatdecisions2 2-making greatdecisions
2 2-making greatdecisionsuploadlessons
 
Managing stress levels
Managing stress levelsManaging stress levels
Managing stress levelsOMODAN ISIBOR
 

Destaque (16)

Thong bao thi tuyen chuc danh 2015
Thong bao thi tuyen chuc danh 2015Thong bao thi tuyen chuc danh 2015
Thong bao thi tuyen chuc danh 2015
 
Document Freedom Day & Mongo Summer Festival 2014 / DFDと納涼もんご祭り2014の宣伝
Document Freedom Day & Mongo Summer Festival 2014 / DFDと納涼もんご祭り2014の宣伝Document Freedom Day & Mongo Summer Festival 2014 / DFDと納涼もんご祭り2014の宣伝
Document Freedom Day & Mongo Summer Festival 2014 / DFDと納涼もんご祭り2014の宣伝
 
doshkolenok
 doshkolenok doshkolenok
doshkolenok
 
Prospectiva
ProspectivaProspectiva
Prospectiva
 
Cien consejos para ganar elecciones
Cien consejos para ganar eleccionesCien consejos para ganar elecciones
Cien consejos para ganar elecciones
 
InvestHK - Services for Indian businesses
InvestHK - Services for Indian businessesInvestHK - Services for Indian businesses
InvestHK - Services for Indian businesses
 
#IT fest 2013 - Co to jest RWD? I kiedy warto myśleć o nim w kontekście aplik...
#IT fest 2013 - Co to jest RWD? I kiedy warto myśleć o nim w kontekście aplik...#IT fest 2013 - Co to jest RWD? I kiedy warto myśleć o nim w kontekście aplik...
#IT fest 2013 - Co to jest RWD? I kiedy warto myśleć o nim w kontekście aplik...
 
One Library Per Village
One Library Per Village One Library Per Village
One Library Per Village
 
Primary vlan
Primary vlanPrimary vlan
Primary vlan
 
Thesis Project Luke Morton 2016
Thesis Project Luke Morton 2016Thesis Project Luke Morton 2016
Thesis Project Luke Morton 2016
 
Industrial Attachment Program (IAP) Report
Industrial Attachment Program (IAP) ReportIndustrial Attachment Program (IAP) Report
Industrial Attachment Program (IAP) Report
 
Sasha latypovaonprospectingforstartups
Sasha latypovaonprospectingforstartupsSasha latypovaonprospectingforstartups
Sasha latypovaonprospectingforstartups
 
Translation #9 cello poem no.3 (chinese and malay)
Translation #9 cello poem no.3 (chinese and malay)Translation #9 cello poem no.3 (chinese and malay)
Translation #9 cello poem no.3 (chinese and malay)
 
Samsung EP96-02787B
Samsung EP96-02787BSamsung EP96-02787B
Samsung EP96-02787B
 
2 2-making greatdecisions
2 2-making greatdecisions2 2-making greatdecisions
2 2-making greatdecisions
 
Managing stress levels
Managing stress levelsManaging stress levels
Managing stress levels
 

Semelhante a Transferring Changes Between Perforce Servers

LAB - Perforce Large Scale & Multi-Site Implementations
LAB - Perforce Large Scale & Multi-Site ImplementationsLAB - Perforce Large Scale & Multi-Site Implementations
LAB - Perforce Large Scale & Multi-Site ImplementationsPerforce
 
Five Real-World Strategies for Perforce Streams
Five Real-World Strategies for Perforce StreamsFive Real-World Strategies for Perforce Streams
Five Real-World Strategies for Perforce StreamsPerforce
 
Perforce Administration: Optimization, Scalability, Availability and Reliability
Perforce Administration: Optimization, Scalability, Availability and ReliabilityPerforce Administration: Optimization, Scalability, Availability and Reliability
Perforce Administration: Optimization, Scalability, Availability and ReliabilityPerforce
 
3 Ways to Improve Performance from a Storage Perspective
3 Ways to Improve Performance from a Storage Perspective3 Ways to Improve Performance from a Storage Perspective
3 Ways to Improve Performance from a Storage PerspectivePerforce
 
[MathWorks] Versioning Infrastructure
[MathWorks] Versioning Infrastructure[MathWorks] Versioning Infrastructure
[MathWorks] Versioning InfrastructurePerforce
 
LAB - Component Based Development
LAB - Component Based DevelopmentLAB - Component Based Development
LAB - Component Based DevelopmentPerforce
 
Multi-Site Perforce at NetApp
Multi-Site Perforce at NetAppMulti-Site Perforce at NetApp
Multi-Site Perforce at NetAppPerforce
 
Using R on High Performance Computers
Using R on High Performance ComputersUsing R on High Performance Computers
Using R on High Performance ComputersDave Hiltbrand
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdfSteve Caron
 
White Paper: Perforce Administration Optimization, Scalability, Availability ...
White Paper: Perforce Administration Optimization, Scalability, Availability ...White Paper: Perforce Administration Optimization, Scalability, Availability ...
White Paper: Perforce Administration Optimization, Scalability, Availability ...Perforce
 
Application Caching: The Hidden Microservice (SAConf)
Application Caching: The Hidden Microservice (SAConf)Application Caching: The Hidden Microservice (SAConf)
Application Caching: The Hidden Microservice (SAConf)Scott Mansfield
 
Graphing Nagios services with pnp4nagios
Graphing Nagios services with pnp4nagiosGraphing Nagios services with pnp4nagios
Graphing Nagios services with pnp4nagiosjasonholtzapple
 
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdf
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdfHashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdf
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdfssuser705051
 
Scaling Servers and Storage for Film Assets
Scaling Servers and Storage for Film Assets  Scaling Servers and Storage for Film Assets
Scaling Servers and Storage for Film Assets Perforce
 
Comparative Performance Analysis of AWS EC2 Instance Types Commonly Used for ...
Comparative Performance Analysis of AWS EC2 Instance Types Commonly Used for ...Comparative Performance Analysis of AWS EC2 Instance Types Commonly Used for ...
Comparative Performance Analysis of AWS EC2 Instance Types Commonly Used for ...DataWorks Summit
 
From Windows to Linux: Converting a Distributed Perforce Helix Infrastructure
From Windows to Linux: Converting a Distributed Perforce Helix InfrastructureFrom Windows to Linux: Converting a Distributed Perforce Helix Infrastructure
From Windows to Linux: Converting a Distributed Perforce Helix InfrastructurePerforce
 
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...OpenShift Origin
 
Lcna tutorial-2012
Lcna tutorial-2012Lcna tutorial-2012
Lcna tutorial-2012Gluster.org
 
Lcna 2012-tutorial
Lcna 2012-tutorialLcna 2012-tutorial
Lcna 2012-tutorialGluster.org
 

Semelhante a Transferring Changes Between Perforce Servers (20)

LAB - Perforce Large Scale & Multi-Site Implementations
LAB - Perforce Large Scale & Multi-Site ImplementationsLAB - Perforce Large Scale & Multi-Site Implementations
LAB - Perforce Large Scale & Multi-Site Implementations
 
Five Real-World Strategies for Perforce Streams
Five Real-World Strategies for Perforce StreamsFive Real-World Strategies for Perforce Streams
Five Real-World Strategies for Perforce Streams
 
Perforce Administration: Optimization, Scalability, Availability and Reliability
Perforce Administration: Optimization, Scalability, Availability and ReliabilityPerforce Administration: Optimization, Scalability, Availability and Reliability
Perforce Administration: Optimization, Scalability, Availability and Reliability
 
3 Ways to Improve Performance from a Storage Perspective
3 Ways to Improve Performance from a Storage Perspective3 Ways to Improve Performance from a Storage Perspective
3 Ways to Improve Performance from a Storage Perspective
 
[MathWorks] Versioning Infrastructure
[MathWorks] Versioning Infrastructure[MathWorks] Versioning Infrastructure
[MathWorks] Versioning Infrastructure
 
LAB - Component Based Development
LAB - Component Based DevelopmentLAB - Component Based Development
LAB - Component Based Development
 
Multi-Site Perforce at NetApp
Multi-Site Perforce at NetAppMulti-Site Perforce at NetApp
Multi-Site Perforce at NetApp
 
Using R on High Performance Computers
Using R on High Performance ComputersUsing R on High Performance Computers
Using R on High Performance Computers
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
 
White Paper: Perforce Administration Optimization, Scalability, Availability ...
White Paper: Perforce Administration Optimization, Scalability, Availability ...White Paper: Perforce Administration Optimization, Scalability, Availability ...
White Paper: Perforce Administration Optimization, Scalability, Availability ...
 
Application Caching: The Hidden Microservice (SAConf)
Application Caching: The Hidden Microservice (SAConf)Application Caching: The Hidden Microservice (SAConf)
Application Caching: The Hidden Microservice (SAConf)
 
Graphing Nagios services with pnp4nagios
Graphing Nagios services with pnp4nagiosGraphing Nagios services with pnp4nagios
Graphing Nagios services with pnp4nagios
 
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdf
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdfHashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdf
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdf
 
Terraform-2.pdf
Terraform-2.pdfTerraform-2.pdf
Terraform-2.pdf
 
Scaling Servers and Storage for Film Assets
Scaling Servers and Storage for Film Assets  Scaling Servers and Storage for Film Assets
Scaling Servers and Storage for Film Assets
 
Comparative Performance Analysis of AWS EC2 Instance Types Commonly Used for ...
Comparative Performance Analysis of AWS EC2 Instance Types Commonly Used for ...Comparative Performance Analysis of AWS EC2 Instance Types Commonly Used for ...
Comparative Performance Analysis of AWS EC2 Instance Types Commonly Used for ...
 
From Windows to Linux: Converting a Distributed Perforce Helix Infrastructure
From Windows to Linux: Converting a Distributed Perforce Helix InfrastructureFrom Windows to Linux: Converting a Distributed Perforce Helix Infrastructure
From Windows to Linux: Converting a Distributed Perforce Helix Infrastructure
 
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
 
Lcna tutorial-2012
Lcna tutorial-2012Lcna tutorial-2012
Lcna tutorial-2012
 
Lcna 2012-tutorial
Lcna 2012-tutorialLcna 2012-tutorial
Lcna 2012-tutorial
 

Mais de Perforce

How to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsHow to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsPerforce
 
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...Perforce
 
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Perforce
 
Understanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsUnderstanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsPerforce
 
Branching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessBranching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessPerforce
 
How to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsHow to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsPerforce
 
How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog Perforce
 
Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Perforce
 
Shift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowShift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowPerforce
 
Hybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldHybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldPerforce
 
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterpriseBetter, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterprisePerforce
 
Easier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMEasier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMPerforce
 
How To Master Your Mega Backlog
How To Master Your Mega Backlog How To Master Your Mega Backlog
How To Master Your Mega Backlog Perforce
 
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Perforce
 
How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure Perforce
 
Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Perforce
 
Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Perforce
 
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Perforce
 
What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4Perforce
 
Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Perforce
 

Mais de Perforce (20)

How to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsHow to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning Needs
 
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
 
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
 
Understanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsUnderstanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPs
 
Branching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessBranching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development Process
 
How to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsHow to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOps
 
How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog
 
Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team
 
Shift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowShift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New Workflow
 
Hybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldHybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated World
 
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterpriseBetter, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
 
Easier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMEasier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALM
 
How To Master Your Mega Backlog
How To Master Your Mega Backlog How To Master Your Mega Backlog
How To Master Your Mega Backlog
 
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
 
How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure
 
Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2
 
Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?
 
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
 
What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4
 
Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 

Último (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 

Transferring Changes Between Perforce Servers

  • 1. # Sven Erik Technical Marketing Robert Cowham Professional Services
  • 2. # • Background • Algorithm • Configuration • Adapting for continuous transfer • Customer Case Study
  • 3. # Author of P4Python. Started as Lead Consultant at Perforce. Regular presenter at Perforce and other conferences. API experience includes P4OFC (P4COM) and P4Python. Author of 'Learning Perforce SCM' by PACKT Publishing, Sep 2013.
  • 4. #
  • 5. # • One project in two separate Perforce Servers? – e.g. Public Depot and Master Depot Source P4D Target P4D ?
  • 6. # • Git? SHAs do not match. • Sandbox? Can only talk to one server. • Replication? Not practical. • Reconcile? Changes? Integrations? • Replay changes one by one ... ?
  • 7. # • Transfer workspace sharing the same root Source Target transfer
  • 8. # • One workspace on each server with shared root • Client views have to match – Depot views don’t have to match – Filter projects you want to transfer • Need to set options to allwrite Client: src-trans Root: /Users/sknop/perforce/transfer Options: allwrite View: //source/project1/... //src-trans/... Client: target-trans Root: /Users/sknop/perforce/transfer Options: allwrite View: //target/external/... //target-trans/...
  • 9. # • Written in Python (2.6+ and 3.3+) using P4Python • Makes use of P4::Map and P4::Resolver – Use Map instead of “p4 where” – Resolver allows scripting of resolve results
  • 10. # counter = getCounter() changes = p4 –p source changes ...@counter,#head for change in changes: filterChangeByClientView(change) p4 –p source sync if add: p4 –p target add if delete: p4 –p target delete -v if edit: p4 –p target sync –k ; p4 –p target edit if move: p4 –p target sync –f old; p4 –p target edit old; p4 –p target move old new integrate?
  • 11. # • Integrations within workspace view are transferred – Resolve records match source records (details later) • Integrations from outside the view are downgraded – integrate  add/edit/delete • Use P4::Resolver to preserve resolve outcome
  • 12. # Client: src-trans View: //depot/inside/... //src-trans/... Client: target-trans View: //target/... //target-trans/...
  • 13. # • usage: P4Transfer.py [-h] [-n] [-c CONFIG] [-m MAXIMUM] [-k] [-p] [-r] [-s] • [--sample_config] [-i] • P4Transfer • optional arguments: • -h, --help show this help message and exit • -n, --preview Preview only, no transfer • -c CONFIG, --config CONFIG Default is transfer.cfg • -m MAXIMUM, --maximum MAXIMUM Maximum number of changes to transfer • -k, --nokeywords Do not expand keywords and remove +k from filetype • -p, --preflight Run a sanity check first to ensure target is empty • -r, --repeat Repeat transfer in a loop - for continuous transfer • -s, --stoponerror Stop on any error even if --repeat has been specified • --sample_config Print an example config file and exit • -i, --ignore Treat integrations as adds and edits
  • 14. # • [general] • counter_name = p4transfer_counter • [source] • p4port = source.perforce.com:1666 • p4user = sknop • p4client = source_transfer • [target] • p4port = target.perforce.com:1777 • p4user = sknop • p4client = target_transfer P4Transfer.py --sample_config
  • 15. # • How do we test P4Transfer with two servers? • Use the “rsh trick” – Spawn a local p4d but without consuming port P4PORT=rsh:/bin/p4d -r /path/to/target.root –i • Tests: – Inject changes into source – Transfer – Verify result in target
  • 16. #
  • 17. # • Experience based on source code migrations – which can take days • We want to keep an eye on things – But have a life at the same time  • Reliability/robustness in the face of (communication) errors • Status / Error reporting to support the above
  • 18. # • Customer working with multiple third parties • Provide some level of backup/DR • Limited access to remote repositories – Replicas considered but rejected – Basically only read-only access • Data size/connectivity issues
  • 19. # • Volume / connectivity bandwidth – 280 Gb of data • Seeding via offline backup would have been ideal – 1Gb per hour transfer rate – Single (early) changelist ~120Gb! • We wanted – Handle/report VPN disconnects – Peace of mind…!
  • 20. # • Use standard Python logging module – Subclass for custom behavior – Beware of Python 2.x/3.x compatibility issues • Custom logging enhancements – Use circular buffer to remember last 50 lines – Automatically notify users via email, including those lines
  • 21. # Transferring 16 changes Syncing 16 changes, files 5375, size 11.2 GB Processing : 87370 "Removed unused physx files from filelist." source = 87370 : target = 460 Processing : 87377 "Copying //depot/stable to live (//depot/live) various hotfixes" source = 87377 : target = 461 Synced 8/16 changes, files 676/5375 (12.6 %), size 482.8 MB/11.2 GB (4.3 %) Synced 8/16 changes, files 940/5375 (17.5 %), size 1.2 GB/11.2 GB (10.7 %)
  • 22. # • P4API / P4Python has callback options # Report status per change self.progress.ReportChangeSync() # Create a custom callback object (next slide) mycallback = SyncOutput(self.progress) # Pass it to the P4 sync command self.p4.run('sync', '...@{},{}'.format(change, change), handler=mycallback )
  • 23. # class SyncOutput(P4.OutputHandler): def __init__(self, progress): P4.OutputHandler.__init__(self) self.progress = progress # Save reporting object def outputStat(self, stat): # Function called by P4API if 'fileSize' in stat: # Report how much data synced for current file self.progress.ReportFileSync(int(stat['fileSize'])) return P4.OutputHandler.HANDLED
  • 24. # • What happens when the Dragon King is: – Der Drachenkönig.jpg • Windows servers (not in Unicode mode) handle (some) Unicode filenames happily – no P4CHARSET required, but… • On Mac/Unix - UTF8 does the job • On Windows: – Python 2.7 fine / Python 3.x requires work…
  • 25. # • On Windows run as a service – Install: srvcinst.exe – Run service: srvany.exe (or other equivalents)
  • 26. # • Basic algorithm unchanged – Fixed a couple of bugs – TDD => Test Harness • Added repeat/polling options • Enhanced Robustness – Logging / Status reporting – Error handling
  • 27. # Sven Erik Knop sknop@perforce.com Robert Cowham rcowham@perforce.com @robertcowham
  • 28. # RESOURCES Public Depot: swarm.workshop.perforce.com/projects/perforce-software-p4transfer/

Notas do Editor

  1. JournalReader started in the public depot, but needed to be kept in sync with the master depot.
  2. Configuration options to decide how frequently to report, e.g. every 0.5 Gb – depends on connectivity speed.
  3. Main difference is that Python 3 all strings are unicode
  4. Didn’t have to do too much for the customization As all these things, the devil is in the details
  5. Didn’t have to do too much for the customization As all these things, the devil is in the details