349
edits
Carandraug (talk | contribs) (created page) |
No edit summary |
||
Line 1: | Line 1: | ||
[[wikipedia:Mercurial]] (sometimes referred to as {{codeline|hg}}) is the version control tool used by Octave. | [[wikipedia:Mercurial]] (sometimes referred to as {{codeline|hg}}) is the version control tool used by Octave. | ||
This page contains some helpful commands to use when interacting with the GNU Octave mercurial repository. | |||
== Patches == | |||
When you do not have push permissions to the repository (you cannot add your changes using mercurial itself) and you have a modification to the current GNU Octave code, you have to generate a patch (or changeset) so developers with permissions can include them in the code. The overview of the process is as follows | |||
# Change the code and test that your changes do work (write tests, that's the best!). | |||
# Create the changeset (instructions below). | |||
# Post your patch in the [https://savannah.gnu.org/patch/?group=octave Patch tracker]. | |||
== | === Before starting === | ||
The way patches are generated uses an [http://mercurial.selenic.com/wiki/MqExtension extension] of mercurial and therefore you need to prepare your .hgrc file to use it. | |||
If you do not have a .hgrc file, just create one in your home directory. In Windows, this is something like "C:\Documents and Settings\your_name\Mercurial.ini" | |||
== | Add the following code to that file: | ||
[extensions] | |||
hgext.mq = | |||
hgext.pager = | |||
color = | |||
[pager] | |||
pager = LESS='FSRX' less | |||
attend = help, annotate, cat, diff, export, glog, log, qdiff, status, outgoing, incoming | |||
## Colours I like | |||
[color] | |||
status.modified = magenta bold | |||
status.added = green bold | |||
status.removed = red bold | |||
status.deleted = cyan bold | |||
status.unknown = gray bold | |||
status.ignored = gray bold | |||
The only part that is important is the extensions. The rest is to make hg behave in a fancy way (recommended). | |||
=== Creating changesets with hg === | |||
==== Simple way ==== | |||
* Update to the latest revision. | |||
<pre> hg up </pre> | |||
* Make your changes and save. | |||
* Commit your code following the [[commit message guidelines]]. | |||
<pre> hg ci </pre> | |||
* Export the modifications. | |||
<pre> hg export -r tip -o mypatch.patch </pre> | |||
* Save the output to a file and upload it tot he patch tracker. | |||
==== Using the extension ==== | |||
In the repository you can start a patch by doing | |||
hg qnew mychangeset | |||
You can further edit your files... if you do, you need your patch to know about these changes. To do that execute | |||
hg qrefresh | |||
Once you think you have all the changes that make your patch complete you can export your patch | |||
hg qdiff > mychangeset.patch | |||
Now you can do (at least) two things | |||
* Apply your patch to your copy (it will differ form the repository and you will have to merge somehow...). To do it run | |||
hg qfinish tip | |||
* Forget the changes and go back to the unpatched version of the code. | |||
hg qrefresh | |||
hg qpop | |||
hg qfinish tip | |||
The file mychangeset.patch contains your changes. | |||
[[Category:Development]] |
edits