-
Notifications
You must be signed in to change notification settings - Fork 0
/
HACKING
150 lines (98 loc) · 4.68 KB
/
HACKING
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
Conventions? Are you kidding? OK fine.
Code Branching Model
====================
The master branch is what we consider the main-line of development,
and the last, non-rc tag on master is the most recent stable release.
Any branch with a "tmp/" prefix might be rebased (often), so keep that
in mind when using or depending on one.
Any branch with a "tmp/review/" prefix corresponds to a patchset
submitted to the mailing list. We try to maintain these branches to
make the review process easier for those not as familiar with patches
via email.
Current Trajectory
==================
Now that we've finished the 0.32 release, we're working on 0.33, and
although we're not certain which new features will be included, we're
considering:
- Better VFS performance for large repositories (i.e. fuse, ls,
web...).
- Better VFS caching.
- Index improvements.
- Incremental indexing via inotify.
- Smarter (and quieter) handling of cross-filesystem metadata.
- Encryption.
- Support for alternate remote storage APIs.
- Discontinuing Python 2 work, excepting perhaps some bugfixes.
If you have the time and inclination, please help review patches
posted to the list, or post your own. (See "ways to help" below.)
More specific ways to help
==========================
Testing -- yes please.
With respect to patches, bup development is handled via the mailing
list, and all patches should be sent to the list for review (see
"Submitting Patches" below).
In most cases, we try to wait until we have at least one or two
"Reviewed-by:" replies to a patch posted to the list before
incorporating it into master, so reviews are an important way to help.
We also love a good "Tested-by:" -- the more the merrier.
Testing
=======
Individual tests can be run via
./pytest TEST
For example:
./pytest test/int/test_git.py
./pytest test/ext/test-ftp
If you have the xdist module installed, then you can specify its `-n`
option to run the tests in parallel (e.g. `./pytest -nauto ...`), or
you can specify `-j` to make, which will be translated to xdist with
`-j` becoming `-nauto` and `-jN` becoming `-nN`.
Internal tests that test bup's code directly are located in test/int,
and external tests that test bup from the outside, typically by
running the executable, are located in test/ext.
Currently, all pytests must be located in either test/ext or test/int.
Internal test filenames must match test_*.py, and external tests must
be located in text/ext and their filenames must match test-* (see
test/ext/conftest.py for the handling of the latter). Any paths
matching those criteria will be automatically collected by pytest.
Some aspects of the environment are automatically restored after each
test via fixtures in conftest.py, including the state of the
environment variables and the working directory; the latter is reset
to the top of the source tree.
Submitting patches
==================
As mentioned, all patches should be posted to the mailing list for
review, and must be "signed off" by the author before official
inclusion (see ./SIGNED-OFF-BY). You can create a "signed off" set of
patches in ./patches, ready for submission to the list, like this:
git format-patch -s -o patches origin/master
which will include all of the patches since origin/master on your
current branch. Then you can send them to the list like this:
git send-email --to bup-list@googlegroups.com --compose patches/*
The use of --compose will cause git to ask you to edit a cover letter
that will be sent as the first message.
It's also possible to handle everything in one step:
git send-email -s --to bup-list@googlegroups.com --compose origin/master
and you can add --annotate if you'd like to review or edit each patch
before it's sent.
For single patches, this might be easier:
git send-email -s --to bup-list@googlegroups.com --annotate -n1 HEAD
which will send the top patch on the current branch, and will stop to
allow you to add comments. You can add comments to the section with
the diffstat without affecting the commit message.
Of course, unless your machine is set up to handle outgoing mail
locally, you may need to configure git to be able to send mail. See
git-send-email(1) for further details.
Oh, and we do have a ./CODINGSTYLE, hobgoblins and all, though don't
let that scare you off. We're not all that fierce.
Even More Generally
===================
It's not like we have a lot of hard and fast rules, but some of the
ideas here aren't altogether terrible:
http://www.kernel.org/doc/Documentation/SubmittingPatches
In particular, we've been paying at least some attention to the bits
regarding Acked-by:, Reported-by:, Tested-by: and Reviewed-by:.
<!--
Local Variables:
mode: markdown
End:
-->