Commit a858f0876a10ddb97454bf2b307c6397362f0a92
Exists in
master
and in
27 other branches
Merge branch 'master' into stoa
Showing
11 changed files
with
167 additions
and
10 deletions
Show diff stats
AUTHORS.md
| @@ -40,6 +40,7 @@ Alessandro Palmeira + João M. M. Silva <alessandro.palmeira@gmail.com> | @@ -40,6 +40,7 @@ Alessandro Palmeira + João M. M. Silva <alessandro.palmeira@gmail.com> | ||
| 40 | Alessandro Palmeira + Paulo Meirelles <alessandro.palmeira@gmail.com> | 40 | Alessandro Palmeira + Paulo Meirelles <alessandro.palmeira@gmail.com> |
| 41 | Alessandro Palmeira + Paulo Meirelles + João M. M. da Silva <alessandro.palmeira@gmail.com> | 41 | Alessandro Palmeira + Paulo Meirelles + João M. M. da Silva <alessandro.palmeira@gmail.com> |
| 42 | Alessandro Palmeira + Rafael Manzo <alessandro.palmeira@gmail.com> | 42 | Alessandro Palmeira + Rafael Manzo <alessandro.palmeira@gmail.com> |
| 43 | +analosnak <analosnak@gmail.com> | ||
| 43 | Ana Losnak <analosnak@gmail.com> | 44 | Ana Losnak <analosnak@gmail.com> |
| 44 | Andre Bernardes <andrebsguedes@gmail.com> | 45 | Andre Bernardes <andrebsguedes@gmail.com> |
| 45 | Antonio Terceiro + Carlos Morais <terceiro@colivre.coop.br> | 46 | Antonio Terceiro + Carlos Morais <terceiro@colivre.coop.br> |
| @@ -81,7 +82,6 @@ Carlos Morais + Diego Araújo <diegoamc90@gmail.com> | @@ -81,7 +82,6 @@ Carlos Morais + Diego Araújo <diegoamc90@gmail.com> | ||
| 81 | Carlos Morais + Eduardo Morais <carlos88morais@gmail.com> | 82 | Carlos Morais + Eduardo Morais <carlos88morais@gmail.com> |
| 82 | Carlos Morais + Paulo Meirelles <carlos88morais@gmail.com> | 83 | Carlos Morais + Paulo Meirelles <carlos88morais@gmail.com> |
| 83 | Carlos Morais + Pedro Leal <carlos88morais@gmail.com> | 84 | Carlos Morais + Pedro Leal <carlos88morais@gmail.com> |
| 84 | -Daniela Feitosa <dani@dohko.(none)> | ||
| 85 | Daniel Alves + Diego Araújo <danpaulalves@gmail.com> | 85 | Daniel Alves + Diego Araújo <danpaulalves@gmail.com> |
| 86 | Daniel Alves + Diego Araújo <diegoamc90@gmail.com> | 86 | Daniel Alves + Diego Araújo <diegoamc90@gmail.com> |
| 87 | Daniel Alves + Diego Araújo + Guilherme Rojas <danpaulalves@gmail.com> | 87 | Daniel Alves + Diego Araújo + Guilherme Rojas <danpaulalves@gmail.com> |
| @@ -119,7 +119,6 @@ Diego Araújo + Renan Teruo <diegoamc90@gmail.com> | @@ -119,7 +119,6 @@ Diego Araújo + Renan Teruo <diegoamc90@gmail.com> | ||
| 119 | Diego Araujo + Rodrigo Souto + Rafael Manzo <rr.manzo@gmail.com> | 119 | Diego Araujo + Rodrigo Souto + Rafael Manzo <rr.manzo@gmail.com> |
| 120 | Diego + Jefferson <diegoamc90@gmail.com> | 120 | Diego + Jefferson <diegoamc90@gmail.com> |
| 121 | Diego Martinez <diegoamc90@gmail.com> | 121 | Diego Martinez <diegoamc90@gmail.com> |
| 122 | -Diego Martinez <diego@diego-K55A.(none)> | ||
| 123 | Diego + Renan <renanteruoc@gmail.com> | 122 | Diego + Renan <renanteruoc@gmail.com> |
| 124 | Eduardo Tourinho Edington <eduardo.edington@serpro.gov.br> | 123 | Eduardo Tourinho Edington <eduardo.edington@serpro.gov.br> |
| 125 | Evandro Jr <evandrojr@gmail.com> | 124 | Evandro Jr <evandrojr@gmail.com> |
| @@ -195,6 +194,7 @@ Luis David Aguilar Carlos <ludwig9003@gmail.com> | @@ -195,6 +194,7 @@ Luis David Aguilar Carlos <ludwig9003@gmail.com> | ||
| 195 | Luiz Fernando de Freitas Matos <luiz@luizff.matos@gmail.com> | 194 | Luiz Fernando de Freitas Matos <luiz@luizff.matos@gmail.com> |
| 196 | Marcos Ramos <ms.ramos@outlook.com> | 195 | Marcos Ramos <ms.ramos@outlook.com> |
| 197 | Martín Olivera <molivera@solar.org.ar> | 196 | Martín Olivera <molivera@solar.org.ar> |
| 197 | +Michal Čihař <michal@cihar.com> | ||
| 198 | Moises Machado <moises@colivre.coop.br> | 198 | Moises Machado <moises@colivre.coop.br> |
| 199 | Naíla Alves <naila@colivre.coop.br> | 199 | Naíla Alves <naila@colivre.coop.br> |
| 200 | Nanda Lopes <nanda.listas+psl@gmail.com> | 200 | Nanda Lopes <nanda.listas+psl@gmail.com> |
| @@ -221,6 +221,7 @@ Rafael Reggiani Manzo + João M. M. da Silva <rr.manzo@gmail.com> | @@ -221,6 +221,7 @@ Rafael Reggiani Manzo + João M. M. da Silva <rr.manzo@gmail.com> | ||
| 221 | Rafael Reggiani Manzo <rr.manzo@gmail.com> | 221 | Rafael Reggiani Manzo <rr.manzo@gmail.com> |
| 222 | Raphaël Rousseau <raph@r4f.org> | 222 | Raphaël Rousseau <raph@r4f.org> |
| 223 | Raquel Lira <raquel.lira@gmail.com> | 223 | Raquel Lira <raquel.lira@gmail.com> |
| 224 | +Raquel <rcordioli@gmail.com> | ||
| 224 | Renan Teruo + Caio Salgado <renanteruoc@gmail.com> | 225 | Renan Teruo + Caio Salgado <renanteruoc@gmail.com> |
| 225 | Renan Teruoc + Diego Araujo <renanteruoc@gmail.com> | 226 | Renan Teruoc + Diego Araujo <renanteruoc@gmail.com> |
| 226 | Renan Teruo + Diego Araujo <renanteruoc@gmail.com> | 227 | Renan Teruo + Diego Araujo <renanteruoc@gmail.com> |
| @@ -228,13 +229,13 @@ Renan Teruo + Diego Araújo <renanteruoc@gmail.com> | @@ -228,13 +229,13 @@ Renan Teruo + Diego Araújo <renanteruoc@gmail.com> | ||
| 228 | Renan Teruo + Paulo Meirelles <renanteruoc@gmail.com> | 229 | Renan Teruo + Paulo Meirelles <renanteruoc@gmail.com> |
| 229 | Renan Teruo + Rafael Manzo <renanteruoc@gmail.com> | 230 | Renan Teruo + Rafael Manzo <renanteruoc@gmail.com> |
| 230 | Rodrigo Souto + Ana Losnak + Daniel Bucher + Caio Almeida + Leandro Nunes + Daniela Feitosa + Mariel Zasso <noosfero-br@listas.softwarelivre.org> | 231 | Rodrigo Souto + Ana Losnak + Daniel Bucher + Caio Almeida + Leandro Nunes + Daniela Feitosa + Mariel Zasso <noosfero-br@listas.softwarelivre.org> |
| 231 | -Rodrigo Souto <diguliu@gmail.com> | ||
| 232 | Rodrigo Souto <rodrigo@colivre.coop.br> | 232 | Rodrigo Souto <rodrigo@colivre.coop.br> |
| 233 | Ronny Kursawe <kursawe.ronny@googlemail.com> | 233 | Ronny Kursawe <kursawe.ronny@googlemail.com> |
| 234 | root <root@debian.sdr.serpro> | 234 | root <root@debian.sdr.serpro> |
| 235 | Samuel R. C. Vale <srcvale@holoscopio.com> | 235 | Samuel R. C. Vale <srcvale@holoscopio.com> |
| 236 | Tallys Martins <tallysmartins@gmail.com> | 236 | Tallys Martins <tallysmartins@gmail.com> |
| 237 | tallys <tallys@tallys.(none)> | 237 | tallys <tallys@tallys.(none)> |
| 238 | +Thiago Zoroastro <thiago.zoroastro@bol.com.br> | ||
| 238 | Valessio Brito <contato@valessiobrito.com.br> | 239 | Valessio Brito <contato@valessiobrito.com.br> |
| 239 | Valessio Brito <contato@valessiobrito.info> | 240 | Valessio Brito <contato@valessiobrito.info> |
| 240 | Valessio Brito <valessio@gmail.com> | 241 | Valessio Brito <valessio@gmail.com> |
| @@ -0,0 +1,124 @@ | @@ -0,0 +1,124 @@ | ||
| 1 | +# Noosfero Development Policy | ||
| 2 | + | ||
| 3 | +## Developer Roles | ||
| 4 | + | ||
| 5 | +* *Developers* are everyone that is contributing code to Noosfero. | ||
| 6 | +* *Committers* are the people with direct commit access to the Noosfero source | ||
| 7 | + code. They are responsible for reviewing contributions from other developers | ||
| 8 | + and integrating them in the Noosfero code base. They are the members of the | ||
| 9 | + [Noosfero group on Gitlab](https://gitlab.com/groups/noosfero/members). | ||
| 10 | +* *Release managers* are the people that are managing the release of a new | ||
| 11 | + Noosfero version and/or the maintainance work of an existing Noosfero stable | ||
| 12 | + branch. See MAINTAINANCE.md for details on the maintaince policy. | ||
| 13 | + | ||
| 14 | +## Development process | ||
| 15 | + | ||
| 16 | +* Every new feature or non-trivial bugfix should be reviewed by at least one | ||
| 17 | + committer. This must be the case even if the original author is a committer. | ||
| 18 | + | ||
| 19 | + * In the case the original author is a committer, he/she should feel free to | ||
| 20 | + commit directly if after 1 week nobody has provided any kind of feedback. | ||
| 21 | + | ||
| 22 | + * Developers who are not committers should feel free to ping committers if | ||
| 23 | + they do not get feedback on their contributions after 1 week. | ||
| 24 | + | ||
| 25 | + * On GitLab, one can just add a comment to the merge request; one can also | ||
| 26 | + @-mention specific committers or other developers who have expertise on | ||
| 27 | + the area of the contribution. | ||
| 28 | + | ||
| 29 | + * Committers should follow the activity of the project, and try to help | ||
| 30 | + reviewing contributions from others as much as possible. | ||
| 31 | + | ||
| 32 | + * On GitLab one can get emails for all activity on a project by setting the | ||
| 33 | + [notification settings](https://gitlab.com/profile/notifications) to | ||
| 34 | + "watch". | ||
| 35 | + | ||
| 36 | + * Anyone can help by reviewing contributions. Committers are the only ones | ||
| 37 | + who can give the final approval to a contribution, but everyone is welcome | ||
| 38 | + to help with code review, testing, etc. | ||
| 39 | + | ||
| 40 | + * See note above about setting up notification on GitLab. | ||
| 41 | + | ||
| 42 | +* Committers should feel free to push trivial (or urgent) changes directly. | ||
| 43 | + There are no strict rule on what makes a change trivial or urgent; committers | ||
| 44 | + are expected to exercise good judgement on a case by case basis. | ||
| 45 | + | ||
| 46 | + * Usually changes to the database are not trivial. | ||
| 47 | + | ||
| 48 | +* In the case of unsolvable conflict between commiters regarding any change to | ||
| 49 | + the code, the current release manager(s) will have the final say in the | ||
| 50 | + matter. | ||
| 51 | + | ||
| 52 | +* Release managers are responsible for stablishing a release schedule, and | ||
| 53 | + about deciding when and what to release. | ||
| 54 | + | ||
| 55 | + * Release managers should announce release schedules to the project mailing | ||
| 56 | + lists in advance. | ||
| 57 | + | ||
| 58 | + * The release schedule may include a period of feature freeze, during which | ||
| 59 | + no new features or any other changes that are not pre-approved by the | ||
| 60 | + release manager must be committed to the repository. | ||
| 61 | + | ||
| 62 | + * Committers must respect the release schedule and feature freezes. | ||
| 63 | + | ||
| 64 | +## Maintainance process | ||
| 65 | + | ||
| 66 | +### Not all feature releases will be maintained as a stable release | ||
| 67 | + | ||
| 68 | +We will be choosing specific release series to be maintained as stable | ||
| 69 | +releases. | ||
| 70 | + | ||
| 71 | +This means that a given release is not guaranteed to be maintained as a stable | ||
| 72 | +release, but does *not* mean it won't be. Any committer (or anyone, really) can | ||
| 73 | +decide to maintain a given release as stable and seek help from others to do | ||
| 74 | +so. | ||
| 75 | + | ||
| 76 | +### No merges from stable branches to master | ||
| 77 | + | ||
| 78 | +*All* changes must be submitted against the master branch first, and when | ||
| 79 | +applicable, backported to the desired stable releases. Exceptions to this rules | ||
| 80 | +are bug fixes that only apply to a given stable branch and not to master. | ||
| 81 | + | ||
| 82 | +In the past we had non-trivial changes accepted into stable releases while | ||
| 83 | +master was way ahead (e.g. during the rails3 migration period), that made the | ||
| 84 | +merge back into master very painful. By eliminating the need to do these | ||
| 85 | +merges, we save time for the people responsible for the release, and eliminate | ||
| 86 | +the possibility of human errors or oversights causing changes to be accepted | ||
| 87 | +into stable that will be a problem to merge back into master. | ||
| 88 | + | ||
| 89 | +By getting all fixes in master first, we improve the chances that a future | ||
| 90 | +release will not present regressions against bugs that should already be fixed, | ||
| 91 | +but the fixes got lost in a big, complicated merge (and those won't exist | ||
| 92 | +anymore, at least not from stable branches to master). | ||
| 93 | + | ||
| 94 | +After a fix gets into master, backporting changes into a stable release branch | ||
| 95 | +is the responsibility of whoever is maintaing that branch, and those interested | ||
| 96 | +in it. The stable branch release manager(s) are entitled the final say on any | ||
| 97 | +matters related to that branch. | ||
| 98 | + | ||
| 99 | +## Apendix A: how to become a committer | ||
| 100 | + | ||
| 101 | +Every developer that wants to be a committer should create [an issue on | ||
| 102 | +Gitlab](https://gitlab.com/noosfero/noosfero/issues) requesting to be added as | ||
| 103 | +a committer. This request must include information about the requestor's | ||
| 104 | +previous contributions to the project. | ||
| 105 | + | ||
| 106 | +If 2 or more commiters consider second the request, the requestor is accepted | ||
| 107 | +as new commiter and added to the Noosfero group. | ||
| 108 | + | ||
| 109 | +The existing committers are free to choose whatever criteria they want to | ||
| 110 | +second the request, but they must be sure that the new committer is a | ||
| 111 | +responsible developer and knows what she/he is doing. They must be aware that | ||
| 112 | +seconding these requests means seconding the actions of the new committer: if | ||
| 113 | +the new committer screw up, her/his seconds screwed up. | ||
| 114 | + | ||
| 115 | +## Apendix B: how to become a release manager | ||
| 116 | + | ||
| 117 | +A new release manager for the development version of Noosfero (i.e. the one | ||
| 118 | +that includes new features, a.k.a. the master branch) is apointed by the | ||
| 119 | +current release manager, and must be a committer first. | ||
| 120 | + | ||
| 121 | +Release managers for stable branches are self-appointed, i.e. whoever takes the | ||
| 122 | +work takes the role. In case of a conflict (e.g. 2+ different people want to do | ||
| 123 | +the work but can't agree on working together), the development release manager | ||
| 124 | +decides. |
app/helpers/content_viewer_helper.rb
| @@ -10,7 +10,7 @@ module ContentViewerHelper | @@ -10,7 +10,7 @@ module ContentViewerHelper | ||
| 10 | end | 10 | end |
| 11 | 11 | ||
| 12 | def number_of_comments(article) | 12 | def number_of_comments(article) |
| 13 | - display_number_of_comments(article.comments_count - article.spam_comments_count) | 13 | + display_number_of_comments(article.comments_count - article.spam_comments_count.to_i) |
| 14 | end | 14 | end |
| 15 | 15 | ||
| 16 | def article_title(article, args = {}) | 16 | def article_title(article, args = {}) |
config/noosfero.yml.dist
| @@ -5,7 +5,7 @@ development: | @@ -5,7 +5,7 @@ development: | ||
| 5 | addthis_pub: your-user-name | 5 | addthis_pub: your-user-name |
| 6 | addthis_logo: http://localhost:3000/images/logo-200x50.png | 6 | addthis_logo: http://localhost:3000/images/logo-200x50.png |
| 7 | addthis_options: favorites, email, digg, delicious, technorati, slashdot, twitter, more | 7 | addthis_options: favorites, email, digg, delicious, technorati, slashdot, twitter, more |
| 8 | - gravatar: wavatar | 8 | + gravatar: mm |
| 9 | googlemaps_initial_zoom: 4 | 9 | googlemaps_initial_zoom: 4 |
| 10 | exception_recipients: [admin@example.com] | 10 | exception_recipients: [admin@example.com] |
| 11 | max_upload_size: 5MB | 11 | max_upload_size: 5MB |
debian/changelog
| 1 | +noosfero (1.0) wheezy; urgency=low | ||
| 2 | + | ||
| 3 | + * Noosfero 1.0 \o/ | ||
| 4 | + | ||
| 5 | + -- Antonio Terceiro <terceiro@colivre.coop.br> Mon, 22 Dec 2014 10:52:21 -0300 | ||
| 6 | + | ||
| 1 | noosfero (1.0~rc4) wheezy-test; urgency=low | 7 | noosfero (1.0~rc4) wheezy-test; urgency=low |
| 2 | 8 | ||
| 3 | * Fourth release candidate | 9 | * Fourth release candidate |
debian/noosfero.yml
lib/noosfero/version.rb
lib/tasks/release.rake
| @@ -83,7 +83,7 @@ EOF | @@ -83,7 +83,7 @@ EOF | ||
| 83 | begin | 83 | begin |
| 84 | File.open("AUTHORS.md", 'w') do |output| | 84 | File.open("AUTHORS.md", 'w') do |output| |
| 85 | output.puts AUTHORS_HEADER | 85 | output.puts AUTHORS_HEADER |
| 86 | - output.puts `git log --pretty=format:'%aN <%aE>' | sort | uniq` | 86 | + output.puts `git log --no-merges --pretty=format:'%aN <%aE>' | sort | uniq` |
| 87 | output.puts AUTHORS_FOOTER | 87 | output.puts AUTHORS_FOOTER |
| 88 | end | 88 | end |
| 89 | commit_changes(['AUTHORS.md'], 'Updating authors file') if !pendencies_on_authors[:ok] | 89 | commit_changes(['AUTHORS.md'], 'Updating authors file') if !pendencies_on_authors[:ok] |
script/noosfero-plugins
| @@ -79,7 +79,22 @@ run(){ | @@ -79,7 +79,22 @@ run(){ | ||
| 79 | 79 | ||
| 80 | _enable(){ | 80 | _enable(){ |
| 81 | plugin="$1" | 81 | plugin="$1" |
| 82 | - source="$available_plugins_dir/$plugin" | 82 | + |
| 83 | + if [ -d "$available_plugins_dir/$plugin" ]; then | ||
| 84 | + source="$available_plugins_dir/$plugin" | ||
| 85 | + linksource="../../plugins/$plugin" | ||
| 86 | + else | ||
| 87 | + if [ ! -d "$plugin" ]; then | ||
| 88 | + echo "E: $plugin not found (needs to be an existing directory)" | ||
| 89 | + return | ||
| 90 | + fi | ||
| 91 | + | ||
| 92 | + # out-of-tree plugins | ||
| 93 | + source="$plugin" | ||
| 94 | + linksource="$source" | ||
| 95 | + plugin=$(basename "$plugin") | ||
| 96 | + fi | ||
| 97 | + | ||
| 83 | target="$enabled_plugins_dir/$plugin" | 98 | target="$enabled_plugins_dir/$plugin" |
| 84 | base="$base_plugins_dir/$plugin" | 99 | base="$base_plugins_dir/$plugin" |
| 85 | run "$source/before_enable.rb" | 100 | run "$source/before_enable.rb" |
| @@ -110,7 +125,7 @@ _enable(){ | @@ -110,7 +125,7 @@ _enable(){ | ||
| 110 | fi | 125 | fi |
| 111 | fi | 126 | fi |
| 112 | if [ "$installation_ok" = true ] && [ "$dependencies_ok" = true ]; then | 127 | if [ "$installation_ok" = true ] && [ "$dependencies_ok" = true ]; then |
| 113 | - ln -s "$source" "$target" | 128 | + ln -s "$linksource" "$target" |
| 114 | plugins_public_dir="$NOOSFERO_DIR/public/plugins" | 129 | plugins_public_dir="$NOOSFERO_DIR/public/plugins" |
| 115 | plugins_features_dir="$NOOSFERO_DIR/features/plugins" | 130 | plugins_features_dir="$NOOSFERO_DIR/features/plugins" |
| 116 | test -d "$target/public" && ln -s "$target/public" "$plugins_public_dir/$plugin" | 131 | test -d "$target/public" && ln -s "$target/public" "$plugins_public_dir/$plugin" |
test/unit/content_viewer_helper_test.rb
| @@ -83,6 +83,14 @@ class ContentViewerHelperTest < ActionView::TestCase | @@ -83,6 +83,14 @@ class ContentViewerHelperTest < ActionView::TestCase | ||
| 83 | assert_equal '', result | 83 | assert_equal '', result |
| 84 | end | 84 | end |
| 85 | 85 | ||
| 86 | + should 'not crash if spam_comments_count is nil' do | ||
| 87 | + article = TextileArticle.new(:name => 'post for test', :body => 'post for test', :profile => profile) | ||
| 88 | + article.stubs(:comments_count).returns(10) | ||
| 89 | + article.stubs(:spam_comments_count).returns(nil) | ||
| 90 | + result = number_of_comments(article) | ||
| 91 | + assert_match /10 comments/, result | ||
| 92 | + end | ||
| 93 | + | ||
| 86 | should 'not list feed article' do | 94 | should 'not list feed article' do |
| 87 | profile.articles << build(Blog, :name => 'Blog test', :profile => profile) | 95 | profile.articles << build(Blog, :name => 'Blog test', :profile => profile) |
| 88 | assert_includes profile.blog.children.map{|i| i.class}, RssFeed | 96 | assert_includes profile.blog.children.map{|i| i.class}, RssFeed |
util/debian-install/install