summaryrefslogtreecommitdiff
path: root/source_repositories.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'source_repositories.mdwn')
-rw-r--r--source_repositories.mdwn257
1 files changed, 257 insertions, 0 deletions
diff --git a/source_repositories.mdwn b/source_repositories.mdwn
new file mode 100644
index 00000000..610bc01b
--- /dev/null
+++ b/source_repositories.mdwn
@@ -0,0 +1,257 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+This page is meant to give some guidelines. Please use good sense or ask on
+[[mailing_lists/bug-hurd]] if there are any questions.
+
+
+[[!toc levels=3]]
+
+
+# Git repositories on Savannah
+
+<http://git.savannah.gnu.org/cgit/hurd>
+
+ * hurd.git -- Hurd meta package; no real content yet
+ * [[hurd/glibc.git|glibc]] -- [[/glibc]] maintenance
+ * hurd/gnumach.git -- [[GNU Mach|microkernel/mach/gnumach]]
+ * hurd/hurd.git -- [[/Hurd]]
+ * [[hurd/incubator.git|incubator]] -- the great next stuff
+ * hurd/libpthread.git -- [[POSIX threading library|libpthread]]
+ * hurd/mig.git -- [[microkernel/mach/MIG]]
+ * hurd/procfs.git -- [[hurd/translator/procfs]]
+ * hurd/unionfs.git -- -- [[hurd/translator/unionfs]]
+ * hurd/viengoos.git -- [[microkernel/Viengoos]]
+ * hurd/web.git -- [[contributing/Web_pages]]
+
+
+## Branches
+
+Members of the [[Hurd Savannah group|rules/savannah group]] are allowed to create
+branches without formal permission:
+
+ * named `SAVANNAH_LOGIN/BASE_BRANCH[-TOPIC]` or
+ `SAVANNAH_LOGIN/TOPIC/BASE_BRANCH` for private general-purpose or
+ topic branches, respectively, or
+ * named `BASE_BRANCH-TOPIC` or `TOPIC/BASE_BRANCH` for public topic branches
+ basing on
+ `BASE_BRANCH`.
+
+`TOPIC` shall be a suitable tag describing the branch's main concern. These
+tags can be applied recursively (`TOPIC/SUBTOPIC/BASE_BRANCH`, like
+`pfinet_rewrite/use_lwIP/master`, for example).
+
+*private* vs. *public* does, of course, in this scenario not mean visibility
+(all branches are externally visible),
+but instead authority: *private* branches are those that the user
+`SAVANNAH_LOGIN` has authority over, whereas *public* branches are open for
+every committer to install changes on. The private branches are those that you
+would typically host on your own machine and publish through your own web
+server, but we offer that you can instead do this from the centralized Savannah
+repository, as a number of people don't have an always-accessible web server
+running on their own machines.
+
+
+### Subprojects
+
+Some repositories hold a bunch of independent subprojects, first and foremost
+the [[incubator]] repository.
+
+Even though we've been doing differently in the past, branches in there shall
+be named like this:
+
+ * `SUBPROJECT/master` for the `master` branch;
+ * `SUBPROJECT/SAVANNAH_LOGIN/BASE_BRANCH[-TOPIC]` or
+ `SUBPROJECT/SAVANNAH_LOGIN/TOPIC/BASE_BRANCH` for private general-purpose
+ or topic branches, respectively, or
+ * `SUBPROJECT/BASE_BRANCH-TOPIC` or `SUBPROJECT/TOPIC/BASE_BRANCH` for public
+ topic branches basing on `SUBPROJECT/BASE_BRANCH`.
+
+That is, we introduce a top-level `SUBPROJECT` hierarchy, where distinct
+per-subproject Git repositories could have been used instead.
+
+
+### Examples
+
+ * GNU Mach
+
+ * `master` -- the mainline branch
+ * `master-oskit` -- port to OSKit; branched off of `master` at some point
+ * `master-gdb_stubs` -- add support for GDB stubs; branched off of
+ `master` at some point
+
+ * libpthread
+
+ * `master` -- the mainline branch
+ * `master-viengoos` -- port to Viengoos; branched off of `master` at some
+ point
+ * `master-viengoos-on-bare-metal` -- port to Viengoos running on bare
+ metal; branched off of `master-viengoos` at some point
+
+ * incubator
+
+ * `master` -- not to be used
+ * `tarfs/master` -- `master` branch of the `tarfs` subproject
+
+ * unionfs
+
+ * `master` -- the mainline branch
+ * `master-unionmount` -- develop `unionmount` based on `unionfs`' master
+ branch
+
+To give a concrete example, the latter one was created like this:
+
+ $ git clone --no-checkout ssh://git.savannah.gnu.org/srv/git/hurd/unionfs.git
+ $ cd unionfs/
+ $ git checkout -b master-unionmount origin/master
+ $ ...
+ $ git push master-unionmount
+
+### Merging
+
+Merging between Git branches is trivial, at least as long as no conflicts
+arise.
+
+Due to this, you are encouraged to freely make use of separate branches for
+different working topics, as this really faciliates concentrating on one
+specific working topic.
+
+You are encouraged to regularely merge from the respective mainline branches
+(`BASE_BRANCH`; should be `master` in most cases) into your working branches,
+and ensure that your modifications are still fine in the context of new
+mainline changes.
+
+Merging from working branches into the mainline branches will usually be done
+by one of the project administrators, unless negotiated otherwise. For this to
+happen, the copyright of your changes has to be assigned to the Free Software
+Foundation; read about the
+[[copyright assignment_process|rules/savannah group#copyright_assignment]].
+
+It is explicitly encouraged to *merge* changes from working branches into the
+mainline branches (as opposed to *rebase* them on top), as the former mode
+easily allows to determine the context under which a patch has been developed.
+
+## Tags
+
+Equivalent rules apply.
+
+## Behavior
+
+Try to not introduce spurious, unneeded changes, e.g., whitespace changes.
+
+Adhere to the coding conventions that are already used. These are usually the
+[GNU Coding Standards](http://www.gnu.org/prep/standards/html_node/) for stuff
+written by ourselves, including new files, of course.
+
+GNU Mach code is largely based on external code. Don't GNU-ify it, as this
+would make merging external patches unnecessarily difficult.
+
+### Commit messages
+
+We no longer maintain parallel `ChangeLog` and commit messages. When needed,
+the `ChangeLog` files can be created automatically from the commit messages.
+
+Commit messages have this mandatory format:
+
+ One-line summary.
+ Blank line.
+ ChangeLog-like list of changes, but without leading tabs.
+
+The header line of each former `ChangeLog` snippet (DATE NAME EMAIL) is no
+longer to be included in the commit message, and instead the author and
+committer of a change, together with the dates, will be maintained natively by
+Git.
+
+Example:
+
+ commit 3054666a46e0142cacef895c13edb4391435c722
+ Author: Some One <someone@example.com>
+ AuthorDate: Thu Jun 11 15:59:55 2005 +0000
+ Commit: Some One <someone@example.com>
+ CommitDate: Thu Jun 11 15:59:55 2005 +0000
+
+ Frobnicate the foo.
+
+ * frob.c (foo): Frob it.
+ * oldfoo.c [OLD] (oldfoo): Likewise.
+ [OLD_OLD_FOO] (oofoo): Permute every second word with itself, and
+ beginning with the tenth line, every third one also. Pure
+ nonsense.
+
+Read about how to write [GNU-style `ChangeLog`
+messages](http://www.gnu.org/prep/standards/html_node/Change-Logs.html).
+
+Don't waste time writing exhaustive `ChangeLog`-like commit messages for, e.g.,
+debugging stuff that will be removed again before merging your development
+branch into the mainline. Sometimes the one-line summary might already
+suffice. But please do write something.
+
+### Behavior on *private* branches
+
+Even though you are said to be the owner of branches tagged with your
+`SAVANNAH_LOGIN`, it is generally nevertheless good to not do history-rewriting
+stuff and the like (`git rebase` and friends), as others may in turn be basing
+their work on your private branches.
+
+We could establish a branch-tagging policy for branches that others should
+expect their history possibly to be rewritten. This may be useful for branches
+that are only meant for aggregating the changes of (several) development
+branches, like an imaginary
+`rewrite_pfinet/for_master_and_proposed_for_general_testing` branch.
+
+
+# Git repositories on flubber
+
+[[flubber|public hurd boxen]] is
+[[configured|public_hurd_boxen/installation/flubber]] in a way so that users
+can publish Git repositories from their home directories. The only thing to do
+is to put an empty `.git/git-daemon-export-ok` (cf. [*git daemon*'s manual
+page](http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html)) into
+the repository, or just `git-daemon-export-ok` for
+[*bare*](http://www.kernel.org/pub/software/scm/git/docs/git-init.html)
+repositories.
+
+For example, the [[contributing/web pages]] repository is made available like
+this: `~hurd-web/hurd-web` is a bare repository; there is an empty
+`~hurd-web/hurd-web/git-daemon-export-ok` file. Users can clone the repository
+like this:
+
+ $ git clone git://flubber.bddebian.com/~hurd-web/hurd-web
+
+Another example, [[Thomas Schwinge|tschwinge]] has a checkout of
+[[libpthread]] in `~tschwinge/tmp/hurd/libpthread/`, the
+`~tschwinge/tmp/hurd/libpthread/.git/git-daemon-export-ok` file exists. If you
+really need to, you can clone it like this:
+
+ $ git clone git://flubber.bddebian.com/~tschwinge/tmp/hurd/libpthread
+
+## List of Interesting Repositories
+
+ * web pages: git://flubber.bddebian.com/~hurd-web/hurd-web
+
+
+# Git repositories on grubber
+
+## List of Interesting Repositories
+
+ * [[binutils]]
+ * [[Boehm_GC]]
+ * [[GCC]]
+
+
+# Debian Git repositories
+
+IRC, #hurd, 2010-07-31
+
+ <tschwinge> git-buildpackage is to be used to build these new Debian repositories, I guess?
+ <youpi> well, the Vcs-Git control header is about everything people need to know, I believe :)
+ <youpi> git-buildpackage is just mostly an easy way to build the .orig.tar.Gz from the tag
+ <youpi> http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html