Project

General

Profile

DevelopersProcess » History » Version 2

Dan Smith, 12/24/2012 09:04 AM

1 1 Dan Smith
h1. CHIRP Development Process
2
3
h2. Mercurial Configuration
4
5
Make sure that your mercurial tool is configured properly for CHIRP. This means having the correct username and email address specified, as well as the MQ extension enabled (for most cases). You can do this in your global mercurial configuration file, or in the one in the repository you're working on, which is @.hg/config@. You may also want to ensure that it has the patchbomb configuration enabled, which allows easy emailing out of mercurial itself. You probably want the following lines in your config file:
6
7
<pre>
8
[ui]
9
username = Joe Bob <joebob@gmail.com>
10
[extensions]
11
hgext.mq=
12
hgext.patchbomb=
13
[email]
14
from = Joe Bob <joebob@gmail.com>
15
method = smtp
16
17
[smtp]
18
host = smtp.gmail.com
19
</pre>
20
21
h2. Submitting a patch
22
23 2 Dan Smith
Changes to CHIRP are welcome, but they should be in the correct format, and sent as a patch to the mailing list. The correct way to do this is to clone the upstream repository, make your changes there, and then soft-commit them as MQ patches to the tree. The following assumes you have cloned the repository and are in the resulting directory.
24
25
h3. Making a change
26
27
Edit one of the files to make a change. For this example, I'll use @chirp/ic2820.py@. Assuming I have made a change, the following commands help me see what has been done:
28
29
<pre>
30
% hg status -mar
31
M chirp/ic2820.py
32
% hg diff
33
diff -r a132c837fd25 chirp/ic2820.py
34
--- a/chirp/ic2820.py   Mon Dec 24 08:17:19 2012 -0800
35
+++ b/chirp/ic2820.py   Mon Dec 24 08:56:29 2012 -0800
36
@@ -16,6 +16,8 @@
37
 from chirp import chirp_common, icf, util, directory
38
 from chirp import bitwise
39
 
40
+# Just added a comment
41
+
42
 MEM_FORMAT = """
43
 struct {
44
   u32  freq;
45
</pre>
46
47
The first command shows me that @chirp/ic2820.py@ has been modified, and the second shows me the actual changes that have been made.
48
49
h3. Soft-committing a Change
50
51
You can commit a change directly to your tree, but it becomes a little more complicated to make changes to it if necessary, and it creates a fork when the change is actually accepted upstream. An easy way to manage all of this is to soft-commit your changes as MQ patches. Assuming you have made the change above, the following example shows the process for committing that into a patch:
52
53
<pre>
54
% hg qnew -ef add_comment # Here I will be prompted to enter a commit message
55
% hg qapplied             # This shows that the patch is now applied
56
add_comment
57
</pre>
58
59
This example takes the changes I made above, and commits them into a new patch called @add_comment@. I can now look at the patch in its entirety, as well as add or remove it from my local tree:
60
61
<pre>
62
% hg export tip           # This will show me the whole patch, with the commit message
63
% hg qpop                 # Remove it from the tree
64
% hg qapplied             # This shows that no patches are applied
65
% hg qunapplied           # This shows that our patch is not applied
66
add_comment
67
% hg qpush                # This adds the patch back to the tree
68
% hg qapplied             # This shows that our patch is applied
69
add_comment
70
% hg qpop                 # This removes it again
71
% hg qdel add_comment     # This deletes it permanently
72
</pre>
73
74
h3. Sending a change
75
76
There are two ways to do this. First, you can export the patch to a text file and email it to the list with your normal mailer. This is how:
77
78
<pre>
79
% hg export tip > add_comment.patch
80
</pre>
81
82
You can also configure the tool to email it directly, in which case you need only do:
83
84
<pre>
85
% hg email tip
86
</pre>
87
88
You will be prompted for the destination address.