Using SVN to maintain your code

Step by step, shows how to maintain your code in LHAASO SVN

LHAASO software 结构

  • LHAASO软件的目录结构和对应开发者,参见 LhSoftPerson
  • 你也可以点击该连接 http://svn.lhaaso.ihep.ac.cn/LodeStar/ 查看LHAASO软件的目录结构
    • 其中的offline包含了数据分析所需要的所有package ( LhPackage
    • offline中包含三个文件夹,trunck,tags,branches
      • trunk中存储了LhSoft的整个目录结构,和所有package的多个历史版本,是pacakge阶段性发展到一定程度后由开发者copy过来的。
      • tags是trunk目录结构在某一个时间的快照,这个快照中的pacakge之间经过了自洽性检验,整个目录结构是一个可以发布的LhSoft版本。
      • branches和trunk是相同的功能,目前还没有使用的计划

The command used by LhSoft code developer

1. LhSoft 的官方SVN空间和私人SVN空间

  • LHAASO合作组建了了两个SVN空间,分别为私人空间People,内部目录结构有个人决定,和官方空间LodeStar,内部目录结构由官方确定
  • People为大家提供个人自由的使用空间,记录个人所设计package的日常更新。
  • package阶段性成熟后,copy到官方空间LodeStar/offline/trunk指定目录下(下面详述)
  • LodeStar /offline/trunk目录树是完整的LhSoft目录结构,但是所有最新版本合并起来并不一定是可以运行的LhSoft版本。
  • LodeStar /offline/tags目录用于存储从trunk中拷贝过来,经过验证可以运行的全部目录结构(只有管理员有权限),用于预发布和发布

2. 使用个人SVN空间追踪package更新

  • 作为一个package的设计/维护者,例如zhang,如何在svn的帮助下设计和发布你的pacakge ( LhPackage
  • 假设zhang将要设计一个名为RawEvent的pacakge。注意设计pacakge名字的时候,应遵守以下约定,以利于合作组内交流以及使用者辨认其功能。
    • The name of package should be easy recognized, such as Km2aSimulation, or the easy recognized abbreviation, such as Km2aSim
    • the service package should be xxxxxxSvc
    • the tool package should be xxxxxxTool
  • 和manager沟通,确定RawEvent存放位置,例如:LodeStar/offline/trunk/DataModel/RawEvent/
  • 如果zhang还没有svn账号,向manager索要一个svn账号,manager同时为zhang建立和打开如下文件夹的读写权限:
    • LodeStar /offline/trunk/DataModel/RawEvent/
    • People/zhang/
  • 登录lxslc6.ihep.ac.cn,开始设计你的RawEvent
    • 使用 cmt create RawEvent v0.0 产生一个RawEvent的基本目录,为了使用cmt,可以source /afs/ihep.ac.cn/soft/LHAASO/LodeStar-SLC6/Pre-Release/L19-Pre1_v1r1/setup.sh
    • 或者你已经有了RawEvent Package, 在执行下一步import之前,将RawEvent中make产生的所有文件和文件夹清理干净: cmt make clean. 这些二次产生的文件不应上传到svn上,造成svn负担。
  • 在RawEvent上级目录中执行 svn import ./RawEvent http://svn.lhaaso.ihep.ac.cn/People/zhang/RawEvent/. -m" first time import my RawEvent to SVN"
  • 不过此时的./RawEvent不是一个和svn建立的联系的文件夹,你需要删除./RawEvent
  • 然后参照例子或者说明书开始设计RawEvent,阅读说明书13.3节“coding convention”, 如何规范化程序编写。
  • 在设计程序的过程中的任何时候,你可以使用以下命令将你编写的新文件备案给svn, 注意避免将任何编译过程中产生的任何二次文件备案给svn
    • svn add src/xxxxx.cc
    • 对于不小心备案的文件,可以使用svn delete xxx清除备案。
  • 在每天工作结束后,可以使用以下命令将所有备案的文件上传到svn上:
    • 在RawEvent目录下: svn commit -m "say somthing to this upload"
  • 第二天开始工作时,可以继续在原来的RawEvent目录中继续你的工作,也可以在一个新的目录中:

3. 将个人SVN空间内的package,copy到官方空间中去

  • 在某一个时刻,People中的RawEvent可以对外使用,准备放到LodeStar中去,可以使用以下命令进行发布( 方法来自张恒英,黄文昊):
  • 在一个临时文件夹中,创建source和target两个目录
  • 在目录source中,svn co http://svn.lhaaso.ihep.ac.cn/People/zhang/RawEvent/ 并记住checkout的版本号例如113
  • 在目录target中,svn co http://svn.lhaaso.ihep.ac.cn/LodeStar/offline/trunk/DataModel/RawEvent/; 记住本版号,例如108
  • 将source中的RawEvent merge到target中的RawEvent中去:
    • 在target/RawEvent目录中
    • svn merge -r 108:113 ../../source/RawEvent
  • 在target/RawEvent目录中,上传修改: svn ci -m" new version"
  • 发布下一个版本时,再次重复执行上述命令。

The command used by user

  1. Check out packages from LodeStar SVN, same address to view on web
  2. Check out packages from user SVN, same address to view on web
  3. Make a tag and checkout a tag

The command used by manager of SVN

  1. Create an account on the SVN reponsitory: people
    • logon to lxslc6.ihep.ac.cn
    • logon to root@202.122.38.82
    • cd /var/www/svn
    • htpasswd passwdpeople zhucg //add account zhucg into password file passwdpeople.
    • vi authpeople.conf //add the read/write for the account.
  2. Config SVN to prevent check in .o, .make, .so, .a, .in, etc. files into SVN. Now only skip .o, .so, .a files.

-- Chengguang ZHU - 2019-12-18

Comments


Topic attachments
I Attachment History Action Size Date Who Comment
Microsoft Excel Spreadsheetxlsx Structure.xlsx r2 r1 manage 15.2 K 2019-12-25 - 16:00 ZhuChengguang  
Microsoft Word filedocx svn_meger_and_commit.docx r1 manage 101.6 K 2020-01-07 - 16:09 ZhuChengguang  
Edit | Attach | Watch | Print version | History: r21 | r13 < r12 < r11 < r10 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r11 - 2020-04-10 - ZhuChengguang
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback