- General Information
- Editing via the Web Interface
- Working on a Checkout of the Git Repository
- New Year Procedure
Some general hints first; they may sound very familiar from other software projects:
- Do independent changes separately: don't aggregate changes that don't belong together.
- Install your changes early and often: don't hold your contribution back until you think it is perfect.
Please comment every change you make, however small. Keep all comments short and to the point, e.g. "Fixed typo." or "Added link to main page.".
Feel free to ask questions or report problems on every page's discussion sub-page. They're reachable from the Discussion link on the top of the page, which will, when selected, create a new page if there isn't one yet.
Every page on the site is editable, like in a wiki. Feel free to join in, but we do have some simple requests. Please try to match the tone of your topics and edits with the existing topics. If we all pull in the same direction these pages will be more useful for everyone, especially for our own use.
If you don't know which pages to work on, please have a look at those tagged with open issue documentation. Typically, you'll have to look at the pages' source code (Markdown) to see which parts the tag applies to.
When you commit changes, either using the web interface or checking them in
into the repository; they won't become visible on
http://www.gnu.org/software/hurd/ immediately, but on
http://darnassus.sceen.net/~hurd-web/ instead. The former set of pages,
the official GNU Hurd web appearance, will be updated periodically (but
manually) from the latter one, where every edit is visible immediately. This
is so that we have a chance to have the pages make fit for appearance on
www.gnu.org, but you are nevertheless able to work on all pages
When you have found a page you want to work on, just follow the Edit link at the top of the page. When doing this for the first time, this will first redirect you to a page where you will have to create an account. After logging in, you can edit pages.
What is being described here is only the basics. The checkouts are completely valid Git repositories and can (and want to) be treated as such. Consult the Git documentation about how to shuffle around with branches, how to rename files, how to add arbitrary data files, and so on.
Before attempting any bigger editing work (to which you are sincerely invited!) be sure to check the involved pages' Discussion sub-pages (linked from the pages' header line) and in there take down (short) notes about the editing endeavours you're going to undertake. Doing so should help to (a) avoid double work and (b) avoid merge conflicts if you install your changes into the main repository.
You'll want to install ikiwiki in order to locally render the pages you're editing.
$ apt-get install ikiwiki libyaml-syck-perl markdown libsearch-xapian-perl texinfo
First, let's make sure that you're properly identifying yourself towards Git.
$ git var GIT_AUTHOR_IDENT Thomas Schwinge <email@example.com> 1186743435 +0200
If it doesn't look akin to that for you, you'd better adjust either your
$ git config --global user.name 'Your Name' $ git config --global user.email firstname.lastname@example.org
To be able to do a checkout from which you can later directly push your changes back into the master repository, you need a shell account on darnassus and need to be a member of the hurd-web group. (It's also recommended that you set up your local SSH configuration as advised on that page.) If you have an account on there:
$ git clone darnassus:~hurd-web/hurd-web.git [dest]
If you don't have such an account or don't have your login data handy, you can still get pages the read-only way, see the Clone URLs given on http://darnassus.sceen.net/cgit/hurd-web.git:
$ git clone git://darnassus.sceen.net/hurd-web.git [dest]
$ git clone http://darnassus.sceen.net/cgit/hurd-web.git [dest]
Or, you can check out the Savannah repository:
$ git clone git://git.savannah.gnu.org/hurd/web.git [dest]
$ git clone http://git.savannah.gnu.org/cgit/hurd/web.git [dest]
See http://git.savannah.gnu.org/cgit/hurd/web.git. If you're using the
protocol, and you're a member of the Hurd's Savannah group, you can
also push to this repository. The disadvantage of pushing to the Savannah
repository is that there is no ikiwiki installation where the pushed
changes are immediatelly rendered and viewable by everyone.
For all cases: if you omit
[dest] it will default to
hurd-web for the
darnassus repository, or
web for a Savannah clone.
Later, you can just
cd into the
web directory, and, for
git pull to get hold of the latest changes others have been
installing in the mean time.
But now: work on these files.
$ cd hurd-web/ $ emacs hurd/ng.mdwn $ # Check what you've done. $ git diff hurd/ng.mdwn $ git commit hurd/ng.mdwn [...] $ # Add a new file. $ emacs microkernel/mach/issues.mdwn $ git add microkernel/mach/issues.mdwn $ git commit microkernel/mach/issues.mdwn [...] $ [...]
Remember that at this stage your commits have only been installed into your personal working copy. You'll finally have to explicitly install your changes into the master repository, see below.
You can also locally get the whole set of pages rendered to HTML:
$ hurd-web/render_locally [...] scanning contributing/web_pages.mdwn rendering contributing/web_pages.mdwn Now open `hurd-web.rendered/index.html' to browse the pages.
First, generate the wrapper. Unless the configuration is changed, this has to be done only once.
$ hurd-web/render_locally --w3m-wrapper successfully generated /home/thomas/.ikiwiki/wrappers/hurd-web.cgi
Render the pages:
$ hurd-web/render_locally --w3m [...] scanning contributing/web_pages.mdwn rendering contributing/web_pages.mdwn Now open `hurd-web.rendered.w3m/index.html' to browse the pages.
$ w3m hurd-web.rendered.w3m/index.html
Or, to directly create a new page:
$ w3m 'file:///$LIB/ikiwiki-w3m.cgi/hurd-web.cgi?page=open_issues/gnumach_has_a_bug&do=create'
Note that the changes you do via
w3m will not be committed to the VCS (see
render locally for details.)
If you like what you've done, then it's now time to publish your changes.
If you can push directly into the master repository this is really simple:
$ git push updating 'refs/heads/master' from d83f93f34b69633ca1afb588001df7addd708faf to c0b8171de9c69e029bf998aafd4682105c217eb8 Generating pack... [...] Updating web pages. This may up to a few minutes at the utmost...
If you can't do that, then first prepare to publish your changes:
$ git format-patch -M -B origin 0001-Be-a-bit-more-expressive.patch [...]
See through the generated
*.patch files and simply delete those you don't
want to publish.
Finally, publish the good ones. If you have a local mail transfer agent running, the following is all you have to do:
$ git send-email --to email@example.com *.patch [...]
If you don't have an MTA running, you'll have to find another way: either post
*.patch files to firstname.lastname@example.org or upload them somewhere for us to
download them from.
Files to update: