2010年12月7日 星期二

google code 的一些基本操作 與 svn 的指令

之前用google code 以來 一直覺得奇怪的是create project 這個項目最不好找,
原來從 http://code.google.com/%20hosting
這邊進入 下面就有create project 這個選項了.

其次 關於密碼 跟 project 的尋找 ,都要到右上角的 My favoritesProfiles 裡取用.

每個創建的計畫 都會放在My favorites 裡 ,
commit 時用到的密碼 放在 Profiles/setting 裡.

延伸閱讀:
windows 的 TortoiesSVN 的用法
http://code.google.com/p/wsd/wiki/AboutCheckoutSVN


以下是google code裡常用到的一些指令:

新建project的位址:
https://<project名稱>.googlecode.com/svn/

checkout : 將某個porject全部取出


checkout https://data-structures.googlecode.com/svn/trunk/ <新建的檔案夾名稱> --username <你的google使用名稱 不含@gmail.com>

在當時的目錄下產生一個 新建名稱的檔案夾

checkout -r <版本>:直接checkout特定的版本.

<版本>這個參數可以單獨用數字或 r<數字>,都可以代表某一版本, 甚至直接寫 -rx

例  checkout  -r4
      checkout -r 4
      checkout -r r4

我還是覺得用 -r 4 比較好用 也好記


checkout -r r4 https://data-structures.googlecode.com/svn/trunk/ <新建的檔案夾名稱> --username <你的google使用名稱 不含@gmail.com>

這個指令是取出第四版的檔案, 如果像上面一樣,但不寫取出那一個版本,就會取出最新的版本.

SVN diff -r <版本數字>:<另一版本數字> : 找出兩者版本間有什麼不同


  • 例  svn diff -r 4:5


svn add <某個檔案/或某個檔案夾>:
svn add test-v1.c , 把test-v1.c加入repository,但是還沒上傳,所以在google code還看不見.

svn commit:
這個指令才會真正把所有修改過的檔案作上傳的動作.前提是要 svn add 這個檔案過 !!
svn commit也可以簡寫成 svn ci 


trunk/Tags/Branches 目錄 的 架構 和 用途:
  • trunk: Main line of development(主幹, 主要開發都由在 trunk)
  • tags: Releases (想要 Release 的時後, 就標個 Tag, 以後可以依 Tag 來找回之前版本的資料)
  • branches: 為了某些人員或某些目的, Preparation of release, bug fixing(分支, 可以將某些功能切出來, 或者 bug fix 等切成分支, 等做完後再用 Merge 合併回來)
svn cp https://svn.codespot.com/a/eclipselabs.org/bronchofilemanager/trunk/ https://svn.codespot.com/a/eclipselabs.org/bronchofilemanager/branches/zxsu -m "make a new branches by zxsu"
我們可以用 cp 將 trunk 拷貝 到 branch 裡


Import: 將整個 project_directory 的資料 import 進 svn 裡面
  • svn import project_directory http://DOMAIN/svn_project
  • svn import project_directory file:///SVN_PATH/svn_project
Checkout: (checkout 可簡寫成 co), 將資料 checkout 回來
  • svn co http://SVN_PATH/svn_project
  • svn co file:///SVN_PATH/svn_project
  • svn co -r 12 file:///var/lib/svn/dev/projects # 出第12版的 projcets code
svn list: (可簡寫成 svn ls), 看有哪些檔案/資料


svn update: (update 可簡寫成 up), 將目前更新成最新版本.




svn status: (status 可簡寫成 st), 看目前檔案/結構 跟 SVN 線上的版本有哪些不同
svn mv: 更改檔名, 並且此檔案之前紀錄還要繼續留下



         例 svn mv orginal_filename new_filename
svn revert: 還原這次的修改, 回到前一版的檔案狀態(未 commit 前可用)
  • SVN_CHECKOUT_DIR$  svn revert [file | directory]
SVN 檔案狀態資訊:
  • ?: 此檔案不存在 SVN 裡面
  • A: 此次新增的檔案
  • C: 此檔案已經有人改過, 合併不成功, 需要人工介入
  • D: 此次移除的檔案
  • M: 此檔案有修改過
  • U: 此檔案有被更新過

建立一個 branch

  • svn copy http://svnserver/calc/trunk http://svnserver/calc/branches/my-calc-branch -m 'create a branch' 
建立 Release Tags:
  • svn copy http://svnserver/calc/trunk http://svnserver/calc/tags/Release-1.0.0 -m 'create Release tags for Release 1.0.0'
合併兩個版本的檔案 # 參考自: 用 Subversion 的 Merge 來 Undo
  • svn merge -r REV1:REV2 {path/to/workingcopy}
  •  (UNDO) svn merge -r 1234:1233 ...
  •  (MERGE)svn merge -r 1233:1234 ...
  • svn merge --dry-run -r 343:344 http://svn.example.com/repos/calc/trunk
有 "C" 狀態處理完後, 用 resolved  將自動產生的檔案刪除, 才能正常 commit:
  • svn resolved filename # 這樣子下就會把自動產生 diff 等的檔案刪除


svn info: 列出現在路徑, 版本編號, 最後一次修改日期 ... 等資訊


路徑: .
URL: https://xxxxxx.googlecode.com/svn/trunk
檔案庫根目錄: https://xxxxxx.googlecode.com/svn
檔案庫 UUID: ddca4ebb-b3bd-15a1-3c9d-3d133f7ee210
修訂版: 5
節點種類: 目錄
排程: 正常
最後更新作者: john
最後修改修訂版: 5
最後修改日期: 2010-11-21 19:33:39 +0800 (日, 21 11月 2010)



svn log: 如果沒輸入參數, 預設會把所有 commit log 都列出來
  • svn log
  • svn log -l 10           僅顯示 10 筆 的登入時間(最新 10筆 Log)
  • svn log -c 10          顯示 版本 10 的時間
svn log -v -c 10     顯示  revision 10 的最詳細 Log  , 包含更改 刪動 的檔案與路徑
例  用mv指令改變了test.c -> test_new.c , 則會顯示
------------------------------------------------------------------------
r15 | tomas | 2010-12-08 16:59:53 +0800 (三, 08 12月 2010) | 1 line
Changed paths:
D /trunk/test.c
A /trunk/test_new.c (from /trunk/test.c:14)



關鍵字的置換: SVN可以通過指令 如下 或者是修改 ~/.subversion/config 檔來達到關鍵字的置換
eg.  svn propset svn:keywords "Date Author "XXXX.c
目前看到的有 Author Date Id Rev URL四種,只要在檔案中有 $Date$ $Author$ $Id$ $Rev$ $URL$ 的字樣,都會在svn commit後自動被換成

如果不是靠指令來生效 另外可以修改家目錄 或 系統目錄下的 .subversion/config
改成
enable-auto-props = yes
*.h = svn:keywords=Author Date Id Rev URL;svn:eol-style=native
*.c = svn:keywords=Author Date Id Rev URL;svn:eol-style=native

這樣一來 所有的 .c .h都會自動換掉關鍵字的部份
[auto-props]
### The format of the entries is:
###   file-name-pattern = propname[=value][;propname[=value]...]
### The file-name-pattern can contain wildcards (such as '*' and
### '?').  All entries which match (case-insensitively) will be
### applied to the file.  Note that auto-props functionality
### must be enabled, which is typically done by setting the
### 'enable-auto-props' option.
# *.c = svn:eol-style=native
# *.cpp = svn:eol-style=native
# *.h = svn:keywords=Author Date Id Rev URL;svn:eol-style=native
# *.dsp = svn:eol-style=CRLF
# *.dsw = svn:eol-style=CRLF
# *.sh = svn:eol-style=native;svn:executable
# *.txt = svn:eol-style=native;svn:keywords=Author Date Id Rev URL;
# *.png = svn:mime-type=image/png
# *.jpg = svn:mime-type=image/jpeg
# Makefile = svn:eol-style=native




沒有留言:

張貼留言

web analytics