富服務端 mysql
這是svn和git一個大的不一樣點。svn的服務端包括源代碼文件,還包括一些對.svn項目的控制文件。這是典型的mysql-mysqlserver相似項目。客戶端發送命令,服務端響應請求。 git
版本號是id sql
每次項目中的改動提交到服務端,服務端都會爲此次改動產生一個版本號。 svn
每個版本都有一個parent sqlserver
create branch操做,merge操做咱們均可以看到這個思想的影子。 server
COW思想 it
checkout id1000 A --> copy A 成爲A1 --> 修改A1成爲A1' --> A1'提交 打包
--> copy A 成爲A2 --> 修改A2成爲A2' --> A2'提交 請求
A1’提交後,A2'提交,這時確定提交不了。由於A2會和當前服務端的head進行比較,顯然A2和A1'是有不一樣之處,因此會衝突。這也是爲何commit以前最好先pull代碼。pull通常選擇head拉數據。 數據
pull代碼時會判斷A2'相對A2修改的地方是否在pull的內容中(A1’與A之間的內容)有修改,若是有,會報告衝突。但這時你的A2已經變成了A3,也就是如今的head。你解決完衝突後,對須要修改的代碼進行修改,這時就能夠提交了。
export
打包用,不把.svn文件打入包中。