Perforce Public Knowledge Base - Mapping Subversion Terms and Commands to Perforce
Reset Search
 

 

Article

Mapping Subversion Terms and Commands to Perforce

« Go Back

Information

 
Problem

A comparison of features, terminology, and commands in Perforce and Subversion.


Solution

This comparison is for the experienced Subversion user who is new to Perforce. The following comparisons are high-level and intended to help you take advantage of your Subversion knowledge to learn Perforce.

Terms

The following table compares Subversion terms to their Perforce equivalents.

Subversion term Perforce term
branch codeline or stream
changeset changelist
check out sync
copy integrate
merge resolve, merge
move move
node filespec
revision revision
revert revert
update sync
tag label, tag
working copy client workspace
mode file type
repository depot
reserved checkout lock or exclusive-open

 

Commands

The following table lists Subversion commands and their closest Perforce equivalents.

SVN command   Perforce command(s) Description Remarks
svnadmin create   p4 depot Create a new depot (repository).  
svn import   p4 reconcile Add a tree of file(s) to the depot. The specified file(s) are linked to a changelist. Perforce: The files are not actually added to the depot until the changelist is sent to the server with p4 submit.
svn add   p4 add Opens file(s) in a client workspace for addition to the depot. The specified file(s) are linked to a changelist. Perforce:The files are not actually added to the depot until the changelist is sent to the server with  p4 submit.
SVN: The files are not actually added to the repository until the changes from your working copy are sent to the server with svn commit.
svn checkout   p4 sync  then
p4 edit
Copy files from the depot into the client workspace and open file(s) for edit. Perforce: p4 sync populates the client workspace. Use p4 editto open specific file(s) for edit.
SVN: files can be changed once they are checked out.
svn commit   p4 submit Send changes made to open files to the depot. Perforce: Changes are grouped into changelists - an atomic change transaction for a set of files all submitted together.
SVN: An svn commit operation publishes changes to any number of files and directories as a single atomic transaction.
svn update   p4 sync Bring the client workspace into sync with the depot.  
svn status  
p4 fstat
p4 opened
p4 have
p4 files
 
Display information about workspace files.  
svn help   p4 help Request help.  
svn log   p4 describe Provides information about changelists and the changelists' files.  
svn info   p4 info Display information about the current client and server.  
svn list   p4 files Obtain list of files.  
svn copy   p4 integrate or p4 copy Copy a file.  
svn move   p4 move Move a file.  

Workflow

Subversion and Perforce use different workflows. Here below are several of the important differences in Perforce:

  1. Pre-defined workspaces
    • Subversion creates a new "working copy" by using the "svn checkout" command.
    • Perforce defines a new "client workspace" by using the "p4 client" command, then populates it by using "p4 sync"
  2. Read-only workspace files (default)
    • Subversion files are already writeable when the working copy is created.
    • By default, Perforce requires that files be made writeable using "p4 edit" before changing them. If desired, workspace files can be made always writeable by setting the client workspace option 'allwrite'.
  3. Central tracking of user edits
    • Subversion does not keep track of what files a user has checked out and modified.
    • Perforce tracks what files users have in their local workspace and which files are actively being edited.
To convert from Subversion to Perforce, use p4convert-svn, a Java based Subversion to Perforce conversion tool which is fully supported by Perforce.

Merge information

The option attempt to add integration credit is turned off by default

com.p4convert.svn.mergeInfoEnabled=false

This is only for merge history; branches, rollbacks, renames in integ history is tracked by default. No content is missing, just merge info between branches. Subversion didn't track merge information until around version 1.7; setting the mergeInfoEnabled adds this new information into Perforce's Integration credit. Without the flag you just see edits, but no merge arrows.

Merge info in Subversion and Perforce integration credit are different. It's very much a square peg/round hole issue, so you won't see results to match up with the two integration engines. There are a few cases where SVN will say a branch is up-to-date, but Perforce will say there is missing credit and vice-versa.



 

Related Links
https://na10.salesforce.com/500F000000Gh0WJ

Feedback

 

Was this article helpful?


   

Feedback

Please tell us how we can make this article more useful.

Characters Remaining: 255