php執行svn更新,php svn

本文目錄一覽:

如何在mac使用終端更新svn

mac 終端 svn 命令

1、將文件checkout到本地目錄

svn checkout path(path是服務器上的目錄)

例如:svn checkout svn://192.168.1.1/pro/domain

簡寫:svn co

2、往版本庫中添加新的文件

svn add file

例如:svn add test.php(添加test.php)

svn add *.php(添加當前目錄下所有的php文件)

3、將改動的文件提交到版本庫

svn commit -m “LogMessage” [-N] [–no-unlock] PATH(如果選擇了保持鎖,就使用–no-unlock開關)

例如:svn commit -m “add test file for my test” test.php

簡寫:svn ci

4、加鎖/解鎖

svn lock -m “LockMessage” [–force] PATH

例如:svn lock -m “lock test file” test.php

svn unlock PATH

5、更新到某個版本

svn update -r m path

例如:

svn update如果後面沒有目錄,默認將當前目錄以及子目錄下的所有文件都更新到最新版本。

svn update -r 200 test.php(將版本庫中的文件test.php還原到版本200)

svn update test.php(更新,於版本庫同步。如果在提交的時候提示過期的話,是因為衝突,需要先update,修改文件,然後清除svn resolved,最後再提交commit)

簡寫:svn up

6、查看文件或者目錄狀態

1)svn status path(目錄下的文件和子目錄的狀態,正常狀態不顯示)

【?:不在svn的控制中;M:內容被修改;C:發生衝突;A:預定加入到版本庫;K:被鎖定】

2)svn status -v path(顯示文件和子目錄狀態)

第一列保持相同,第二列顯示工作版本號,第三和第四列顯示最後一次修改的版本號和修改人。

註:svn status、svn diff和 svn revert這三條命令在沒有網絡的情況下也可以執行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。

簡寫:svn st

7、刪除文件

svn delete path -m “delete test fle”

例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”

或者直接svn delete test.php 然後再svn ci -m ‘delete test file‘,推薦使用這種

簡寫:svn (del, remove, rm)

8、查看日誌

svn log path

例如:svn log test.php 顯示這個文件的所有修改記錄,及其版本號的變化

9、查看文件詳細信息

svn info path

例如:svn info test.php

10、比較差異

svn diff path(將修改的文件與基礎版本比較)

例如:svn diff test.php

svn diff -r m:n path(對版本m和版本n比較差異)

例如:svn diff -r 200:201 test.php

簡寫:svn di

11、將兩個版本之間的差異合併到當前文件

svn merge -r m:n path

例如:svn merge -r 200:205 test.php(將版本200與205之間的差異合併到當前文件,但是一般都會產生衝突,需要處理一下)

12、SVN 幫助

svn help

svn help ci

——————————————————————————

以上是常用命令,下面寫幾個不經常用的

——————————————————————————

13、版本庫下的文件和目錄列表

svn list path

顯示path目錄下的所有屬於版本庫的文件和目錄

簡寫:svn ls

14、創建納入版本控制下的新目錄

svn mkdir: 創建納入版本控制下的新目錄。

用法: 1、mkdir PATH…

2、mkdir URL…

創建版本控制的目錄。

1、每一個以工作副本 PATH 指定的目錄,都會創建在本地端,並且加入新增

調度,以待下一次的提交。

2、每個以URL指定的目錄,都會透過立即提交於倉庫中創建。

在這兩個情況下,所有的中間目錄都必須事先存在。

15、恢複本地修改

svn revert: 恢復原始未改變的工作副本文件 (恢復大部份的本地修改)。revert:

用法: revert PATH…

注意: 本子命令不會存取網絡,並且會解除衝突的狀況。但是它不會恢復

被刪除的目錄

16、代碼庫URL變更

svn switch (sw): 更新工作副本至不同的URL。

用法: 1、switch URL [PATH]

2、switch –relocate FROM TO [PATH…]

1、更新你的工作副本,映射到一個新的URL,其行為跟“svn update”很像,也會將

服務器上文件與本地文件合併。這是將工作副本對應到同一倉庫中某個分支或者標記的

方法。

2、改寫工作副本的URL元數據,以反映單純的URL上的改變。當倉庫的根URL變動

(比如方案名或是主機名稱變動),但是工作副本仍舊對映到同一倉庫的同一目錄時使用

這個命令更新工作副本與倉庫的對應關係。

17、解決衝突

svn resolved: 移除工作副本的目錄或文件的“衝突”狀態。

用法: resolved PATH…

注意: 本子命令不會依語法來解決衝突或是移除衝突標記;它只是移除衝突的

相關文件,然後讓 PATH 可以再次提交。

18、輸出指定文件或URL的內容。

svn cat 目標[@版本]…如果指定了版本,將從指定的版本開始查找。

svn cat -r PREV filename filename (PREV 是上一版本,也可以寫具體版本號,這樣輸出結果是可以提交的)

用PHP執行SVN update命令為什麼執行不成功

猜測是兩個原因

第一:PHP執行權限不夠

測試方法:先在命令行執行 /*****/php.exe ****************************

如果不能執行,說明是php的問題

如果能執行

說明是www用戶的權限問題

第二:svn環境變量問題

PHP執行linux系統命令的常用函數使用說明

system函數

說明:執行外部程序並顯示輸出資料。

語法:string

system(string

command,

int

[return_var]);

返回值:

字符串

詳細介紹:

本函數就像是

C

語中的函數

system(),用來執行指令,並輸出結果。若是

return_var

參數存在,則執行

command

之後的狀態會填入

return_var

中。同樣值得注意的是若需要處理用戶輸入的資料,而又要防止用戶耍花招破解系統,則可以使用

EscapeShellCmd()。若

PHP

以模塊式的執行,本函數會在每一行輸出後自動更新

Web

服務器的輸出緩衝暫存區。若需要完整的返回字符串,且不想經過不必要的其它中間的輸出界面,可以使用

PassThru()。

實例代碼:

複製代碼

代碼如下:

?php

$last_line

=

system(‘ls’,

$retval);

echo

‘Last

line

of

the

output:

.

$last_line;

echo

‘hr

/Return

value:

.

$retval;

?

exec函數

說明:執行外部程序。

語法:string

exec(string

command,

string

[array],

int

[return_var]);

返回值:

字符串

詳細介紹:

本函數執行輸入

command

的外部程序或外部指令。它的返回字符串只是外部程序執行後返回的最後一行;若需要完整的返回字符串,可以使用

PassThru()

這個函數。

要是參數

array

存在,command

會將

array

加到參數中執行,若不欲

array

被處理,可以在執行

exec()

之前呼叫

unset()。若是

return_var

array

二個參數都存在,則執行

command

之後的狀態會填入

return_var

中。

值得注意的是若需要處理使用者輸入的資料,而又要防止使用者耍花招破解系統,則可以使用

EscapeShellCmd()。

實例代碼:

複製代碼

代碼如下:

?php

echo

exec(‘whoami’);

?

popen函數

說明:打開文件。

語法:int

popen(string

command,

string

mode);

返回值:

整數

詳細介紹:

本函數執行指令開檔,而該文件是用管道方式處理的文件。用本函數打開的文件只能是單向的

(只能讀或只能寫),而且一定要用

pclose()

關閉。在文件操作上可使用

fgets()、fgetss()

fputs()。若是開檔發生錯誤,返回

false

值。

實例代碼:

複製代碼

代碼如下:

?

$fp

=

popen(“/bin/ls”,”r”

);

?

PHP監控linux服務器負載

在實際項目的應用中,我們由於各種條件的現實,利用PHP來實現服務器負載監控將是一種更為靈活的方式。

由於Web

Server以及PHP的實現方式所限,我們在現實環境中很難利用PHP去調用一些Linux中需要root權限才能執行的程序,對此,我從網上找到另外一種方式來繞開這個限制。首先先寫個c程序中轉調用系統命令,然後用PHP去執行此c程序。

c程序

首先寫個c文件,比如/usr/local/ismole/w.c

複製代碼

代碼如下:

#includestdio.h

#includestdlib.h

#includesystypes.h

#includeunistd.h

int

main()

{

uid_t

uid

,euid;

//note

獲得當前的uid

uid

=

getuid();

//note

獲得當前euid

euid

=

geteuid();

//note

交換這兩個id

if(setreuid(euid,

uid))

perror(“setreuid”);

//note

執行將要執行linux系統命令

system(“/usr/bin/w”);

return0;

}

編譯該文件gcc

-o

w

-Wall

w.c,這時會在當前目錄下生成程序w。改變此程序的屬主chmod

u+s

./w。

PHP執行

文件內容如下,放在web目錄下,訪問就會輸出當前的服務器負載情況。

複製代碼

代碼如下:

?php

/*

More

Original

PHP

Framwork

Copyright

(c)

2007

2008

IsMole

Inc.

$Id:

serverMonitor.php

408

2008-12-02

08:07:40Z

kimi

$

*/

//note

key的驗證過程

if($key

!=

$authkey)

{

//

exit(‘key

error);

}

$last_line

=

exec(‘/usr/local/ismole/w’,

$retval);

$returnArray

=

explode(“load

average:

“,

$retval[0]);

$returnString

=

$returnArray[1];

echo

$returnString; 

 按照上面的實例,我們可以用PHP來做任何我們想執行的Linux系統命令,SVN更新,服務器監控,備份,恢復,日常維護等等。

SVN常用命令及例句

1、Linux命令行下將文件checkout到本地目錄

svn checkout path(path是服務器上的目錄)

例如:svn checkout svn://192.168.1.1/pro/domain

簡寫:svn co

2、Linux命令行下往版本庫中添加新的文件

svn add file

例如:svn add test.php(添加test.php)

svn add *.php(添加當前目錄下所有的php文件)

3、Linux命令行下將改動的文件提交到版本庫

svn commit -m “LogMessage“ [-N] [–no-unlock] PATH(如果選擇了保持鎖,就使用–no-unlock開關)

例如:svn commit -m “add test file for my test“ test.php

簡寫:svn ci

4、Linux命令行下的加鎖/解鎖

svn lock -m “LockMessage“ [–force] PATH

例如:svn lock -m “lock test file“ test.php

svn unlock PATH

5、Linux命令行下更新到某個版本

svn update -r m path

例如:

svn update如果後面沒有目錄,默認將當前目錄以及子目錄下的所有文件都更新到最新版本。

svn update -r 200 test.php(將版本庫中的文件test.php還原到版本200)

svn update test.php(更新,於版本庫同步。如果在提交的時候提示過期的話,是因為衝突,需要先update,修改文件,然後清除svn resolved,最後再提交commit)

簡寫:svn up

6、Linux命令行下查看文件或者目錄狀態

1)svn status path(目錄下的文件和子目錄的狀態,正常狀態不顯示)

【?:不在svn的控制中;M:內容被修改;C:發生衝突;A:預定加入到版本庫;K:被鎖定】

2)svn status -v path(顯示文件和子目錄狀態)

第一列保持相同,第二列顯示工作版本號,第三和第四列顯示最後一次修改的版本號和修改人。

註:svn status、svn diff和 svn revert這三條命令在沒有網絡的情況下也可以執行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。

簡寫:svn st

7、Linux命令行下刪除文件

svn delete path -m “delete test fle“

例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”

或者直接svn delete test.php 然後再svn ci -m ‘delete test file‘,推薦使用這種

簡寫:svn (del, remove, rm)

8、Linux命令行下查看日誌

svn log path

例如:svn log test.php 顯示這個文件的所有修改記錄,及其版本號的變化

9、Linux命令行下查看文件詳細信息

svn info path

例如:svn info test.php

10、Linux命令行下比較差異

svn diff path(將修改的文件與基礎版本比較)

例如:svn diff test.php

svn diff -r m:n path(對版本m和版本n比較差異)

例如:svn diff -r 200:201 test.php

簡寫:svn di

11、Linux命令行下將兩個版本之間的差異合併到當前文件

svn merge -r m:n path

例如:svn merge -r 200:205 test.php(將版本200與205之間的差異合併到當前文件,但是一般都會產生衝突,需要處理一下)

12、Linux命令行下SVN 幫助

svn help

svn help ci

以上是常用命令,下面寫幾個不經常用的

13、Linux命令行下版本庫下的文件和目錄列表

svn list path

顯示path目錄下的所有屬於版本庫的文件和目錄

簡寫:svn ls

14、Linux命令行下創建納入版本控制下的新目錄

svn mkdir: 創建納入版本控制下的新目錄。

用法: 1、mkdir PATH…

2、mkdir URL…

創建版本控制的目錄。

1、每一個以工作副本 PATH 指定的目錄,都會創建在本地端,並且加入新增調度,以待下一次的提交。

2、每個以URL指定的目錄,都會透過立即提交於倉庫中創建.在這兩個情況下,所有的中間目錄都必須事先存在。

15、Linux命令行下恢複本地修改

svn revert: 恢復原始未改變的工作副本文件 (恢復大部份的本地修改)。revert:

用法: revert PATH…

注意: 本子命令不會存取網絡,並且會解除衝突的狀況。但是它不會恢復被刪除的目錄

16、Linux命令行下代碼庫URL變更

svn switch (sw): 更新工作副本至不同的URL。

用法: 1、switch URL [PATH]

2、switch –relocate FROM TO [PATH…]

1、更新你的工作副本,映射到一個新的URL,其行為跟“svn update”很像,也會將服務器上文件與本地文件合併。這是將工作副本對應到同一倉庫中某個分支或者標記的方法。

2、改寫工作副本的URL元數據,以反映單純的URL上的改變。當倉庫的根URL變動(比如方案名或是主機名稱變動),但是工作副本仍舊對映到同一倉庫的同一目錄時使用這個命令更新工作副本與倉庫的對應關係。

17、Linux命令行下解決衝突

svn resolved: 移除工作副本的目錄或文件的“衝突”狀態。

用法: resolved PATH…

注意: 本子命令不會依語法來解決衝突或是移除衝突標記;它只是移除衝突的相關文件,然後讓 PATH 可以再次提交。

18、Linux命令行下輸出指定文件或URL的內容。

svn cat 目標[@版本]…如果指定了版本,將從指定的版本開始查找。

svn cat -r PREV filename filename (PREV 是上一版本,也可以寫具體版本號,這樣輸出結果是可以提交的)

以上是Linux命令行下常用svn命令的使用方法。

PHP運行SVN命令顯示某用戶的文件更新記錄代碼

使用SVN開發者們平時開發或代碼上線過程中需要知道某個時間段內修改或添加過那些文件,所以用PHP寫了個小程序,直接在瀏覽器中調用即可

代碼如下:

?php

$user=trim($_GET[‘user’]);

$d=$_GET[‘date’];

if(!$d){

$d=date(‘Ymd’,time()-86400*14);

}

if(empty($user)){

echo

“例如:svn_log.php?user=wangdate=20130118”;

exit;

}

$cmd=’/usr/bin/svn

log

-v

-r

{‘.$d.’}:”HEAD”

–username

用戶名

–password

密碼

–no-auth-cache

|

sed

-n

“/’.$user.’/,/—–$/

p”

21′;

$p=dirname(__FILE__);

exec(‘cd

‘.$p,$output);

exec($cmd,$output);

$d=date(‘Y年m月d日’,strtotime($d));

echo

$user.’自’.$d.’以來:br’;

echo

‘———————————————br’;

$out=”;

krsort($output);

if(!empty($output)){

foreach($output

as

$v){

$p1=strpos($v,’/branch/’);

$p2=strpos($v,’/tg/’);

if($p1!==false

||

$p2!==false){

if($p1!==false){

$v=substr($v,$p1+9);

}else{

$v=substr($v,$p2+4);

}

if($out==”){

$out=$v;

echo

$v.’br’;

}else{

if(strpos($out,$v)===false){

$out.=’,’.$v;

echo

$v.’br’;

}

}

}

}

}else{

echo

“沒有文件”;

}

?

原創文章,作者:REDI,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/137038.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
REDI的頭像REDI
上一篇 2024-10-04 00:17
下一篇 2024-10-04 00:17

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • Python讀取svn版本

    本文將詳細介紹如何使用Python讀取svn版本。 一、安裝svn庫 首先,我們需要使用Python來連接svn服務器,並獲取版本號。這裡我們使用pysvn庫來完成這個工作。 pi…

    編程 2025-04-25
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台服務器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • SVN checkout未響應

    一、現象描述 在使用SVN checkout從遠程倉庫下載代碼時,可能會遇到SVN checkout未響應的情況。此時,命令行界面會陷入等待狀態,並無法進行其他操作。 二、可能的原…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24

發表回復

登錄後才能評論