forked from genome/genome
-
Notifications
You must be signed in to change notification settings - Fork 0
/
WHERE_TO_PUT_CODE
75 lines (45 loc) · 2.38 KB
/
WHERE_TO_PUT_CODE
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
WHERE TO PUT CODE:
Perl:
The modules go under lib/perl.
In the shipit branch, the code is divided up as described below for C/C++/Java packages.
We will move to the new structure as soon as it's easy to develop and test there.
C/C++/Java:
These packages are in a new structure.
Each gets its own top-level directory AND private git repo inside it.
Git calls these submodules, and the whole story is in .gitmodules at
the top of the repo.
These directories start out empty, but you can get their code by doing:
git submodule update --init somatic-sniper
Updates to sub-modules must be committed and pushed independently,
from inside the subdir.
Example:
git submodule update --init somatic-sniper
cd somatic-sniper
# change things
git commit
git push origin master
To make a new one, run:
create-c-project $DIRNAME
The above puts a new git repo on the git server, and links it in.
Test Data:
If it's very small, put it next-to the test case, and use __FILE__ (in the
Perl test script) to find the path when running.
If it's big, make a separate project/submodule like above, so it won't
bog down the source repo. We'll package it separately as a dependency.
XML/XSL:
All of the web server infrastructure is under genome-webserver in both branches.
For the specific entity views, they live under Genome/xsl in the master branch,
and under various package dirs in the shipit branch, depending on what they view.
R:
R libraries live next-to the Perl module which provides an interface to them
for the rest of the system.
Externally developed software:
If the software has a debian package, put in an apipe-support ticket, which will
ultimately result in Systems adding it to the list of debian packages analysis depends-on,
and will cause that package to be deployed onto all blades and workstations.
If the software is not packaged, or not packaged in a way we need, at the latest version:
If the software is on github, we should fork it into github.com/genome.
If it is NOT on github, we make a git repo to track our changes, and put it on github.com under "genome"
If you are not on the genome team on github put in an apipe-support ticket.
That repo should be linked as a submodule under the vendor/ subdirectory. This tells us we have our own
fork of the package we maintain. Hopefully it just has packaging configuration added.