版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1,使用SVN進行版本控制,李 洋,2,摘 要,一、Subversion簡介 二、版本控制的基本知識 三、Subversion常用功能 四、客戶端工具TortoiseSVN 五、SVN使用中常見問題,3,一、Subversion簡介,版本控制是管理信息變更的一門藝術 版本控制工具早已經(jīng)成為許多程序員的主要工具之一 版本控制軟件的用途并不僅限于軟件開發(fā)的領域 ,只要人們使用計算機來管理經(jīng)常變更的信息,就需要使用版本控制工具 協(xié)同工作,大大提高團隊工作效率 及時了解團隊中其他成員的進度 資料共享 記錄每個文件從誕生到最終完成全過程的每步細節(jié),4,什么是Subversion,Subversion 是
2、一個自由的、開放源碼的版本控制系統(tǒng) 它可以管理各個時刻的文件和目錄 Subversion 將文件存放在repository庫中。這個倉庫非常類似于一個普通的文件服務器 ,只是它還可以記錄文件和目錄曾經(jīng)做過的每一次變更 Subversion允許你數(shù)據(jù)恢復到早期版本,或者是檢查數(shù)據(jù)修改的歷史,可把版本控制系統(tǒng)比作一種“時間機器,5,什么是Subversion,Subversion的倉庫可以通過網(wǎng)絡來訪問,允許不同的用戶在不同的計算機上使用 。 不同的使用者可以進行協(xié)同工作 。而且所有工作都是有記錄的,如果有錯只要撤銷就可以。 Subversion只是版本控制系統(tǒng),不是軟件配置管理系統(tǒng)(SCM) 。
3、它是一個通用系統(tǒng),可以管理任何類型的文件集 它是一個通道,可以管理任何計算機中的文件系統(tǒng),6,Subversion的歷史,CVS有明顯的局限性和功能上的不足。 2000年開始 ,CollabNet公司 就開始著手開發(fā)新的版本控制系統(tǒng)來代替CVS。 Karl Fogel 和Jim Blandy 是CVS開發(fā)者,加入到開發(fā)subversion當中。 他們讓 Subversion 來使用 CVS 的特性,并且保留相同的開發(fā)模型 ,但是避開 CVS 的那些明顯的缺陷 。 Subversion 于2001年8月進入“自測”階段,7,Subversion的特色,目錄控制 CVS 只能跟蹤單個文件的歷史,而
4、 Subversion 實現(xiàn)了一個虛擬的受控文件系統(tǒng),可以跟蹤整個目錄的變更。 真正的版本歷史 由于 CVS 只限于記錄文件的版本信息,像文件復制、重命名這樣的操作它就不支持 ,在 Subversion 中我們可以添加、刪除、復制和重命名文件和目錄,8,Subversion的特色,原子化提交 一個變更集要么完整地被提交到倉庫中,要么不做任何改變 ,從而避免發(fā)生不完整地提交變更的情況 。 受控元數(shù)據(jù) 每一個文件和目錄都有一個與其對應的屬性集 。 可選的網(wǎng)絡層 Subversion 倉庫的存取是一個抽象概念,有利于其他人實現(xiàn)新的網(wǎng)絡訪問機制 ,Subversion 可以作為一個外部模塊插入到 Ap
5、ache HTTP 服務器中,9,Subversion的特色,一致的數(shù)據(jù)處理 Subversion 使用一種二進制的比較算法來表示文件之間的區(qū)別 。 高效的分支和標記 分支和標記所帶來的開銷與項目的規(guī)模并沒有直接的關系 ,Subversion 在創(chuàng)建分支和標記時使用類似“連接”的方式來復制項目 。 擴展能力 它是由一組設計良好的 APIs實現(xiàn)的,包含在 C 的共享庫中 ,這使得它很容易維護。也很容易被其他應用程序或語言使用,10,Subversion的體系結構,11,Subversion的體系結構,典型的client/server模式結構 在系統(tǒng)的一端是存放著所有受控制數(shù)據(jù)的 Subversi
6、on 倉庫。 另一端是 Subversion 的客戶端程序,管理著受控數(shù)據(jù)的一部分在本地的映射(稱為“工作副本”)。 在這兩端之間,是通過各種倉庫存取層(Repository Access,RA)的多條通道。這些通道中,有些要使用計算機網(wǎng)絡,再通過用來訪問 Subversion 倉庫的服務器。而有些則完全繞過了網(wǎng)絡,直接對倉庫進行操作,12,Subversion的組件,Svn 一個命令行的客戶端程序 Svnversion 報告本地工作副本狀態(tài)(當前檔案的修訂版本號表示)的程序 Svnadmin 用來創(chuàng)建或者是修復倉庫的工具 svndumpfilter 過濾資源庫程序,13,Subversion
7、的組件,mod_dav_svn Apache 服務器的一個插件模塊,用來使其他人可以通過網(wǎng)絡訪問這個倉庫 svnserve 一個定制的、獨立的 Subversion 服務程序??勺鳛橐粋€駐留進程運行或者是由 SSH 調用。是使倉庫可以被別人通過網(wǎng)絡訪問的另一種方法 常用的組件是svn和svnadmin,有圖形化客戶端來實現(xiàn)svn和svnadmin功能,14,訪問資源庫的幾種方式,樣式 存取方式 file:/ 直接從本地磁盤上訪問倉庫 http:/ 通過 WebDAV 協(xié)議訪問 Apache 服務器而訪問倉庫 https:/ 和 http:/ 相同,但使用 SSL 來作加密 svn:/ 通過sv
8、nserve服務自定義的協(xié)議 svn+ssh:/ 和 svn:/ 相同,但通過SSH封裝,15,資源庫的URL解析,所有被Subversion管理的目錄、文件有唯一路徑 支持的協(xié)議有http,https,svn,svns,file 88/svn/kexie/proj/account/trunk,protocol,host,repository,directory,16,SVN服務器端數(shù)據(jù)目錄,dav目錄:提供給Apache與mod_dav_svn使用的目錄,存儲內部數(shù)據(jù) db目錄:所有版本控制的數(shù)據(jù)存放文件 hooks目錄:放置hook腳本文件的目錄 locks
9、目錄:用來放置Subversion文件庫鎖定數(shù)據(jù)的目錄,用來追蹤存取文件庫的客戶端 format文件:一個文本文件,記錄文件庫配置的版本號 conf目錄:是這個倉庫的配置文件(倉庫的用戶訪問帳號、權限等,17,二、版本控制的基本知識,倉庫(The Repository) 版本控制模型 實際工作中的subversion subversion/cvs/vss比較,18,倉庫(The Repository,Subversion 是一個集中式的系統(tǒng)。它的核心是一個用來存放數(shù)據(jù)的中心倉庫。中心倉庫使用典型的文件和目錄層次結構樹狀結構來存儲信息。 許許多多的客戶端可以連接到中心倉庫,然后讀取或者寫入文件
10、。 客戶端通過寫文件來使其他人共享,也可以讀取其它客戶端所寫入的文件。 典型的客戶端/服務器系統(tǒng)模型 ,如圖所示,19,倉庫(The Repository,20,倉庫(The Repository,倉庫就是一種文件服務器,只是不是通常的那種 。 Subversion 倉庫可以記錄寫入倉庫的每一次更改 。 這些更改包括對每一個文件的每一次修改,甚至是對目錄本身的修改,例如添加文件、刪除文件和對文件和目錄的重新編排。這些特性使得 Subversion 倉庫與一般的文件服務器相比較為特殊。 客戶端同樣可以讀取文件和目錄以前某個時刻的狀態(tài) 。 版本控制系統(tǒng)的核心:記錄和跟蹤數(shù)據(jù)的修改歷史,21,版本控
11、制模型,版本控制系統(tǒng)的核心任務是使得數(shù)據(jù)可以協(xié)作處理和共享。但是不同的系統(tǒng)使用不同的策略來達到這個目標 。 文件共享的問題 :怎樣讓系統(tǒng)允許用戶共享信息,而不會讓他們因意外而互相干擾? 鎖定修改解鎖方案 復制修改合并方案,22,鎖定修改解鎖方案,許多版本控制系統(tǒng)都使用“鎖定修改解鎖”模型來解決這個問題 ,諸如:VSS 在這樣一個系統(tǒng)中,倉庫在一個特定的時刻只允許一個人對某個文件進行修改 。 這種方案的問題是它有一點過于嚴格了,經(jīng)常會阻塞用戶的使用 。 鎖定可能會帶來管理問題 。 鎖定可能導致不必要的串行工作 。 鎖定可能導致錯誤的安全狀態(tài),文件可能相互依賴,23,復制修改合并方案,Subver
12、sion、CVS以及其他一些版本控制系統(tǒng)使用“復制修改合并”模型來代替鎖定 。 每一個用戶的客戶端軟件從中央倉庫創(chuàng)建出一份個人的工作副本倉庫中文件和目錄的本地映射 。 用戶就可以并行工作,修改手中的私有副本 。 這些私有副本合并成為一個全新的版本 。 版本控制系統(tǒng)常常需要合并,但是最終,操作者本身必須負責讓合并工作正確進行,24,沖突(conflict,復制修改合并模型會帶來沖突的問題 用于解決沖突的時間遠遠少于鎖定系統(tǒng)所帶來的時間浪費。 沒有系統(tǒng)可以強制用戶完美的交流,沒有系統(tǒng)可以檢測語義上的沖突 解決沖突的關鍵是用戶交流,25,模型選擇,鎖定-修改-解鎖模型被認為不利于協(xié)作,但有時候鎖定會
13、更好。 拷貝-修改-合并模型假定文件是可以根據(jù)上下文合并的:就是版本庫的文件主要是以行為基礎的文本文件(例如程序源代碼)。但對于二進制格式,例如圖片或聲音,在這種情況下,十分有必要讓用戶輪流修改文件,如果沒有線性的訪問,有些人的許多工作就最終要被放棄。 SVN也支持鎖定-修改-解鎖模型,26,實際中的 Subversion,工作副本W(wǎng)orking Copies 修訂版 Revision 混合型修訂版,27,工作副本,一個 Subversion 的工作副本其實就是本地系統(tǒng)中的一個普通的文件目錄樹 。 可以使用任何方式來編輯這些文件。如果是源代碼文件的話,你也可以像通常情況那樣去編譯它們。 工作副
14、本是你的私人工作區(qū) 。 如果你不明確的要求,Subversion 絕不會合并其他人的修改,也不會讓其他人看到你做的修改,28,工作副本,在你已經(jīng)修改完工作副本中的文件,并且確信修改正確后,就可以將這些修改公開給同一個項目中的其他工作人員。Subversion 提供了將文件寫入倉庫的命令 。 工作副本中也包含一些額外的文件。它們是由 Subversion 創(chuàng)建和維護的,用來輔助完成這些命令。 最典型的情況是,每一個目錄都包含一個叫做 .svn 的子目錄 。該目錄也被稱為“工作副本管理目錄”。 一個 Subversion 的倉庫會包含幾個項目,而每一個項目都是倉庫的目錄的一個子目錄。這樣,用戶的工
15、作副本也就對應于倉庫中一個特定的子目錄,29,SVN的修訂版,一個 svn commit 操作可以將任意數(shù)量的文件和目錄的修改發(fā)布作為一個單獨的原子事務來處理 。 在倉庫中,每一次提交都被作為一個原子事務來對待 。 每當倉庫接受一次提交,倉庫中的文件系統(tǒng)目錄都會創(chuàng)建一種新的狀態(tài),叫做一個修訂版。 每一個修訂本都被賦予一個唯一的自然數(shù),并且每一個修訂版的數(shù)字都比前一個要大。剛剛建立的倉庫的初始的版本是 0 ,只包含一個空的根目錄。 Subversion 的修訂版編號是針對整個目錄樹的,而不是某一個獨立的文件 。 如圖所示,30,修訂版,設想一個修訂版編號的數(shù)列,從 0 開始,從左延伸到右。每一個
16、修訂版編號都對應一個畫下面的目錄樹,而每一個目錄樹就是在每一次提交之后的倉庫的快照,31,混合型修訂版,一般的原則上,Subversion 努力使自己盡可能的靈活。一個典型的靈活性的體現(xiàn)就是允許工作副本中包含有混合的修訂版編號的能力。 在完成向倉庫的提交之后,剛剛提交的文件和目錄就擁有了最新的修訂版編號,而其他文件沒有,32,subversion/cvs/vss比較,33,三、 Subversion常用功能講解,基本術語 主要講解SVN 客戶端工具的常用命令 通過本部分的學習,可以操作所有任務在日常使用subversion版本控制系統(tǒng),34,術語,基本修訂版(revision) 存儲庫接受的每
17、一次修改產(chǎn)生新的修訂版 HEAD:存儲庫中最新版本 BASE:工作拷貝中一個條目的修訂版本號,如果這個版本在本地修改了,則“BASE版本”就是這個條目在本地未修改的版本。 分支(branches) 標記(tags) 合并(merging,35,Subversion客戶端工具,命令行工具 通過命令行方式,主要命令包括: svn:基本svn命令 svnadmin:存儲庫管理 svnlook:存儲庫查看 TortoiseSVN 與windows資源管理器集成 subclipse 與eclipse集成,36,Subversion常用操作,import 將本地目錄導入存儲庫 checkout 從存儲庫創(chuàng)
18、建目錄樹的本地工作拷貝 update 將存儲庫中文件同步到本地工作拷貝中 commit 本地工作拷貝中文件修改提交到存儲庫中 add 將本地文件加入到存儲庫中 remove 從存儲庫中刪除一個文件 (保留歷史記錄). move 在存儲庫中講一個文件移到另一個位置,37,Subversion推薦目錄結構,存儲庫 項目名 trunk:主版本 branches:分支版本(獨立版本) tags:標記版本,比如發(fā)行版 v 1.0/ v 2.0等等,38,工作拷貝、存儲庫同步的狀態(tài),39,Svn常用命令介紹,Help Import Checkout 基本的工作周期: Update your working
19、 copy svn update Make changes add delete copy move,40,Svn常用命令介紹,Examine your changes status diff revert Merge others changes Merge Resolved Commit your changes commit,41,IMPORT,import: 提交未納入版本控制的文件或目錄樹至檔案庫 用法:import PATH URL 遞歸地提交 PATH 的拷貝至地址(URL)。如果省略 PATH,默認為 .。父目錄會依需要于檔案庫內建立。 舉例: svn import ./kav
20、8 26:1976/hermes/svtest/trunk -m add kav8,42,IMPORT,Central Repository,Local Workspace(s,A,import,A,Central Repository,Local Workspace(s,A,before,after,in sync,43,CHECKOUT,checkout (co): 從repository中取出文檔,在本機建立工作副本(working copy) 開始工作前的前置動作 用法:checkout URL PATH 例如:svn co http:/10.10.11
21、.226:1976/hermes/svtest,44,CHECKOUT,Central Repository,Local Workspace(s,checkout,A,Central Repository,Local Workspace(s,A,before,after,in sync,A,45,EXPORT,Export:導出一個無版本控制的目錄樹副本 用法: svn export -r REV URLPEGREV PATH svn export -r REV PATH1PEGREV PATH2 例如: svn export 26:1976/hermes/sv
22、test Export與Checkout的區(qū)別 export導出的副本無svn附加文件,不在服務器的版本控制下 checkout會在本地建立一個工作區(qū),可以修改和提交,46,UPDATE,將repository上的版本整合到本地端的工作副本(workspace) 可能會出現(xiàn)沖突,需要手動解決 用法:update PATH. 例如: svn update At revision 25,47,UPDATE,Central Repository,Local Workspace(s,update,A,Central Repository,Local Workspace(s,A,before,after
23、,in sync,A,A,48,COMMIT,提交操作使workspace與repository保持同步 本地端的修改包含: 文件內容修改、文件目錄刪除 需要發(fā)布到repository時 用法:commit PATH. m LOG_MSG 日志信息必須提供,但可以是空的 例如: svn ci -m add a word Sending dir1/222 Transmitting file data . Committed revision 26,49,COMMIT,Central Repository,Local Workspace(s,commit,A,Central Repository,
24、Local Workspace(s,A,before,after,in sync,A,A,50,COMMIT,最好能夠一次提交概念性、功能性或任務性的修改 確保源代碼編譯通過,51,做出修改(Make changes,Add: 增加文件或者目錄到資源庫中,然后commit。條件是該文件或者目錄已經(jīng)在相應的目錄上。 Delete 刪除在庫中的文件或者目錄,然后commit。 Copy 拷貝文件,然后commit Move 移動文件或目錄到另外目錄中,相當于拷貝、刪除的組合。 以上的命令是針對工作副本進行的,所以要commit才有效,52,檢驗修改(Examine your changes,Sta
25、tus 顯示工作拷貝目錄與文件的狀態(tài) 。 用法:status PATH. svn status wc M wc/bar.c A wc/qax.c Diff diff (di): 顯示兩個路徑中的差異 svn diff -r 19:25 Project.java Revert 恢復原始未改變的工作拷貝文件 (恢復大部份的本地修改,53,合并修改(Merge others changes,Merge 將兩個來源之間的差異應用至工作拷貝路徑 Resolved 移除工作拷貝的目錄或文件的 沖突 狀態(tài),54,Other userful commands,Cleanup List Cat Log mkdi
26、r,55,常見的STATUS,A 預定要添加的項目。 D 預定要刪除的項目。 M 項目已經(jīng)修改了。 U 文件更新了(從服務器收到修改) R 項目在工作拷貝中已經(jīng)被替換了。這意味著文件預定要刪除,然后有一個同樣名稱的文件要在同一個位置替換它。 C 項目的內容(相對于屬性)與更新得到的數(shù)據(jù)沖突了。 ? 項目不在版本控制之下。 ! 項目已經(jīng)丟失(例如,你使用svn移動或者刪除了它)。這也說明了一個目錄不是完整的(一個檢出或更新中斷,56,分支(BRANCH,獨立于主干(trunk)的“新項目” 新項目開始于某一穩(wěn)定版本的revision,通過revision copy得到 分支的基本概念正如它的名字
27、,開發(fā)的一條線獨立于另一條線,如果回顧歷史,可以發(fā)現(xiàn)兩條線分享共同的歷史 例子: svn cp 26:1976/hermes/svtest/trunk 26:1976/hermes/svtest/branch/bc_3_0 -m “create branch from r101,57,建立BRANCH的時機,開發(fā)可能會對主分支產(chǎn)生影響 從某一版本產(chǎn)生獨立的“特殊”產(chǎn)品 解決BUG 增加新功能,58,標簽 (TAG,與BRANCH類似,給穩(wěn)定的版本做記號 一個標簽只是一個項目某一時間的“快照”,在Subversion里這個概念無處不
28、在每一次提交的修訂版本都是一個精確的快照。 從TAG中取出的代碼可以編譯成獨立的產(chǎn)品 一般與Release產(chǎn)品一一對應 例子: svn cp 26:1976/hermes/svtest/trunk 26:1976/hermes/svtest/tags/ tag_release_3_0 -m “create tag from r101,59,BRANCH與TAG的區(qū)別,branch和tag,對于svn都是使用copy實現(xiàn)的,所以他們在默認的權限上和一般的目錄沒有區(qū)別。至于何時用tag,何時用branch,完全由人主觀的根據(jù)規(guī)范和需要
29、來選擇,而不是強制的。 一般情況下,tag,是用來做一個milestone的,不管是不是release,都是一個可用的版本。這里,應該是只讀的。更多的是一個顯示用的,給人一個可讀(readable)的標記。 Branch 是用來做并行開發(fā)的,這里的并行是指和trunk進行比較。 例如:3.0開發(fā)完成,這個時候要做一個tag,tag_release_3_0,然后基于這個tag做release。trunk進入3.1的開發(fā),但是3.0發(fā)現(xiàn)了bug,那么就需要基于tag_release_3_0做一個branch,branch_bugfix_3_0,基于這個branch進行bugfix,等到bugfix
30、結束,做一個tag,tag_release_3_0_1,然后,根據(jù)需要決定branch_bugfix_3_0是否并入trunk,60,合并 (MERGE,合并BRANCH的修改到TRUNK 合并主分支的最新版本到工作副本 BUG修正后將BUG去除的代碼合并到其他“特殊”BRANCH 可以用來恢復舊版本 merge: Apply the differences between two sources to a working copy path.usage: 1. merge sourceURL1N sourceURL2M WCPATH2. merge sourceWCPATH1N source
31、WCPATH2M WCPATH3. merge -c M | -r N:M SOURCEREV WCPATH。 其實,第一個URL(稱之為左邊),為起始狀態(tài);第二個URL(稱之為右邊),為最終狀態(tài),取最新的;最后一個是接收區(qū)別的工作拷貝(通常叫做合并的目標,61,合并 (MERGE,svn沒有恢復舊版本的直接功能,不過可以使用svn merge命令恢復。 例子:當前HEAD為14,而我要恢復成10版本,怎么做? 用svn merge:svn updatesvn merge -revision 14:10 PATHsvn commit -m restore to revision 10” Mer
32、ge原理是比較指定版本的差異,然后把這些差異應用到本地工作副本,而-r后的14:10,是指相對于版本14來說版本10的變化(注意,這個版本的次序很重要。),也就是相對版本14,版本10添加了哪些文件或目錄,以及哪些文件添加了哪些行刪除了哪些行。又因為本地版本是最新的14,所以把這些差異應用到本地版本時就等于把14改變成10,其效果等于還原到版本10,62,沖突,產(chǎn)生原因 當團隊協(xié)同工作的時候,多人同時操作一個文件。當有人操作完成后,將該文件提交到SVN上。這樣,其他人的本地文件與SVN上的文件版本不一致。當另一人操作完成后,提交該文件時,就會出現(xiàn)沖突 對于每一個沖突的文件,Subversion
33、放置三個額外的未版本化文件到你的工作拷貝: filename.mine 更新前的文件,最新更改的內容。 filename.rOLDREV 更新操作以前的BASE版本文件,在上次更新之后未作更改的版本。 filename.rNEWREV 服務器的版本,對應版本庫的HEAD版本。 這里OLDREV是本地.svn目錄中的修訂版本號,NEWREV是版本庫中HEAD的版本號,63,沖突的解決,面對文件沖突,您可以選擇以下三種方式解決沖突: 1.“手動”合并沖突文本(檢查和修改文件中的沖突標志)。 -需要團隊成員交流 2.如果希望取消自己的修改,可以拷貝Subversion為你生成的文件替換你的工作拷貝用
34、某一個臨時文件覆蓋你的工作文件。 3.運行svn revert 來放棄所有的修改。 解決了重提之后,運行svn resolved,刪除了臨時文件,之后可以提交了,64,如何避免沖突,養(yǎng)成良好的習慣,在修改文件之前,先進行一次update操作 當修改完成后,及時commit,不要在本地停留時間過長 在多人協(xié)作時,盡量修改自己撰寫的部分,不要修改其他部分 多人協(xié)作時,增加交流 出現(xiàn)沖突很正常,可以通過前面的三個方法解決,不要相互覆蓋,65,四、客戶端工具TortoiseSVN,TortoiseSVN介紹 TortoiseSVN的使用,66,TortoiseSVN介紹,Windows操作系統(tǒng)客戶端 圖形化界面,集成了svn和svnadmin命令行工具的功能。 該客戶端集成于資源管理器功能中,使用方便,易于掌握。 網(wǎng)上可搜索下載,直接安裝TortoiseSVN-9898-win32-svn-1.6.12.msi ,方法同一般軟件安裝相同,67,TortoiseSVN使用介紹,一旦該客戶端安裝成功,在指定目錄單擊右鍵,彈出菜單中,增加了幾項,如圖所示,68,TortoiseSVN使用介紹,如上圖所示,在資源管理器菜單中增加了,svn checkout 命令菜單和其他命令,諸如:瀏覽指定的資源庫、創(chuàng)建資源庫、從資源庫中導出資源、從指定目錄中導入到資源
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態(tài)旅游度假區(qū)招投標申請表
- 社會保險管理與城市規(guī)劃
- 石油化工設備使用與管理
- 水上樂園水電布線施工合同
- 農(nóng)村燃氣個人承包施工合同
- 2024年跨國醫(yī)療設備采購與技術支持合同
- 2024年河南漯河事業(yè)單位選拔100位人才3篇
- 2024年鏟車安全巡查記錄表3篇
- 2025年度跨境電商擔保抵押合同范本2篇
- 2025版物流園區(qū)土地及建筑物租賃承包協(xié)議3篇
- 采購合同范例壁布
- 公司員工出差車輛免責協(xié)議書
- 2024年陜西榆林市神木市公共服務輔助人員招聘775人歷年管理單位遴選500模擬題附帶答案詳解
- 2024年度抖音短視頻拍攝制作服務合同范本3篇
- 2024-2025學年高二上學期期末數(shù)學試卷(提高篇)(含答案)
- 安全生產(chǎn)事故案例分析
- 2024年07月22208政治學原理期末試題答案
- 期末檢測卷(一)(試卷)-2024-2025學年外研版(三起)英語六年級上冊(含答案含聽力原文無音頻)
- 《客戶開發(fā)技巧》課件
- 《防范于心反詐于行》中小學防范電信網(wǎng)絡詐騙知識宣傳課件
- 口腔執(zhí)業(yè)醫(yī)師定期考核試題(資料)帶答案
評論
0/150
提交評論