Service/git
Hostnames
Hardware
Administrative contact
git AT sugarlabs DOT org
Sysadmins
For non-emergency calls, preferably send email to the administrative contact.
Notes
Gitorious hosting.
Home | /srv/gitorious
|
---|---|
Daemon | /etc/init.d/gitorious
|
Logs | /srv/gitorious/app/log
|
Config |
|
SSL certificates |
|
Ports |
|
Sources | http://gitorious.org/~alsroot/sugarlabs-org |
Plugins
Sugar Labs Gitorious instance uses downstream several plugins. All of them are enabled from app/processors/push_event_processor.rb
file and placed to lib/
directory.
CIA
Notify http://cia.vc about all commits.
Plugin file:
lib/cia.rb
gitorious.yml
configuration:
cia: true
Patchwork
Patchwork integration.
Plugin file:
lib/patchwork.rb
gitorious.yml
configuration:
patchwork: sugar: url: "https://git.sugarlabs.org:0000000000000000000000000@patchwork.sugarlabs.org/xmlrpc/" linkname: sugar repositories: - mainline set_state: Accepted find_states: - New - Under Review
Pootle commits
Send notification emails on every pootle commit.
Plugin file:
lib/emailer.rb
gitorious.yml
configuration:
emailer: true
Database tips
To make runtime changes in Gitorious database, follow regular Rails workflow - run scripts/console
:
cd /srv/gitorious/app sudo -u gitorious RAILS_ENV=production script/console
It is regular Ruby console and all feature like TAB
completion work. To tweak Gitorious data, just use its model classes, e.g.:
# search of particular object by its attributes user = User.find_by_login("user") project = Project.find_by_title("project") # get object attributes user.email # change object attributes project.owner = User.find_by_email("foo@bar") project.save! # destroy object and all its dependencies user.destroy # reset user password user = User.find_by_email("user") password_key = user.forgot_password! Mailer.deliver_forgotten_password(user, password_key) # add repository committer committer = User.find_by_login("user") repo = Repository::find_by_path("sugar/mainline") repo.committerships.create_with_permissions!({:committer => committer}, (Committership::CAN_COMMIT)) # delete repository committer committer = User.find_by_login("user") repo = Repository::find_by_path("sugar/mainline") repo.committerships = repo.committerships.select {|i| !i.members.include? committer } # change repository owner new_owner = User.find_by_login("user") repo = Repository::find_by_path("sugar/mainline") cs = repo.committerships.select {|i| i.committer == new_owner}.pop cs.permissions = (Committership::CAN_ADMIN | Committership::CAN_COMMIT | Committership::CAN_REVIEW) cs.save! repo.owner = new_owner repo.save! # move repository to another project new_project = Project.find_by_title('sl-tweaks') repo = Repository::find_by_path("sat-solver/mainline") repo.project = new_project repo.name = "sat-solver" repo.save! # check users permissions for particular repository repo = Repository::find_by_path("pukllanapac/mainline") repo.committerships.each {|i| puts "#{User.find(i.committer_id).login} review=#{i.permissions & Committership::CAN_REVIEW > 0}"} repo.committerships.each {|i| puts "#{User.find(i.committer_id).login} commit=#{i.permissions & Committership::CAN_COMMIT > 0}"} repo.committerships.each {|i| puts "#{User.find(i.committer_id).login} admin=#{i.permissions & Committership::CAN_ADMIN > 0}"}
TODO
Current gitorious patch doesn't handle renaming repositories properly and doesn't update symliks in /srv/gitorious/repos-by-name
. For now, run code to recreate symlinks:
Repository::find_each {|i| s='/srv/gitorious/repos/' + i.real_gitdir; d='/srv/gitorious/repos-by-name/' + i.gitdir; FileUtils.makedirs(File.dirname(d)) if !File.exist?(File.dirname(d)); File.symlink(s, d) if !File.exists? d}
Upgrade notes
git |
|
---|
After pulling new sources, migrate database:
cd /srv/gitorious/app/ sudo -u gitorious RAILS_ENV=production rake db:migrate