1[[PageOutline(1-2)]]
2
3= Development in general =
4
5We are using Subversion for version control.
6The main development of Padre is in the trunk [http://svn.perlide.org/padre/trunk/Padre] but there are several
7additional projects and almost all the plugins of Padre also live in the same repository so the best if you check
8out the whole trunk [http://svn.perlide.org/padre/trunk]
9
10{{{
11$ svn co http://svn.perlide.org/padre/trunk padre
12}}}
13
14Then you can run the standard CPAN module process:
15
16Make sure you have all of the needed prerequisites. See [http://padre.perlide.org/trac/wiki/Download]
17
18{{{
19$ cd padre/Padre
20$ perl Makefile.PL      # which will tell about all the missing dependencies of Padre
21                        # this may fail if you don't have Module::Install
22                        # if so, start cpan and install it with all its prerequisites
23$ make
24$ make test
25}}}
26
27For a more detailed set of instructions on how to install the dependencies visit the [wiki:Download]
28
29Once all the above works well you can launch Padre from the SVN tree by running
30{{{
31$ perl dev
32}}}
33
34dev has some more parameters you can see by typing
35{{{
36$ perl dev -h
37}}}
38
39The most important being
40{{{
41$ perl dev -a
42}}}
43that will include the path to all the plugins located in trunk/
44
45
46== Coding ==
47
48See the http://search.cpan.org/dist/Padre/lib/Padre/Manual/Hacking.pod file for Core Padre development
49and http://search.cpan.org/dist/Padre/lib/Padre/Plugin.pm for Plugin development.
50
51== Translation ==
52
53Translation is basically part of the development effort. For more details please take a look at this page:
54See [wiki:TranslationIntro]
55
56== Documentation ==
57
58The documentation of Padre is standard POD embedded in the .pm files. If you'd like to
59improve those you should check out the source code of Padre as described above and send
60patches or ask for commit bit. The documentation is part of the regular development process.
61
62
63== QA/Testing ==
64
65Unfortunately Padre has not enough automated test mostly due to the fact that
66we hardly know how to test GUI applications. The existing tests are located
67in the standard t/ directory.
68If you'd like to help in this and if you are on Windows you could take a look at the
69t/win32/ directory where we have a few tests written using Win32::GUItest.
70You would be very highly regarded if you improved the test coverage of Padre!!
71
72== Release Management ==
73
74See separate page about [wiki:Release]
75
76
77= Development in a branch =
78
79Most of our development is done on the trunk but occasionally we prefer to make our private corner for experimental changes
80or changes that might not be stable for some time.
81Instructions on how to do that:
82
83Create a branch and work on it:
84
85Assuming you have already checked out http://svn.perlide.org/padre/trunk/ to /path/to/padre
86
87{{{
88$ svn cp http://svn.perlide.org/padre/trunk/Padre http://svn.perlide.org/padre/branches/My-branch -m'some messages'
89$ cd /path/to/padre/Padre
90$ svn switch http://svn.perlide.org/padre/branches/My-branch .
91}}}
92
93If you run
94{{{
95svn st ..
96}}}
97
98You will see a letter S infront to the Padre directory as that one is switched.
99
100Now you can edit, test and commit as usual. Your changes will be committed to the branch.
101
102
103When done and you would like to merge your changes
104
1051. Make sure everything is committed
106
107{{{
108$ cd /path/to/padre/Padre
109$ svn switch http://svn.perlide.org/padre/trunk/Padre
110$ svn log --stop-on-copy http://svn.perlide.org/padre/branches/My-branch
111}}}
112
113This will show you the changes you made on the branch. Take the FIRST and LAST revision numbers in this log and
114use the following command to see the full change you made:
115{{{
116svn diff -rFIRST:LAST http://svn.perlide.org/padre/branches/My-branch
117}}}
118
119use the following to merge it back to trunk
120{{{
121svn merge -rFIRST:LAST http://svn.perlide.org/padre/branches/My-branch .
122svn commit -m'merged  -rFIRST:LAST http://svn.perlide.org/padre/branches/My-branch '
123svn rm http://svn.perlide.org/padre/branches/My-branch -m'My-branch is not needed any more'
124}}}
125
126If you decided it was a dead-end you can just switch back to trunk and remove the branch.
127
128== Tickets ==
129
130[[TicketQuery(component=development,order=id,desc=1,format=table,col=resolution|summary|owner|reporter)]]
131
132