== Commit Policies == - When you start implementing a new feature, bug fix etc, always do it '''on the top of the [http://lemon.cs.elte.hu/hg/lemon/ main repository]''', not on the top of your last local commit. - Be very careful not to add unnecessary files (but to add everything that necessary) - Do not add generated files into the repository. - Do not add test files except very small ones. - Make sure that '''{{{make check}}}''' passes without any compilation warning for each commit with {{{g++-4.2}}}. - When files are renamed or new ones added also check the changset with '''{{{make distcheck}}}''' - At each point, changes should be "clean", i.e. to be self-contained, and not include any changesets that were false starts. - If you are working on a more substantial new feature or improvement, you probably want to commit frequently in order to make it possible the revert the changes that turn to be a bad idea later. Feel free to do that, but before you share your changes with others, you should clean your repository by removing the unwanted commits and concatenating those actually belong together. Here is a nice description how to do that: http://www.selenic.com/mercurial/wiki/index.cgi/TipsAndTricks - When you add a new algorithm or data structure - Take the hassle to write a complete doxygen documentation as well. - Place the documentation into an appropriate doxygen module. - Also provide an exhaustive test case, whenever it makes sense. == Commit Metainfo == === User (author) identifier === Use your real name and email address in the following form. {{{ Winston Churchill }}} Use the same string for all of your commits. === Commit log === - The first line must be a self containing short '''but meaningful''' summary of the changeset. It should be no longer than 70 character. - If a changeset relates to a ticket, please always indicate the corresponding ticket id at the end of the first line of the log message, like {{{(ticket #76)}}} or just {{{(#76)}}}. - Then comes a longer description of the changes, if necessary. Do not list the changed files, but instead detail the nature of the changes. == Uploading Patch to Trac == - When you upload a patch created from a changeset, please include its hash-id into the file-name. At least specify it in the attachment comment. - When referring to a patch in the ticket, please use the hash-id instead of the file-name. (In the usual way, like [8ceb318224b1]). If you do so, it will be immediately visible whether or not the changeset you are talking about is already in the main branch.