( mi6236)
1、什么是軟件配置管理
軟件配置管理是指通過(guò)執(zhí)行版本控制、變更控制的規(guī)程,以及使用合適的配置管理軟件,來(lái)保證所有配置項(xiàng)的完整性和可跟蹤性。配置管理是對(duì)工作成果的一種有效保護(hù)。
2、為什么需要配置管理
如果沒(méi)有軟件配置管理,最大的麻煩是工作成果無(wú)法回溯。隨著工作的進(jìn)展新的程序覆蓋了老的程序,當(dāng)突然發(fā)現(xiàn)新程序有問(wèn)題而老程序正確時(shí)怎么辦?那只能重寫(xiě)老的程序來(lái)覆蓋新的程序。過(guò)一段時(shí)間又發(fā)現(xiàn)原來(lái)的老程序有問(wèn)題,而解決方法在原來(lái)的新程序中……您是不是快要發(fā)瘋了。
為了避免成果被覆蓋,包括我自己在內(nèi)的很多人早期采用手工管理版本的方式,例如當(dāng)一個(gè)新版本產(chǎn)生時(shí)用當(dāng)時(shí)的日期來(lái)命名文件夾,然后再?gòu)?fù)制一下以后的修改在復(fù)制的文件夾內(nèi)進(jìn)行,這樣上一個(gè)版本就被保存下來(lái)了,周而復(fù)始不同的版本不會(huì)被覆蓋。雖然這種方式可以從某種程度上解決版本的回溯問(wèn)題,但他存在的缺點(diǎn)是顯而易見(jiàn)的:第一點(diǎn)如果保留結(jié)果過(guò)于頻繁,將會(huì)導(dǎo)致產(chǎn)生大量的有著重復(fù)內(nèi)容的文件夾,龐大的物理空間,管理起來(lái)很麻煩;如果保留舊版本的時(shí)間間隔太長(zhǎng),可能產(chǎn)生某些有用的老程序無(wú)法回溯。拿我最近開(kāi)發(fā)的一個(gè)程序來(lái)說(shuō)程序只有幾十兆,經(jīng)過(guò)一年的開(kāi)發(fā)各版本累計(jì)到1G。第二容易產(chǎn)生版本的混亂,如果是團(tuán)隊(duì)開(kāi)發(fā)軟件,這種簡(jiǎn)單的方法更難解決問(wèn)題的本質(zhì)了。
3、人的問(wèn)題
配置管理的方法是成熟的,而且相應(yīng)的軟件工具也是成熟的,基本上不存在看不懂、不會(huì)用的問(wèn)題。配置管理的執(zhí)行效果如何,完全是事在人為。妨礙配置管理的主要問(wèn)題是人們嫌麻煩和僥幸心理作怪。
在沒(méi)出亂子的情況下,執(zhí)行版本控制看起來(lái)有些麻煩。每次修改工作的時(shí)候總是要Get Latest Version,接著Check Out,修改完后又要Check In,多做了三步。其實(shí)這三步加起來(lái)也就十幾秒鐘,而且不費(fèi)腦子,根本沒(méi)有添加多少麻煩,僅僅是個(gè)人感覺(jué)不爽而以。然而不執(zhí)行版本控制的話(huà),萬(wàn)一發(fā)生工作成果被覆蓋或丟失等問(wèn)題,麻煩就大了。
4、軟件配置管理規(guī)范
軟件研發(fā)和管理過(guò)程中會(huì)產(chǎn)生許許多多的工作成果,例如文檔、程序和數(shù)據(jù)等,他們都應(yīng)當(dāng)妥善地保管起來(lái),以便查閱和修改。如果把所有文件一股腦的塞進(jìn)計(jì)算機(jī)里,那么使用起來(lái)很麻煩。
凡是納入配置管理范疇的工作成果統(tǒng)稱(chēng)為配置項(xiàng)配置項(xiàng)主要有兩大類(lèi):一類(lèi)是屬于產(chǎn)品的組成部分,例如需求文檔、設(shè)計(jì)文檔、源代碼、測(cè)試用例等等;另一類(lèi)是在管理過(guò)程中產(chǎn)生的文檔,例如各種計(jì)劃、報(bào)告等。
每個(gè)配置項(xiàng)的主要屬性有名稱(chēng)、標(biāo)識(shí)符、文件狀態(tài)、版本、作者、日期等。配置項(xiàng)及歷史紀(jì)錄反映了軟件的演化過(guò)程。
基線(xiàn)由一組配置項(xiàng)組成,這些配置項(xiàng)構(gòu)成了一個(gè)相對(duì)穩(wěn)定的邏輯實(shí)體。基線(xiàn)中的配置項(xiàng)被凍結(jié)后,不能在被任何人隨意更改。基線(xiàn)通常對(duì)應(yīng)于開(kāi)發(fā)過(guò)程中的里程碑。通常將交付該客戶(hù)的基線(xiàn)稱(chēng)為一個(gè)Release,為內(nèi)部開(kāi)發(fā)用的基線(xiàn)稱(chēng)為一個(gè)Build。
版本控制的目的是按照一定的規(guī)則保存配置項(xiàng)的所有版本,避免發(fā)生版本丟失或混亂等現(xiàn)象。配置項(xiàng)的狀態(tài)有三種:“草稿”、“正式發(fā)布”和“正在修改”
配置項(xiàng)的版本號(hào)與配置項(xiàng)的狀態(tài)緊密相關(guān):
(1) 處于“草稿”狀態(tài)的配置項(xiàng)的版本號(hào)格式為:0.YZ
(2) 處于“正式發(fā)布”狀態(tài)的配置項(xiàng)的版本號(hào)格式為:X.Y。
一般只是Y值遞增,當(dāng)Y值到達(dá)一定的范圍時(shí)X值才發(fā)生變化。
(3) 處于“正在修改”狀態(tài)的配置項(xiàng)的版本號(hào)格式為:X.YZ。
一般只增大Z值,當(dāng)配置項(xiàng)修改完畢,狀態(tài)重新變成“正式發(fā)布”時(shí),將Z值變?yōu)?,增加X(jué).Y值。
5、常用的配置管理軟件
A)、自從20世紀(jì)80年代后期研制并完善了“增量存儲(chǔ)算法”后配置管理工具的春天便開(kāi)始了,目前國(guó)內(nèi)常用的配置管理工具大概有SourceSafe、CVS和ClearCase。
SourceSafe是Micrsoft公司推出的一款支持團(tuán)隊(duì)協(xié)同開(kāi)發(fā)的配置管理工具,是Visual Studio的套件之一。因?yàn)槠涠绦【?,又繼承了微軟集成銷(xiāo)售的一貫作風(fēng)用戶(hù)可以相對(duì)于免費(fèi)的價(jià)格得到,用戶(hù)量絕對(duì)是第一位。
SourceSafe簡(jiǎn)單易用人們?cè)谑褂门渲霉芾砉ぞ邥r(shí)候,80%的時(shí)間只是用Add,Check in,Check out等區(qū)區(qū)幾個(gè)功能。
SourceSafe 的主要局限性:只支持WINDOWS不支持異構(gòu)環(huán)境下的配置管理;對(duì)INTERNET支持不夠完善。
B)、在詳細(xì)介紹SourceSafe首先簡(jiǎn)單概述一下它的基本機(jī)制。SourceSafe是使用服務(wù)器、本地機(jī)的概念來(lái)進(jìn)行操作的,它認(rèn)為所有需要操作的文件都存在服務(wù)器版本文件和本地機(jī)版本文件,無(wú)論您的SourceSafe的架構(gòu)是服務(wù)器客戶(hù)機(jī)形式還是個(gè)人單機(jī)版形式,它的機(jī)制都是這樣。用戶(hù)所用的修改都是在本地機(jī)上完成的,修改完成后再上傳服務(wù)器。單機(jī)版也是這樣操作。我們一定要明確兩個(gè)版本后再來(lái)分析。
服務(wù)器版本文件是一個(gè)絕對(duì)受配置管理軟件限制的文件,用戶(hù)只能通過(guò)SourceSafe的規(guī)定的權(quán)限和操作方法修改它,因?yàn)樗⒉皇悄粋€(gè)人的,它是大家的。本地文件是一個(gè)基本不受限制的文件,您可以象操作本地文件一樣操作它。
SourceSafe由Visual SourceSafe 6.0 Admin、Microsoft Visual SourceSafe 6.0、Analyze VSS DB、Analyze & Fix VSS DB四部分組成。
C)、Analyze VSS DB、Analyze & Fix VSS DB兩個(gè)工具不是很常用,前者用于檢查SourceSafe數(shù)據(jù)庫(kù)文件的完整性,后者主要是修正SourceSafe數(shù)據(jù)庫(kù)文件存在的錯(cuò)誤。
D)、Visual SourceSafe 6.0 Admin的功能類(lèi)似于win2k的用戶(hù)管理器,軟件配置管理人員用它來(lái)分配用戶(hù)和設(shè)定相應(yīng)的權(quán)限。
管理員的管理操作一般都集中在Visual SourceSafe 6.0 Admin中,系統(tǒng)中只有一個(gè)系統(tǒng)管理員Admin可以登陸到此程序中進(jìn)行管理工作,一般剛剛安裝的系統(tǒng)中此用戶(hù)的密碼缺省為空。而且系統(tǒng)為Admin這個(gè)用戶(hù)保留的一切權(quán)力,不可更改。
數(shù)據(jù)庫(kù)的創(chuàng)建這個(gè)操作必須在服務(wù)器上執(zhí)行,因?yàn)橥ㄟ^(guò)客戶(hù)端創(chuàng)建數(shù)據(jù)庫(kù)的操作,只是在客戶(hù)端的機(jī)器上創(chuàng)建的數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)往往只能單機(jī)使用。同時(shí)要必須注意,由于VSS是通過(guò)WINDOWS的網(wǎng)絡(luò)共享來(lái)完成服務(wù)器端受控版本文件的共享,因此VSS服務(wù)端的數(shù)據(jù)庫(kù)必須建立在服務(wù)器的一個(gè)完全共享的目錄之中。否則,客戶(hù)端將無(wú)法獲得數(shù)據(jù)庫(kù)中的文件。
數(shù)據(jù)庫(kù)的備份與恢復(fù),備份數(shù)據(jù)庫(kù)或者其中的一個(gè)項(xiàng)目,點(diǎn)擊tools-archive projects…菜單彈出對(duì)話(huà)框,根據(jù)提示一步步進(jìn)行備份,最后會(huì)形成一個(gè)擴(kuò)展名為*.ssa的備份檔案文件。
如果要從檔案文件中恢復(fù)VSS數(shù)據(jù)庫(kù)中的文件數(shù)據(jù),點(diǎn)擊tools-restore projects菜單根據(jù)提示一步步完成數(shù)據(jù)恢復(fù)工作。其中,在恢復(fù)過(guò)程中,可以選擇恢復(fù)為原有工程,也可改變恢復(fù)成其他工程目錄。
E)、Microsoft Visual SourceSafe 6.0是SourceSafe的主要使用平臺(tái),樣子象Windows的文件管理器,它所顯示的路經(jīng)是以‘$’符號(hào)為根節(jié)點(diǎn)的相對(duì)路徑,在這里介紹一下此平臺(tái)的主要使用方法。
(1)添加項(xiàng)目
您可以在根節(jié)點(diǎn)下添加項(xiàng)目,方法是:File—Add File出現(xiàn)Add File對(duì)話(huà)框后選中相關(guān)文件,按Add即可。
你可以繼續(xù)通過(guò)File-Create Project在根目錄下創(chuàng)建一個(gè)項(xiàng)目后在此項(xiàng)目節(jié)點(diǎn)下添加文件。
添加完文件后,您所添加源文件的屬性自動(dòng)變?yōu)橹蛔x,并在所添加文件的文件夾下生成一個(gè)vssver文件 ,以后對(duì)文件的操作基本與原文件沒(méi)有關(guān)系了。
(2)瀏覽Source Safe Server中的文件
在Visual SourceSafe Explore中雙擊要打開(kāi)的文件,會(huì)彈出一個(gè)對(duì)話(huà)框,您直接點(diǎn)擊OK即可。這時(shí)SourceSafe Explore會(huì)將文件拷貝一份到本地機(jī)的臨時(shí)文件夾中(臨時(shí)文件夾路徑在tools-options-general下設(shè)置),因原文件前面提到已經(jīng)變了只讀,所以臨時(shí)文件也是只讀屬性,而且文件名會(huì)通過(guò)系統(tǒng)自動(dòng)更改。
(3)設(shè)置工作文件夾
SourceSafe 的文件夾需要在本地計(jì)算機(jī)上指定一個(gè)“working folder”。當(dāng)“check out”時(shí),相應(yīng)文件會(huì)下載到這個(gè)本地工作文件夾中。我們?cè)诒镜氐奈募行薷奈募?,然后把修改后的文?#8220;check in”回服務(wù)器的source safe中。
我們可以利用“set working folder”這條命令來(lái)建立source safe的文件夾和本地“working folder”的對(duì)應(yīng)關(guān)系。方法在source safe的文件目錄樹(shù)中選中要建立對(duì)應(yīng)關(guān)系的文件夾-右單擊-選擇“set working folder”即可。
(4)、下載最新版本文件到本地機(jī)
“get latest version”命令可以將一個(gè)文件、一組文件或整個(gè)文件夾的最新版本從source safe中拷貝到本地的計(jì)算機(jī)中,并用只讀的形式保存起來(lái)。方法如下:
在左側(cè)的文件樹(shù)中選擇相應(yīng)的文件夾右單擊后,選擇“get latest version”
這時(shí)會(huì)彈出一個(gè)對(duì)話(huà)框,它包括三個(gè)復(fù)選框:三個(gè)復(fù)選框全空時(shí),只將source safe文件夾根目錄下的文件拷貝到本地計(jì)算機(jī),如同DOS中的COPY命令;recursive選項(xiàng)選中時(shí),會(huì)將source safe文件夾下的所有文件夾及文件都拷貝到本地計(jì)算機(jī),如同DOS中的DISKCOPY,make writable選中,拷貝到本地的文件是可寫(xiě)的。
如果我們單擊“advance”按鈕,就會(huì)出現(xiàn)更多的選擇項(xiàng)。在“set file”中的四個(gè)選項(xiàng)第一如下:current為拷貝操作發(fā)生時(shí)的當(dāng)前時(shí)間;Modification為文件最近一次修改的時(shí)間;check in為文件最后一次check in是的時(shí)間;default同current.
在replace writable中的四個(gè)選項(xiàng)作用是,當(dāng)本地機(jī)有一個(gè)和要下載的文件同名時(shí),且本地機(jī)的文件是可寫(xiě)的同名文件時(shí),設(shè)置系統(tǒng)如何執(zhí)行拷貝:ask系統(tǒng)提示是否覆蓋本地的同名文件;replace自動(dòng)覆蓋本地的同名文件;skip不覆蓋本地的同名文件;merge將兩個(gè)文件合并。
一定要養(yǎng)成先Get Latest Version的習(xí)慣,否則如果別人更新了代碼,VC會(huì)提示你存在版本差異并問(wèn)您是否覆蓋、整合、保留等,如果選錯(cuò)了就會(huì)把別人的代碼Cancel掉,所以一定小心。
(5)下載文件到本地操作
當(dāng)我們要修改一個(gè)文件時(shí),首先要把文件從source safe中復(fù)制到“working folder”中,并且以可寫(xiě)的形式保存,這一系列動(dòng)作的命令就是check out。具體使用方法如下:選擇要下載到本地機(jī)的文件,右單擊后選擇check out,這時(shí)會(huì)彈出一個(gè)對(duì)話(huà)框。缺省的狀態(tài)下“don’t get local copy”這個(gè)選項(xiàng)是不選的,他的意義是這樣的:如果不選保持缺省狀態(tài),當(dāng)本地的同名文件是只讀時(shí),則系統(tǒng)首先用source safe的文件更新本地的文件,本地的文件變?yōu)榭蓪?xiě)。當(dāng)本地的文件是可寫(xiě)時(shí),則會(huì)出現(xiàn)另一提示框其中的選項(xiàng)leave this file:本地文件保留當(dāng)前狀態(tài),source safe中的文件也保留當(dāng)前狀態(tài),這樣有可能兩個(gè)文件不一致。選項(xiàng)Replace your local file with this version from source safe:用source safe中的文件更新本地的文件。如果您選擇don’t get local copy選項(xiàng):則不把source safe的文件拷貝到本地。
文件check成功后,您可以看到文件上有紅色標(biāo)記,這時(shí)您的本地文件是可寫(xiě)的,您就可以修改文件了。上面的選項(xiàng)也許讓您心亂,為了操作更簡(jiǎn)便,我們推薦一種check out 方法:
當(dāng)本地的文件比source safe中的文件內(nèi)容新時(shí),選擇don’t get local copy選項(xiàng)。然后check in使本地機(jī)與服務(wù)器內(nèi)容同步;
當(dāng)source safe中的文件比本地機(jī)的文件內(nèi)容新時(shí),則在source safe中選擇此文件,然后get latest version命令,然后按照默認(rèn)選項(xiàng)進(jìn)行check out;
當(dāng)兩者內(nèi)容相同時(shí),按照默認(rèn)選項(xiàng)操作。
注意:source safe中使用了文件鎖的概念當(dāng)一個(gè)文件被別人check out時(shí),其他人不能check out 此文件;如果文件鎖是無(wú)效的,您可以查看Visual SourceSafe 6.0 Admin-tools-general-allow multiple chechouts選項(xiàng)是否被選中。只有當(dāng)check out 修改文件完畢后,一定要check in,來(lái)保證source safe中的文件最新。
謹(jǐn)記check out時(shí)將是使得代碼對(duì)自己可寫(xiě),對(duì)別人只讀,請(qǐng)僅僅Check Out自己需要修改的部分,不然你工作的時(shí)候同組成員只能休息了。
(6)上傳文件到服務(wù)器操作
我們必須利用 check in命令保證source safe本地的文件同步,check in與check out 成對(duì)出現(xiàn),它的作用是用本地的文件更新source safe中被check out 的文件。
具體操作在source safe選中處于check out狀態(tài)的文件,右單擊選擇check in即會(huì)出現(xiàn)一個(gè)對(duì)話(huà)框:默認(rèn)狀態(tài)下它的兩個(gè)復(fù)選框處于非選狀態(tài),Keep checked out選項(xiàng),可以在check in 后自動(dòng)的再次check out,等于是省略了下一步check out操作;remove local copy選項(xiàng),可以在check in的同時(shí),刪除本地機(jī)上working folder中的同名文件。
一般按照缺省選項(xiàng)就可以了。Check in成功后,source safe和本地的文件是完全相同的,本地的文件變成了只讀文件。要再次修改文件時(shí),再執(zhí)行check out操作,此時(shí)本地機(jī)的文件屬性自動(dòng)變?yōu)榭蓪?xiě)狀態(tài)。一定記住check out 后要check in,不然導(dǎo)致的后果就如同寫(xiě)完了文件不保存差不多。
一定要保證你的文檔正確、可編譯后再Check In不然會(huì)使得其他人也無(wú)法通過(guò)編譯,整個(gè)工程沒(méi)法調(diào)試了。
(7)undo check out 操作
當(dāng)一個(gè)文件被check out 后,您如果想要撤銷(xiāo)這項(xiàng)操作,可以使用undo check out命令,操作步驟:選中處于check out 狀態(tài)的文件,右單擊后選擇undo check out.
當(dāng)source safe中的文件和本地的文件完全相同時(shí),則不出現(xiàn)提示信息,文件恢復(fù)為普通狀態(tài)。
當(dāng)source safe中的文件和本地的這個(gè)文件不完全相同時(shí),則出現(xiàn)提示窗口,對(duì)話(huà)框local copy中包括三個(gè)選項(xiàng):
replace選項(xiàng)選中后會(huì)出現(xiàn),系統(tǒng)詢(xún)問(wèn)是否覆蓋的信息,如果單擊yes則是用source safe上的文件最后一個(gè)版本覆蓋本地機(jī)上的文件,如果選擇no保留本地計(jì)算機(jī)上文件的內(nèi)容,source safe上的文件是上次check in后的內(nèi)容。此時(shí),兩個(gè)文件可能出現(xiàn)不同;
leave選項(xiàng)保留當(dāng)前計(jì)算機(jī)上的內(nèi)容,source safe上的文件是上次check in后的內(nèi)容,兩個(gè)文件可能出現(xiàn)不同;
delete 選項(xiàng)刪除本地計(jì)算機(jī)上的這個(gè)文件。
選擇一個(gè)選項(xiàng)后,單擊OK后,文件回到普通狀態(tài)。
(8)edit操作
edit命令是一個(gè)組合命令,是先check out再修改的命令的組合。應(yīng)當(dāng)注意的是,執(zhí)行edit命令后,我們修改了文件,但是source safe中的文件并沒(méi)有同步的修改,我們還是要check in完成本地文件與source safe上文件的同步。
(9)查看文件的歷史內(nèi)容
方法選中此文件,右單擊選擇show history,出現(xiàn)一對(duì)話(huà)框后,經(jīng)選擇OK后彈出一窗體,我們可以看到這個(gè)文件的所有版本,要查看某個(gè)版本可以選中VIEW按鈕。如果想下載某個(gè)先前的版本可以點(diǎn)擊get按鈕。
(10)關(guān)于source safe的權(quán)限
缺省狀況下,項(xiàng)目安全管理是以簡(jiǎn)單模式來(lái)運(yùn)行,即用戶(hù)對(duì)工程的操作的權(quán)限只有兩種,一種只讀權(quán)限,一種讀寫(xiě)權(quán)限。要啟用高級(jí)模式,可以在Visual SourceSafe 6.0 Admin-tools-project security-enable project security將此選項(xiàng)選選中。
source safe的權(quán)限分為5級(jí):
無(wú)權(quán)限級(jí):看不到文件
read級(jí):自能瀏覽文件,可以使用get latest version命令
check in/check out級(jí):可以更新文件,但不能對(duì)文件進(jìn)行刪除
delete級(jí):可以刪除文件,但通過(guò)某些命令這些文件還能恢復(fù)。
Destroy級(jí):可以徹底的刪除文件,刪除之后無(wú)法恢復(fù)。
為用戶(hù)設(shè)定權(quán)限的工作一般由軟件配置管理員在Visual SourceSafe 6.0 Admin中完成。
權(quán)限管理就是管理用戶(hù)和工程目錄之間的操作權(quán)限的關(guān)系。因此,有兩種管理方式。一種就是以工程目錄為主線(xiàn)來(lái)管理權(quán)限,一種是以用戶(hù)為主線(xiàn)來(lái)管理權(quán)限。
以目錄為主線(xiàn)管理用戶(hù)權(quán)限則點(diǎn)擊tools-right by project…菜單,彈出對(duì)話(huà)框來(lái)管理項(xiàng)目的用戶(hù)訪(fǎng)問(wèn)權(quán)限。
如果以用戶(hù)為主線(xiàn)來(lái)用戶(hù)權(quán)限,則應(yīng)先在主界面的下方的用戶(hù)列表中選中一個(gè)用戶(hù),再點(diǎn)擊rights assignments for user…菜單,彈出對(duì)話(huà)框,對(duì)話(huà)框下方列出了該用戶(hù)對(duì)數(shù)據(jù)庫(kù)各項(xiàng)目目錄的訪(fǎng)問(wèn)權(quán)限,如果訪(fǎng)問(wèn)某個(gè)項(xiàng)目在列表上沒(méi)有列出,則說(shuō)明該項(xiàng)目的權(quán)限是繼承上級(jí)目錄的訪(fǎng)問(wèn)權(quán)限。只要您點(diǎn)選一個(gè)目錄,就可以編輯該用戶(hù)對(duì)該項(xiàng)目目錄的訪(fǎng)問(wèn)權(quán)限。
權(quán)限復(fù)制就是將一個(gè)用戶(hù)的權(quán)限直接復(fù)制給另外一個(gè)用戶(hù),管理員可以通過(guò)copy user right…菜單來(lái)實(shí)現(xiàn)。
(11)關(guān)于password的更改
password一般是由軟件配置管理員分配的,如果我們需要修改密碼,可以在tools-change password 下修改。
需要說(shuō)明的一點(diǎn)是當(dāng)你的source safe密碼和windows密碼相同時(shí),啟動(dòng)source safe,不會(huì)出現(xiàn)提示您輸入密碼的對(duì)話(huà)框。這是微軟的的一貫作風(fēng),在SQL server數(shù)據(jù)庫(kù)管理系統(tǒng)下也能找到這個(gè)影子,因?yàn)槲④浾J(rèn)為windows的密碼應(yīng)該比其他軟件的密碼級(jí)別要高,既然您能用相同的用戶(hù)名和密碼進(jìn)入windows那么您也有權(quán)使用相同的用戶(hù)名進(jìn)入其他的軟件。
聯(lián)系客服