国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

CVS使用探討

2024-07-21 02:35:58
字體:
來源:轉載
供稿:網友

  作者: lhl
  
  假設:
  cvsroot user:cvsroot home=/home2/cvsroot/cvsroot
  cvs group:cvs
  
  1:安全
  
  #groupadd cvs
  #mkdir /home2/cvsroot#注重:/home2/cvsroot為root所有
  #useradd -g cvs -G cvs -d /home2/cvsroot/cvsroot cvsroot
  
  /***未經實驗**/
  #mv /usr/bin/cvs /usr/bin/cvs.real
  #cat > /usr/bin/cvs
  #!/bin/sh
  umask 2# Or whatever your site standard is.
  exec /usr/bin/cvs.real ${1+"$@"}
  ^D
  /*************/
  
  2:多倉庫
  
  注重,我們用cvsroot僅僅是用來治理,所以,不要在它$HOME下面創建任何倉庫
  另外,cvsroot用戶的初始環境不應該包含非空的$CVSROOT.
  使用cvsroot來進行的任何治理工作都指明CVSROOT是一個好的習慣.
  
  OK,開始給單個項目建倉庫
  
  假設有兩個項目,PRoject1,project2,希望單獨存放,便于治理
  
  #mkdir /home2/cvsroot/pro1
  #mkdir /home2/cvsroot/pro2
  #chown cvsroot.cvs /home2/cvsroot/pro1
  #chown cvsroot.cvs /home2/cvsroot/pro2
  #chmod 2775 /home2/cvsroot/pro1
  #chmod 2775 /home2/cvsroot/pro2
  (更高的安全要求則$chmod 2770 /home2/cvsroot/cvsroot/pro1)
  
  OK,開始建立倉庫
  
  #su - cvsroot
  $cvs -d /home2/cvsroot/pro1 init
  $cvs -d /home2/cvsroot/pro2 init
  $chmod 2775 /home2/cvsroot/pro1
  $chmod 2775 /home2/cvsroot/pro2
  
  修改啟動文件
  
  service cvspserver
  {
  disable = no
  flags= REUSE
  socket_type= stream
  wait= no
  user= root
  bind= 192.168.0.1
  only_from= 192.168.0.0/24
  server= /usr/bin/cvs
  server_args= -f --allow-root=/home2/cvsroot/pro1 --allow-root=/home2/cvsroot/pro2 pserver
  log_on_failure += USERID
  }
  
  /********技巧*************/
  
  由于xinetd的server_args長度限制,當你想運行很多的單個倉庫的時候,可以這么做,
  
  #vi /etc/xinetd.d/cvspserver
  service cvspserver
  {
  disable= no
  flags= REUSE
  socket_type= stream
  wait= no
  user= root
  bind= 192.168.0.1
  only_from= 192.168.0.1.0/24
  server= /home2/cvsroot/cvs.run
  log_on_failure += USERID
  }
  
  :wq
  
  然后寫腳本/home2/cvsroot/cvs.run
  
  #vi /home2/cvsroot/cvs.run
  #!/bin/bash
  /usr/bin/cvs -f /
  --allow-root=/home2/cvsroot/pro1 /
  --allow-root=/home2/cvsroot/pro2 /
  --allow-root=/home2/cvsroot/pro3 /
  --allow-root=/home2/cvsroot/pro4 /
  --allow-root=/home2/cvsroot/pro5 /
  --allow-root=/home2/cvsroot/pro6 /
  pserver
  
  :wq
  
  #chmod +x /home2/cvsroot/cvs.run
  
  #service xinetd restart
  
  OK!
  
  /*************************/
  
  修改不同倉庫的策略
  
  #su - cvsroot
  
  $eXPort CVSROOT=/home2/cvsroot/pro1
  $cvs co CVSROOT
  $cd CVSROOT
  $vi config
  # Set this to "no" if pserver shouldn't check system users/passWords
  SystemAuth=no
  
  # Put CVS lock files in this Directory rather than directly in the repository.
  LockDir=/var/cache/cvs/pro1
  
  # Set `TopLevelAdmin' to `yes' to create a CVS directory at the top
  # level of the new working directory when using the `cvs checkout'
  # command.
  #TopLevelAdmin=no
  
  # Set `LogHistory' to `all' or `TOFEWGCMAR' to log all transactions to the
  # history file, or a subset as needed (ie `TMAR' logs all write Operations)
  LogHistory=TOFEWGCMAR
  
  :wq
  
  $vi loginfo
  ALL (echo %{sVv}; cat) /usr/local/viewcvs-0.9.2/loginfo-handler#SQL checkin
  
  :wq
  
  $cvs commit -m "auth change,log change"
  
  OK,既然不使用系統用戶驗證,那么我們來創建用戶
  /************/
  
  不使用系統帳號的原因是充分保證安全,避免系統帳號直接刪除倉庫里的文件.
  雖然麻煩,但是很有必要,因為無法保證每一個程序員都對cvs操作很有經驗.
  
  在這種情況下,為每一個工程各建一個等效系統用戶,此用戶應該是cvs組的成員.
  不必有shell.
  (也可以為所有的項目建一個等效用戶,私有的cvs Server完全可以這么做,甚至可以
  直接使用cvsroot,呵呵,就是比較危險而已)
  
  #adduser -g cvs -G cvs -s /bin/false -d /home2/cvsroot/pro1 -M cvspro1
  
  /************/
  
  創建一個LockDir(選擇/var/cache是因為某些系統放在/var/lock下面有問題)
  #mkdir /var/cache/cvs
  #chown cvsroot.cvs /var/cache/cvs
  #chmod 2775 /var/cache/cvs
  
  #mkdir /var/cache/cvs/pro1
  #chown cvspro1.cvs /var/cache/cvs/pro1
  #chmod 2775 /var/cache/cvs/pro1
  
  創建用戶
  
  先清除環境
  $export CVSROOT=
  $cd ~cvsroot
  $rm -rf CVSROOT
  
  直接切換到pro1的倉庫下
  
  $cd /home2/cvsroot/pro1
  $cd CVSROOT
  
  
  創建用戶hleil
  
  $htpasswd -c passwd hleil
  
  修改passwd成cvs的格式
  
  $vi passwd
  hleil:svcsdasdcvjn:cvspro1
  
  :wq
  
  加入writers組
  
  $echo hleil >>writers
  
  /*****這里有一個問題**********/
  
  假如用戶hleil需要writers權限,那么,他絕對不可以出現在readers組中.
  writers,readers,passwd的文件尾空行是必要的.
  等效系統帳號假如不存在,將導致access failed.
  cvs帳號盡量沒有對應的系統帳號,假如有,確保它們的passwd不同.
  
  /******************************/
  
  OK了!

  
  項目pro2同理.
  
  
  3:夠建模塊化的工程
  
  關于模塊化,大家掛在口邊也不是一天兩天了,這里指的是項目的模塊化,不是指具體的程序.
  
  正常的項目開始具體實施之前,必定做好了系統分析和結構設計,當然,像打印"Hello World!"
  這樣的"項目"或許不用進行系統分析吧:P,所以也不用麻煩我們辛勞構建的cvs.
  
  軟件設計完成之后,各個模塊應該也就出來了,在實施之前,我們需要考慮用cvs貫徹設計結果.
  
  cvs的模塊不必細化到瘋狂的程度,大致按照功能劃分并且兼顧工作組就可以了.同一模塊必需
  僅有單一工作組負責.
  
  確定模塊之后,我們來建立模塊.
  
  #su - hleil
  $export CVSROOT=:pserver:hleil@192.168.0.1:/home2/cvsroot/pro1
  $cvs login
  $cvs co CVSROOT
  
  假設有這樣的目錄結構,
  pro01
  libs
  libs/01
  libs/02
  每個目錄下面都有一個初始化文件init(方便import)
  
  我們可以這樣定義modules,
  
  $vi CVSROOT/modules
  pro01pro01 & libs
  libs-01-d 01libs/01
  libs-02 -d 02libs/02
  libs-a libs-01 libs-02
  
  :wq
  
  $cvs commit -m "init modules"
  
  倒入目錄結構,
  
  $cvs import -m "init checkin" pro01 init start
  
  現在,你的三個小組可以分別工作于pro01,libs-01,libs-02,全部程序只要co pro01就行了.
  
  簡單吧:P
  
  4:克隆
  
  構建模塊
  
  $export CVSROOT=remote
  $cvs login
  $cvs co CVSROOT/modules
  $cvs logout
  $mv CVSROOT/modules .
  $rm -rf CVSROOT
  $export CVSROOT=local
  $cvs login
  $cvs co CVSROOT/modules
  $cp modules CVSROOT/modules
  $cvs commit -m "clone init modules"
  
  研究目錄結構
  所有的 -a 定義的模塊不需要checkout
  $sed "/#/d" modules > modules.tmp
  $sed "/^$/d" modules.tmp > modules.tmp2
  $sed s/" "*/" "/g modules.tmp2 > modules.tmp
  $cat modules.tmpsed /-a/d >mymodules
  
  仔細研究目錄結構,以便co不含有垃圾的代碼
  
  $cp mymodules co-list
  
  編輯co-list,不需要的注釋,OK
  
  $sed "/#/d" co-list > co-list.tmp
  $cut -d " " -f 1 co-list.tmp >co-list
  
  OK,此時

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 襄樊市| 漠河县| 高唐县| 晋中市| 正定县| 郯城县| 淳安县| 乾安县| 曲松县| 仪陇县| 德清县| 城固县| 孝义市| 顺平县| 平和县| 黔西| 赤峰市| 娄底市| 湖南省| 会泽县| 收藏| 突泉县| 简阳市| 聊城市| 临泽县| 贵溪市| 建湖县| 永兴县| 耿马| 台中市| 闸北区| 宜州市| 陕西省| 临猗县| 分宜县| 全椒县| 明溪县| 南开区| 浦江县| 南华县| 东港市|