How to add RefTeX support
[Worg/babel-doc.git] / worg-git.org
blob301661c0374d097bd312b13ca507a3bbd963455e
1 #+STARTUP:    align fold nodlcheck hidestars oddeven lognotestate
2 #+SEQ_TODO:   TODO(t) INPROGRESS(i) WAITING(w@) | DONE(d) CANCELED(c@)
3 #+TITLE:      How to use git to edit Worg files?
4 #+AUTHOR:     Worg people
5 #+TAGS:       Write(w) Update(u) Fix(f) Check(c)
6 #+EMAIL:      bzg AT altern DOT org
7 #+LANGUAGE:   en
8 #+PRIORITIES: A C B
9 #+CATEGORY:   worg
10 #+OPTIONS:    H:3 num:nil toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t TeX:t LaTeX:t skip:nil d:(HIDE) tags:not-in-toc
12 [[file:index.org][{Back to Worg's index}]]
14 * What is git?
16 [[http://git.or.cz][git]] is a fast version control system that lets you collaborate on a project.
17 For details on how to use git, go and read the [[http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html][git tutorial]].  For details on
18 the public git repository, go and read the [[http://repo.or.cz/about.html][about page]] of
19 http://repo.or.cz/.
21 The homepage of the Worg project is here: http://repo.or.cz/w/Worg.git
22 You can get a read-only clone of the repository with the command:
24    : ~$ git clone http://repo.or.cz/r/Worg.git
26 If you want to contribute to Worg, keep reading.
28 * The first time you contribute to Worg
29   :PROPERTIES:
30   :CUSTOM_ID: contribute-to-worg
31   :END:
34 1. If you don't have a SSH-key, [[file:worg-git-ssh-key.org][create one]].
36 2. Register a [[http://repo.or.cz/reguser.cgi][new account]] on the git public repository.
38 3. Drop an email to [[mailto:bzg%20AT%20altern%20DOT%20org][Bastien]] mentioning your username on repo.or.cz
40 4. Install git on your system.
42 5. Clone the project somewhere in a working directory:
44    : ~$ git clone git+ssh://repo.or.cz/srv/git/Worg.git
46 6. Go to the newly created =Worg/= directory and edit some files.
48 7. If you created files, add them to the git index:
50    : ~$ git add *.org
52 8. Commit changes with the appropriate ChangeLog:
54   : ~$ git commit -a -m "My changelog"
56 9. Push your change to Worg:
58   : ~$ git push
60   This stage didn't work for me, instead I had to add a remote like
61   so:
63   : ~$ git remote add public git+ssh://<UserName>@repo.or.cz/srv/git/Worg.git
65   Where <UserName> is the username you supplied repo.or.cz.  Then do
66   a:
68   : ~$ git push public
70 * The second time you contribute to Worg
72 1. Go to your =Worg/= directory.
74 2. Be sure to "pull" the last version of the repository.
76 3. Make some changes.
78 4. Commit your changes on your local repository:
80    : ~$ git commit -a -m "My ChangeLog"
82 5. Push your change on the remote repository
84    : ~$ git push
86 * Getting organized
88 The Worg TODO file is =worg-todo.org=.  If you are a Worg zealot, maybe you
89 want to add this file to the list of your agenda files.  For example, here
90 is my =org-agenda-files= variable:
92   : (setq org-agenda-files '("~/org/bzg.org" "~/git/Worg/worg-todo.org")
94 I have an agenda custom command for checking tasks that are assigned to me:
96   : (org-add-agenda-custom-command '("W" tags "Owner=\"Bastien\""))
98 The next time someone assigns a task for me, it will appear in my Worg
99 agenda view.
101 * Register your changes under your name
103 Information regarding your name can be stored in your ~/.gitconfig file.
105 Edit it like this:
107 : [user]
108 :        name = Your Name Goes Here
109 :        email = you@yourdomain.example.com
111 Now your changes will be filed under your name.
113 # I'm not sure this is useful at all:
115 * Dealing with line endings
117 Unix, Windows and Mac all have different conventions for marking
118 the end of a line. This might lead to problems when editing the
119 same file across platforms. Github advises Linux users to
120 automatically convert all external files to LF on committing (see
121 [[http://help.github.com/dealing-with-lineendings]]) by setting:
122 : $ git config --global core.autocrlf input
123 For Worg, this is the wrong solution, since there are already
124 files with both end of line conventions in the repository.
125 Instead tell git locally not to convert files by setting:
126 : $ git config core.autocrlf false
127 Of course you have to be careful not to save Windows files as
128 Unix files or vice versa, since this would lead to large and
129 confusing diffs. This should not be a problem with Worg as
130   - one rarely edits other people's files anyway, and
131   - Emacs can deal with end of line conventions transparently.
133 * How Worg publishes itself as HTML?
135   The server behind http://orgmode.org website takes care of publishing
136   Worg into =HTML=.  This is done in two steps: the first step is to
137   pull the Worg directly on the server, the second one is to publish the
138   last version of Worg on the website.  Both steps are cron'ed every
139   hour, the first one at 1:00, 2:00, etc. and the second one at 1:30,
140   2:30.
142   So for example, if you push a change in Worg at 0:58am, this will be
143   pulled on the server at 1am and will appear on the website at 1:30am.
145   Here is the detailed recipe:
147   1. Configure your =~/.emacs.el= to know about your publishing projects
148      (more information on publishing [[http://www.gnu.org/software/emacs/manual/html_node/org/Publishing.html][here]] and [[file:org-tutorials/org-publish-html-tutorial.org][here]])
150   2. Use =(setq org-export-htmlize-output-type 'css)= in ~/.emacs.el
152      (Do =C-h v org-export-htmlize-output-type= for more information
153      about this.  Also =C-h v org-export-htmlize-generate-css= might
154      help.)
156   3. Create =~/bin/pull-worg.sh= containing this script:
158      #+BEGIN_SRC sh-mode
159      #!/bin/bash
161      # unless this is already done elsewhere:
162      export PATH=$PATH:/home/you/bin/
164      # go to the place where you pull Worg
165      cd /home/you/git/Worg/;
167      # pull Worg
168      /home/you/bin/git-pull
169      #+END_SRC
171   4. Create =~/bin/pull-worg.sh= containing this script:
173      #+BEGIN_SRC sh-mode
174      #!/bin/bash
176      # Adapt it to point at your emacs executable
177      /home/you/bin/emacs23 --batch -l ~/.emacs.el -f org-publish-all
178      #+end_src
180   5. Cron the two scripts to run every hour, not at the same time
182      #+BEGIN_SRC generic-mode
183      0 * * * * /home/you/bin/pull-worg.sh >> /dev/null 2>&1
184      30 * * * * /home/you/bin/publish-worg.sh >> /dev/null 2>&1
185      #+END_SRC
187   6. Sit and do something else while your Org repository is
188      automagically exported to HTML
189 * COMMENT Anonymous editing through the "mob" user/branch
191 If you don't want to register a new account on =repo.or.gz= but still
192 want to suggest modifications on Worg, you can do this by editing the
193 "mob" branch of Worg.  For details about the =mob= user, check [[http://repo.or.cz/mob.html][this
194 webpage]] on repo.or.cz
196 This branch is usually empty, since interesting changes are quickly
197 merged into the master branch.  But it is important to make sure that
198 you pull all changes in any existing =mob= branch before trying to push
199 yours.
201 1. Clone the Worg project as the =mob= user:
203    : ~$ git clone git+ssh://mob@repo.or.cz/srv/git/Worg.git
205 2. Check out the "mob" branch to avoid conflicts between the =mob=
206    branch that you will soon create and any existing =mob= branch:
208    : ~$ git checkout origin/mob
210    You should get this warning:
212    : Note: moving to "origin/mob" which isn't a local branch
213    : If you want to create a new branch from this checkout, you may do so
214    : now or later) by using -b with the checkout command again. Example:
215    : git checkout -b <new_branch_name>
217    Don't worry.
219 3. Create a new branch named =mob= from this checkout:
221    : ~$ git checkout -b mob
223 4. Edit the files, add new files (=git-add=) and commit (=git-commit=)
224    them as usual.
226 5. Push the =mob= branch into the Worg remote directory:
228    : ~$ git push origin mob
230 You're done!
232 # FIXME:
234 # What if two people edit Worg at the same time?
235 # bzg [2009-07-15 mer]: No problem.  Just try to push and resolve
236 # conflicts if any.
238 # Can I have private sections in Worg?
239 # bzg [2009-07-15 mer]: Sure.  Just add an :AUTHOR: property in
240 # the property drawer.