| 
									
										
										
										
											2011-03-24 15:26:06 +01:00
										 |  |  | cdist-hacker(7) | 
					
						
							|  |  |  | =============== | 
					
						
							|  |  |  | Nico Schottelius <nico-cdist--@--schottelius.org> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | NAME | 
					
						
							|  |  |  | ---- | 
					
						
							|  |  |  | cdist-hacker - How to get (stuff) into cdist | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | WELCOME | 
					
						
							|  |  |  | ------- | 
					
						
							|  |  |  | Welcome dear hacker! I invite you to a tour of pointers to | 
					
						
							|  |  |  | get into the usable configuration mangament system, cdist. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The first thing to know is probably that cdist is brought to | 
					
						
							|  |  |  | you by people who care about how code looks like and who think | 
					
						
							|  |  |  | twice before merging or implementing a feature: Less features | 
					
						
							|  |  |  | with good usability are far better than the opposite. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-06 22:13:30 +02:00
										 |  |  | REPORTING BUGS | 
					
						
							|  |  |  | -------------- | 
					
						
							|  |  |  | If you believe you've found a bug and verified that it is | 
					
						
							|  |  |  | in the latest version, drop a mail to the cdist mailing list, | 
					
						
							| 
									
										
										
										
											2012-01-17 23:53:58 +01:00
										 |  |  | subject prefixed with "[BUG] " or create an issue on github. | 
					
						
							| 
									
										
										
										
											2011-04-06 22:13:30 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-06 20:21:36 +02:00
										 |  |  | CODING CONVENTIONS (EVERYWHERE) | 
					
						
							|  |  |  | ------------------------------- | 
					
						
							|  |  |  | If something should be better done or needs to fixed, add the word FIXME | 
					
						
							|  |  |  | nearby, so grepping for FIXME gives all positions that need to be fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-17 23:53:58 +01:00
										 |  |  | Indention is 4 spaces (welcome to the python world). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-24 15:26:06 +01:00
										 |  |  | HOW TO SUBMIT STUFF FOR INCLUSION INTO UPSTREAM CDIST | 
					
						
							|  |  |  | ----------------------------------------------------- | 
					
						
							|  |  |  | If you did some cool changes to cdist, which you value as a benefit for | 
					
						
							|  |  |  | everybody using cdist, you're welcome to propose inclusion into upstream. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | There are though some requirements to ensure your changes don't break others | 
					
						
							|  |  |  | work nor kill the authors brain: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-02 08:14:50 +02:00
										 |  |  | - All files should contain the usual header (Author, Copying, etc.) | 
					
						
							| 
									
										
										
										
											2011-03-24 15:26:06 +01:00
										 |  |  | - Code submission must be done via git | 
					
						
							| 
									
										
										
										
											2012-12-09 14:41:50 -08:00
										 |  |  | - Do not add cdist/conf/manifest/init - This file should only be touched in your | 
					
						
							| 
									
										
										
										
											2011-03-24 15:58:47 +01:00
										 |  |  |   private branch! | 
					
						
							| 
									
										
										
										
											2011-04-18 08:35:52 +02:00
										 |  |  | - Code to be included should be branched of the upstream "master" branch | 
					
						
							|  |  |  |    - Exception: Bugfixes to a version branch | 
					
						
							| 
									
										
										
										
											2011-10-04 16:43:13 +02:00
										 |  |  | - On a merge request, always name the branch I should pull from | 
					
						
							| 
									
										
										
										
											2012-01-17 23:53:58 +01:00
										 |  |  | - Always ensure **all** manpages build. Use **./build man** to test. | 
					
						
							| 
									
										
										
										
											2011-04-18 08:35:52 +02:00
										 |  |  | - If you developed more than **one** feature, consider submitting them in | 
					
						
							| 
									
										
										
										
											2013-06-03 18:11:19 +02:00
										 |  |  |   separate branches. This way one feature can already be included, even if | 
					
						
							| 
									
										
										
										
											2011-04-18 08:35:52 +02:00
										 |  |  |   the other needs to be improved. | 
					
						
							| 
									
										
										
										
											2011-03-24 15:26:06 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-09 23:39:47 +01:00
										 |  |  | As soon as your work meets these requirements, write a mail | 
					
						
							|  |  |  | for inclusion to the mailinglist **cdist at cdist -- at -- l.schottelius.org** | 
					
						
							|  |  |  | or open a pull request at http://github.com/telmich/cdist. | 
					
						
							| 
									
										
										
										
											2011-03-24 15:26:06 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HOW TO SUBMIT A NEW TYPE | 
					
						
							|  |  |  | ------------------------ | 
					
						
							| 
									
										
										
										
											2012-02-13 08:49:49 +01:00
										 |  |  | For detailled information about types, see cdist-type(7). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-24 15:26:06 +01:00
										 |  |  | Submitting a type works as described above, with the additional requirement | 
					
						
							|  |  |  | that a corresponding manpage named man.text in asciidoc format with | 
					
						
							|  |  |  | the manpage-name "cdist-type__NAME" is included in the type directory | 
					
						
							| 
									
										
										
										
											2011-04-05 20:38:22 +02:00
										 |  |  | AND asciidoc is able to compile it (i.e. do NOT have to many "=" in the second | 
					
						
							|  |  |  | line). | 
					
						
							| 
									
										
										
										
											2011-03-24 15:26:06 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-13 08:49:49 +01:00
										 |  |  | Warning: Submitting "exec" or "run" types that simply echo their parameter in | 
					
						
							|  |  |  | gencode* will not be accepted, because they are of no use. Every type can output | 
					
						
							|  |  |  | code and thus such a type introduces redundant functionality that is given by | 
					
						
							|  |  |  | core cdist already. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-24 15:26:06 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-04 21:22:18 +01:00
										 |  |  | EXAMPLE GIT WORKFLOW | 
					
						
							|  |  |  | --------------------- | 
					
						
							|  |  |  | The following workflow works fine for most developers: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | -------------------------------------------------------------------------------- | 
					
						
							|  |  |  | # get latest upstream master branch | 
					
						
							|  |  |  | git clone https://github.com/telmich/cdist.git | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # update if already existing | 
					
						
							|  |  |  | cd cdist; git fetch -v; git merge origin/master | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # create a new branch for your feature/bugfix | 
					
						
							|  |  |  | cd cdist # if you haven't done before | 
					
						
							|  |  |  | git checkout -b documentation_cleanup | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # *hack* | 
					
						
							|  |  |  | *hack* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # clone the cdist repository on github if you haven't done so | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # configure your repo to know about your clone (only once) | 
					
						
							|  |  |  | git remote add github git@github.com:YOURUSERNAME/cdist.git | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # push the new branch to github  | 
					
						
							|  |  |  | git push github documentation_cleanup | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # (or everything) | 
					
						
							|  |  |  | git push --mirror github | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # create a pull request at github (use a browser) | 
					
						
							|  |  |  | # *fixthingsbecausequalityassurancefoundissuesinourpatch* | 
					
						
							|  |  |  | *hack* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # push code to github again | 
					
						
							|  |  |  | git push ... # like above | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # add comment that everything should be green now (use a browser) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # go back to master branch | 
					
						
							|  |  |  | git checkout master | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # update master branch that includes your changes now | 
					
						
							|  |  |  | git fetch -v origin | 
					
						
							|  |  |  | git diff master..origin/master | 
					
						
							|  |  |  | git merge origin/master | 
					
						
							|  |  |  | -------------------------------------------------------------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If at any point you want to go back to the original master branch, you can | 
					
						
							|  |  |  | use **git stash** to stash your changes away: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | -------------------------------------------------------------------------------- | 
					
						
							|  |  |  | # assume you are on documentation_cleanup | 
					
						
							|  |  |  | git stash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # change to master and update to most recent upstream version | 
					
						
							|  |  |  | git checkout master | 
					
						
							|  |  |  | git fetch -v origin | 
					
						
							|  |  |  | git merge origin/master | 
					
						
							|  |  |  | -------------------------------------------------------------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-04 21:25:10 +01:00
										 |  |  | Similar when you want to develop another new feature, you go back | 
					
						
							|  |  |  | to the master branch and create another branch based on it: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | -------------------------------------------------------------------------------- | 
					
						
							|  |  |  | # change to master and update to most recent upstream version | 
					
						
							|  |  |  | git checkout master | 
					
						
							|  |  |  | git fetch -v origin | 
					
						
							|  |  |  | git merge origin/master | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | git checkout -b another_feature | 
					
						
							|  |  |  | -------------------------------------------------------------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (you can repeat the code above for as many features as you want to develop | 
					
						
							|  |  |  | in parallel) | 
					
						
							| 
									
										
										
										
											2012-03-09 23:39:47 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-24 15:26:06 +01:00
										 |  |  | SEE ALSO | 
					
						
							|  |  |  | -------- | 
					
						
							|  |  |  | - cdist(7) | 
					
						
							| 
									
										
										
										
											2013-12-04 21:22:18 +01:00
										 |  |  | - git(1) | 
					
						
							|  |  |  | - git-checkout(1) | 
					
						
							|  |  |  | - git-stash(1) | 
					
						
							| 
									
										
										
										
											2011-03-24 15:26:06 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | COPYING | 
					
						
							|  |  |  | ------- | 
					
						
							| 
									
										
										
										
											2013-12-04 21:22:18 +01:00
										 |  |  | Copyright \(C) 2011-2013 Nico Schottelius. Free use of this software is | 
					
						
							| 
									
										
										
										
											2011-03-24 15:26:06 +01:00
										 |  |  | granted under the terms of the GNU General Public License version 3 (GPLv3). |