Attachment 'stella-talk.txt'

Download

   1 |Sage development in a (big) nutshell| 
   2 |------------------------------------|
   3 
   4 Fact: sage is BIG!
   5 
   6 	The usual install takes nearly 6G and there are hundreds of people
   7 	contributing to its development.
   8 
   9 Need tools to keep development under control
  10 
  11 	* *Git*  a (very good) Version Control System
  12 	* *Trac* a web based issue tracker
  13 
  14 
  15 |GIT - the stupid content tracker|
  16 |--------------------------------|
  17 
  18 - What is it for?
  19 
  20 	In layman terms it keeps track of all the different versions of your
  21 	files (including history and tests) and allows you to jump in between them.
  22 	
  23 	It lets you share your files with other authors and keeps all the
  24 	modifications distinct and traceable
  25 
  26 	It is used in the development of many pieces of software 
  27 
  28 	Works well with all text files: try it to maintain your LaTeX projects!!
  29 	
  30 - How does it work? (really abridged version)
  31 	
  32 	The versions of your files are organized in a tree structure
  33 
  34 		Nodes are called *commits*
  35 
  36 		Each node belong to a *branch*
  37 		
  38 		The current commit is called *HEAD*
  39 
  40 	- Example:
  41 
  42 	$ cd /tmp
  43 	$ mkdir git-example
  44 	$ cd git-example
  45 	$ git init
  46 	Initialized empty Git repository in /tmp/git-example/.git/
  47 	$ git status
  48 	On branch master
  49 
  50 	Initial commit
  51 
  52 	nothing to commit (create/copy files and use "git add" to track)
  53 	$ echo "Some text" > a_file
  54 	$ git status
  55 	On branch master
  56 
  57 	Initial commit
  58 	
  59 	Untracked files:
  60 	  (use "git add <file>..." to include in what will be committed)
  61 	
  62 	        a_file
  63 	
  64 	nothing added to commit but untracked files present (use "git add" to track)
  65 	
  66 	$ git add a_file
  67 	$ git status 
  68 	On branch master
  69 
  70 	Initial commit
  71 
  72 	Changes to be committed:
  73 	  (use "git rm --cached <file>..." to unstage)
  74 
  75         	new file:   a_file
  76 
  77 	$ git commit -m "This is the first commit (lets call it A)"
  78 	[master (root-commit) 9757e8b] This is the first commit (lets call it A)
  79 	 1 file changed, 1 insertion(+)
  80  	 create mode 100644 a_file
  81 
  82 	The situation righ now is this
  83 	
  84 		master ---- *A* --
  85 
  86 	$ echo "Some more text" >> a_file
  87 	$ echo "Even more text" > another_file
  88 	$ git status
  89 	On branch master
  90 	Changes not staged for commit:
  91 	  (use "git add <file>..." to update what will be committed)
  92 	  (use "git checkout -- <file>..." to discard changes in working directory)
  93 	
  94 	        modified:   a_file
  95 	
  96 	Untracked files:
  97 	  (use "git add <file>..." to include in what will be committed)
  98 	
  99 	        another_file
 100 	
 101 	no changes added to commit (use "git add" and/or "git commit -a")
 102 	
 103 	$ git add a_file another_file
 104 	$ git commit -m "Second commit (This is B)"
 105 	[master 2da3dee] Second commit (This is B)
 106 	 2 files changed, 2 insertions(+)
 107 	 create mode 100644 another_file
 108 
 109 	Now the situation is this
 110 		
 111 		master ---- A ---- *B* --
 112 
 113 	$ git checkout -b another_branch
 114 	Switched to a new branch 'another_branch'
 115 	$ echo "Third text" >> a_file
 116 	$ git commit -a -m "Third commit (This is C)"
 117 	[another_branch 212e815] Third commit (This is C)
 118 	 1 file changed, 1 insertion(+)
 119 
 120 	Now the situation is
 121 
 122 		master ---- A ---- B
 123 				    \
 124 		another_branch	     *C* --
 125 
 126 	$ echo  "Once more" >> a_file
 127 	$ git commit -a -m "This commit is D"
 128 	[another_branch 5073aeb] This commit is D
 129 	 1 file changed, 1 insertion(+)
 130 
 131 	Now the situation is
 132 
 133 		master ---- A ---- B 
 134 				    \
 135 		another_branch	     C ---- *D* --
 136 
 137 	$ git checkout master
 138 	$ echo "Yet some more text" >> another_file
 139 	$ git commit -a -m "This commit is E"
 140 	[master b6c0727] This commit is E
 141 	 1 file changed, 1 insertion(+)
 142 
 143 	Now the situation is
 144 
 145 		master ---- A ---- B ---- *E* --
 146 				    \
 147 		another_branch	     C ---- D
 148 
 149 	
 150 	$ git merge another_branch
 151 	Merge made by the 'recursive' strategy.
 152 	 a_file | 2 ++
 153 	 1 file changed, 2 insertions(+)
 154 	
 155 	
 156 	Finally the situation is
 157 
 158 		master ---- A ---- B ---- E ---- *F* --
 159 				    \		 /
 160 		another_branch	     C ---- D --
 161 
 162 		
 163 
 164 |Trac Server|
 165 |-----------|
 166 - What is it for?
 167 	
 168 	It is used to centralize and organize sage development
 169 
 170 	It provides:
 171 		
 172 		bug tracking
 173 		
 174 		new feature development
 175 
 176 		peer review
 177 
 178 - How does it work?
 179 	
 180 	Each task (bug report, new feature, etc) is assigned a *ticket*
 181 
 182 	Each ticket is reviewed before being accepted into sage 
 183 
 184 
 185 - How do I get an account?
 186 	  
 187 	Write an e-mail to *[email protected]* containing:
 188 	
 189 		your full name
 190 		preferred username
 191 		contact email
 192 		the reason for needing a trac account
 193 
 194 - How do I set up trac to know my computer?
 195 
 196 	- instal git-trac (not really needed but makes life easyer)
 197 	$ git clone https://github.com/sagemath/git-trac-command.git
 198 	$ cd git-trac-command
 199 	$ sudo python setup.py install
 200 	
 201 	- setup sage
 202 	$ cd /path/to/your/sage/install
 203 	$ git trac config --user USERNAME --pass 'PASSWORD'
 204 
 205 	- upload your SSH public key to the trac server:
 206 
 207 	$ ssh-keygen
 208 
 209 	Go to http://trac.sagemath.org
 210 	Log in with your trac username/password
 211 	Click on "Preferences"
 212 	Go to the "SSH Keys" tab
 213 	Paste the content of your public key file (e.g. ~/.ssh/id_rsa.pub)
 214 	Click on "Save changes"
 215 
 216 	- test it out
 217 
 218 	$ ssh [email protected] info
 219 
 220 
 221 |Working example|
 222 |---------------|
 223 
 224 - CluserSeed does not know how to compute d-vectors
 225 
 226 	sage: B = matrix([[0,-1],[1,0]])
 227 	sage: S = ClusterSeed(B)
 228 
 229 	sage: S?
 230 
 231 	- Find out where it is defined from  "String form"
 232 
 233 	- Have a look at the file
 234 
 235 	$ vim src/sage/combinat/cluster_algebra_quiver/cluster_seed.py
 236 
 237 	- Create new branch and a new ticket
 238 
 239 	$ git trac create "Add d-vectors"
 240 	
 241 	- start doing edits
 242 
 243 	$ vim src/sage/combinat/cluster_algebra_quiver/cluster_seed.py
 244 
 245 	- attach file to keep track of results (caveat: this may give problems
 246 	  when loading modules or doing comparisons)
 247 	
 248 	sage: cd /opt/sage/src/sage/combinat/cluster_algebra_quiver/
 249 	sage: %attach cluster_seed.py
 250 
 251 	607G 
 252 	:read ~/sage-days/code-1.py
 253 
 254 	- Test 
 255 
 256 	add documentation
 257 	:read ~/sage-days/code-1.5.py
 258 
 259 	- Save and commit
 260 
 261 	$ git commit -a -m "Add d-vector to ClusterSeed"
 262 	
 263 	- TEST IT
 264 
 265 	$ sage -b -t src/sage/combinat/cluster_algebra_quiver/cluster_seed.py
 266 
 267 	- Push changes to trac server
 268 
 269 	$ git trac push
 270 
 271 	- Play with ticket
 272 	
 273 	$ git trac browse
 274 
 275 	- More edits
 276 	
 277 	$ vim src/sage/combinat/cluster_algebra_quiver/cluster_seed.py
 278 
 279 	625G
 280 	:read ~/sage-days/code-2.py
 281 
 282 	$ git commit -a -m "Add d-matrix to ClusterSeed"
 283 	$ sage -b -t src/sage/combinat/cluster_algebra_quiver/cluster_seed.py
 284 	$ git trac push
 285 	
 286 	- Open it up for review
 287 	$ git trac browse
 288 
 289 	-------------------------------------------------------------
 290 	$ git checkout develop
 291 
 292 	- Review
 293 
 294 	$ git trac checkout #ticket

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.

You are not allowed to attach a file to this page.