Linux p4 command line

來源:互聯網
上載者:User

環境變數:
export P4PASSWD=abcdefg
export P4CLIENT=dyoldfish.com    //這個可以不設
export P4USER=dyoldfish
export P4PORT=192.168.1.198:1666

命令:
1、p4 client #配置本地資訊,檔案下載在哪裡在這裡面配置,Root項
2、p4 sync   #從perforce 下載檔案
3、p4 login #登陸perforce
4、p4 help   #顯示關於命令的協助
5、p4 -h     #顯示關於p4的協助
6、 p4 labels ...   #顯示和這個目錄相關的標籤
7、p4 sync @dyoldfish_label #同步標籤dyoldfish_label中的所有檔案
8、p4 files @dyoldfish_label #查看標籤dyoldfish_label所包含的檔案清單
9、p4 revert     #回複所有開啟的檔案
10、p4 revert -n ... #回複所有開啟卻沒提交的檔案
11、p4 branch dyoldfish_brach   #建立分支
12、p4 integrate -b   dyoldfish_brach   #合并分支dyoldfish_brach中描述的檔案
13、p4 opened #查看開啟的檔案
14、p4 help commands #查看p4所有命令的協助
15、4 dirs -H .   #顯示目前的目錄
16、p4 branches    #顯示所有的分支
17、 p4 delete filename   #從p4刪除檔案
18、p4 changelists -L ...   #顯示目前的目錄下面所有檔案的修改注釋
19、p4 label dyoldfish_label   #建立標籤 dyoldfish_label,編輯標籤
20、p4 tag -l dyoldfish_label ... #把目前的目錄下面的所有檔案添加到標籤 dyoldfish_label
21、p4 changes ...   #目前的目錄的changelist
22、 p4 sync @10931     #sync file @changelist
23、 p4 sync ...@10929   #only sync localfile@changelist
24、p4 help revisions    #查看關於檔案範圍的協助

export好變數之後,然後用1進行配置,就可以用p4 sync進行代碼下載了 如p4 sync //depot/proj1/...@21

./p4 sync //XMS/SS7_Mainline/HMCallAnalyzer/java/com/empirix/hm/realtime/commandbar/...(目錄)

./p4 sync //XMS/SS7_Mainline/HMCallAnalyzer/java/com/empirix/hm/realtime/commandbar(檔案)

如果commandbar是目錄則後面要加上/...,如果是檔案的話就不用

在虛擬機器上使用p4

一共分為如下幾步:

1.      要在 Linux 上用 P4 ,就需要虛擬機器能夠訪問外網

2.      安裝及配置 P4

3.      配置原始碼環境

 

下面具體介紹一下各個步驟:(我稱我們的工作機本身為“主機”)

1.      配置虛擬機器訪問外部網路。設定步驟如下

1) 共用主機網卡

本地串連 -》 屬性 -》進階 -》選擇允許其它網路通過本...,並選擇家用網路串連為 VMware Network Adapter VMnet1

 

2) 設定虛擬機器 IP 資訊

選擇 Traditional ….

3) 設定靜態 IP

IP     192.168.0. xxx

Subnet mask 255.255.255.0

DNS        192.168.0.1(編輯/etc/reslove.conf)

Default Gateway 192.168.0.1

2.      安裝及配置 P4

1)      下載用戶端 http://www.perforce.com/perforce/downloads/index.html   我使用的是 The Perforce Command-Line Client (P4)

2)      把用戶端放在檔案夾 /usr/local/bin 。 這樣能在任何目錄直接使用 p4 命令

3)      配置用戶端,線上協助有很多種方式,我使用設定檔方式。步驟如下

a.      在 /usr 下面建立一個檔案夾 p4config ( 可以自訂 ) ,在檔案夾裡面建立檔案 p4.configfile.

b.      用 VI 打卡 p4.configfile, 輸入如下配置

 

P4CLIENT= (定義你的工作空間,比如 ygxu_xms )

P4PASSWD= (你的密碼)

P4PORT=10.12.33.133:1700

P4USER= (你的使用者名稱)

 

儲存退出。

c.       配置環境變數。修改後需要重啟這個才生效

用 vi 開啟 /etc/profile , 末尾處加入

 

#

# pv4 config file path

#

if test -z "$P4CONFIG" ; then

        export P4CONFIG=/usr/p4config/p4.configfile

fi

 

d.      測試環境配置是否成功

命令 p4 info , 如果顯示了串連資訊,則 OK ,否則會提示串連不上

 

3.      配置原始碼環境

使用命令 p4 client 會有如下資訊顯示

 

Client:   你 上面配置的工作空 間

Update: 2010/01/19 20:38:36

Access: 2010/01/21 02:57:38

Owner:    你 的用 戶 名

Host:   linux

Description:

        Created by ygxu.

Root:   /home/hammer

Options:        noallwrite noclobber nocompress unlocked nomodtime normdir

SubmitOptions: submitunchanged

LineEnd:        local

View:

       ….

        //XMS/SS7_Mainline/... //Arthur_Xms/XMS/SS7_Mainline/...

       ….

 

兩個地方需要修改:

a . Root . 這個決定你的代碼會放在什麼地方,如上,我的是 /home/hammer

b. View. 這個決定你需要取哪些代碼下來,因為一般不會把全部代碼取下來,在 Linux 上我們一般只需要 XMS 的 SS7_Mainline, 所以把其他的刪掉,修改成上面這個樣子

      

       注意事項,一定要保證空間足夠,建議先刪掉原來的 SS7_Mainline ,使用 Shrink 工具回收空間之後再取代碼。

       好了,使用 p4 sync 命令吧,就可以繼續工作了!

       關於 p4 的使用命令,文檔如下:

http://www.perforce.com/perforce/technical.html

更詳細的命令格式參考 http://www.perforce.com/perforce/products/p4.html

p4用戶端下載 http://www.perforce.com/perforce/downloads/index.html

*************************************************************************************************************************

快速上手perforce

perforce是什嗎?參考http://www.perforce.com

[概念]
先說說概念吧,一般來說版本控制軟體都會分client和server,server負責做一些管理代碼和文檔倉庫,控制各個使用者的許可權,記錄版本升級曆史之類的事情,client使用某種用戶端連入server來完成代碼、文檔的修改、提交等工作,perforce也不例外。在server端perforce做得很精簡,沒有太多的依賴,一個p4d搞定,配置起來也很簡單,它的主要任務就是管理一個檔案倉庫depot。在client端有user和workspace兩個概念,user顧名思義就是在server上登記的一個使用者,每個user可以擁有零個或者多個workspace,甚至也可以switch到別人的workspace上去,只要有許可權。簡單的說workspace是depot到本地的一個映射,例如這樣寫 //depot/foo/...   //myspace/bar/...就把depot裡面foo目錄下面所有東西映射到本地bar目錄裡面去了,myspace是和特定的workspace相關的,在設定workspace的時候可以設定它的絕對路徑。

[串連之前的配置]
首先我們需要一個使用者,假設已存在一個使用者test,沒有密碼。
$P4CONFIG=p4conf.conf; export P4CONFIG
windows下使用
p4 set P4CONFIG=p4conf.conf
這個命令設定一個環境變數P4CONFIG,檔案名稱可以自己定義,裡面可以存放用戶端的配置。在UNIX系統中配置資訊都可以寫道環境變數裡,windows下可以都寫到註冊表裡去,不過我更傾向於在某一個目錄下面建立一個設定檔,這樣可以很方便的切換不同的workspace。然後我們就可以開始編輯這個p4conf.conf設定檔,格式很簡單都是 setting=value 形式的。
建立一個workspace目錄,在裡面建立一個p4conf.conf檔案,內容如下:
P4PORT=192.168.0.1:1666
P4USER=test
P4CLIENT=test-client
這是一個最簡單的設定檔,P4PORT指名了伺服器的ip和連接埠,ip也可以用電腦名稱代替,例如
P4PORT=p4server:1666
如果留空 P4PORT=1666 這樣代表預設串連本地的server,如同 P4PORT=127.0.0.1:1666一樣。
P4USER是使用者名稱,P4CLIENT是當前是用的workspace名字,這個名字可以任意取,僅僅是一個標識。
這時候就可以cd到這個目錄運行一下
$p4 info
看看輸出是什麼,如果顯示了如下內容
User name: test
Client name: test-client
Client host: computername
Client unknown.
Current directory: /home/test/workspace
Client address: 127.0.0.1:1508
Server address: 192.168.0.1:1666
Server root: .
Server date: 2006/07/26 00:28:12 +0800 China Standard Time
Server version: P4D/NTX86/2006.1/102189 (2006/06/27)
Server license: none
就表示成功連上伺服器了,如果出現像這樣的錯誤,那就要檢查一下P4PORT有沒有設定正確
Perforce client error:
       Connect to server failed; check $P4PORT.
       TCP connect to 1666 failed.
       connect: 1666: WSAECONNREFUSED
到這兒,最基本的client配置已經完成,很簡單吧:-) 在設定檔裡還可以存放一些其他的設定,例如
P4EDITOR指定在編輯的時候預設使用這個vim編輯器,P4DIFF指定了比較檔案的時候使用的工具,
P4PASSWD當使用者要求輸入密碼的時候可以提供一個預設密碼,其他還有一些可以參考官方文檔 P4 User's Guide

[串連之後的配置]
之前的所有設定都是儲存在環境變數,設定檔或者註冊表裡面的,這僅僅定義了一個用戶端的行為,很大一部分事情例如追蹤使用者的修改、開啟、提交的檔案之類都是由伺服器記錄下來的,所以現在我們需要通過一些命令來配置一下伺服器那頭的使用者資訊。
$p4 user
這個命令的結果是p4使用一個預設的編輯器開啟一個臨時檔案,檔案中儲存著使用者的一些資訊,例如使用者名稱,Email,FullName之類,使用者可以自己修改其中某些設定,儲存以後它會自動認可到伺服器上更新使用者佈建。這個過程中使用的編輯器可以在環境變數或者設定檔中指定(P4EDITOR)。
$p4 client
和上面一樣,這個命令編輯一個client的設定檔。Root對應於workspace在本機上的絕對路徑,Options定義了一些client的屬性,例如unlocked值允許其他的使用者switch到你的工作空間,其他的定義可以參考官方文檔。View的配置比較重要,它定義了伺服器上面的檔案到workspace的映射。例如
//depot/... //test-client/...
左右分別代表源地址和目的地址,中間以空格隔開,它的意思是將伺服器depot裡面所有檔案對應到我的工作目錄(在這之前用Root參數指定的絕對路徑)。映射可以有多行:
//depot/src/... //test-client/local-src/...
//depot/doc/... //test-client/local-doc/...
這樣就將代碼和文檔分別映射到本地,而且不一定要和伺服器上使用相同的名字。在這之中也許會有需要排出的一些檔案或者目錄,這時只需要在映射前面加上一個減號:
-//depot/doc/file1.txt //test-client/local-doc/file1.txt
這樣就排除了一個檔案。在這個過程中要留意出現衝突,如下:
//depot/src/... //test-client/src/...
//depot/doc/... //test-client/src/...
將伺服器上兩個目錄都映射到本地同一個目錄。
上面的過程中使用了一種萬用字元“...”它遞迴的匹配這個目錄以及子目錄下面的所有檔案,另一種上面沒有使用的 “*” 匹配單個目錄下的檔案,例如 //test-client/src/*.c 匹配 src目錄下面所有以 .c 作為副檔名的檔案。
上面說了,如果把伺服器上的兩個目錄都映射到本地通一個目錄會產生衝突,後者會把前者覆蓋,但如果這樣寫:
//depot/src/... //test-client/local-src/...
+//depot/doc/... //test-client/local-src/...
就會產生不同的效果,兩個目錄裡面的檔案都會出現在local-src這個目錄中,不過如果仍然有重名的檔案則後者會把前者覆蓋。
至此,client的配置基本上完成,可以 $p4 sync 一下把伺服器上的東西抓下來看看:-)
另外,如果要刪除這個cient的話很簡單 $p4 client -d test-client 就可以了

[檔案管理]
配置了這麼半天,現在開始步入正題,檔案的管理才是我們使用perforce的核心工作。簡單的說,檔案操作可以分成三類:往depot裡面添加檔案,修改並提交檔案和刪除檔案。
在這之前最好保證workspace裡面檔案和伺服器上的最新版本同步,使用命令:
$p4 sync ...
如果需要同步到某一個版本,在後面添上 #1 數字代表版本號碼;如果需要強制同步所有檔案,可以加上 -f 參數。關於sync的具體用法可以用命令
$p4 help sync
btw: 可以試試看$p4 help help

添加檔案:
$p4 add *.txt
將目前的目錄下所有副檔名為txt的檔案添加到depot相應目錄,注意在添加檔案的時候不可以使用萬用字元 ... 因為 ... 有伺服器負責解析,這時候伺服器並不知道需要添加什麼檔案,但卻可以使用 * ,它是由shell負責解析。
另外,所有修改在submit之前都不會提交到伺服器。

修改檔案:
$p4 edit //depot/src/a.c
這個檔案執行以後在伺服器上就會記錄下當前的 client已經在編輯這個檔案,在本地只有一個動作,就是將a.c檔案的唯讀屬性去掉,這時候我們就可以隨便使用某種編輯器來編輯這個檔案了,在這之前所有檔案都是唯讀,而且不要手動去掉唯讀屬性來編輯,因為那樣伺服器跟蹤不到client的修改記錄。

刪除檔案:
$p4 delete //depot/doc/a.pdf
注意在submit之前這個檔案在伺服器上也是不會被刪除的。

撤銷修改:
$p4 revert *.txt
這會將之前所有添加的或者修改的,以txt作為副檔名的檔案全部撤銷到原先的狀態,原先添加的檔案會被刪除,修改的檔案被還原到執行p4 sync時候的版本。
最後我們可以將上面所有修改全部提交:
$p4 submit
這時候p4會調用預設的或者P4EDITOR所指定的編輯器來編輯一個設定檔,裡麵包含了提交者的資訊,對這次提交的描述以及列舉出涉及到的檔案等,一般來說把Description一項填充完儲存就可以了。然後會看到螢幕上嘩啦嘩啦的輸出一堆東西,最後顯示 Change xxxx submitted. 就表示這次提交成功了。如果出現錯誤,有可能是存在衝突或者別的情況,關於衝突的問題留著後面再說~~_~~
檔案之間的diff:
$p4 diff file
$p4 diff2 file1 file2
前者在client端進行比較,使用client端配置的工具,相對於perforce內建的diff我還是更喜歡vimdiff :-)後者在server端比較,返回兩個檔案(也可能是很多檔案)之間的比較結果。
離線工作:
線上工作的時候所有檔案的修改都由伺服器來記錄,檔案的讀寫權限設定也是和伺服器上同步的,但是一但離線就需要用另一種方法來管理workspace裡面的檔案了。
首先需要對那些等待修改的檔案手動去掉唯讀屬性,然後可以開始修改,等到和伺服器建立串連的時候需要做兩件事情:
1 找到所有修改過的檔案,open for edit
$p4 diff -se | p4 -x - edit
2 找到所有刪除的檔案, open for delete
$p4 diff -sd | p4 -x - delete
最後 submit 就可以

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.