Line 32: |
Line 32: |
| |} | | |} |
| | | |
− | === Gitorious environments === | + | === Database tweaks === |
| | | |
− | We do not have root on git.sugarlabs.org. Put the following aliases in your
| + | To make runtime changes in Gitorious database, follow regular Rails workflow - run {{Code|scripts/console}}: |
− | ~/.bashrc to quickly switch to the Gitorious production, test and development
| |
− | environments:
| |
| | | |
− | alias gitorious='sudo su - gitorious' | + | cd /srv/gitorious/app |
− | alias gittest='sudo su - gittest' | + | sudo -u gitorious RAILS_ENV=production script/console |
− | alias gitdev='sudo su - gitdev'
| |
− | alias db='mysql -h db1.osuosl.org -u sugarlabs_git -p sugarlabs_git_dev'
| |
| | | |
− | === Get a MySQL prompt ===
| + | It is regular Ruby console and all feature like {{Code|TAB}} completion work. To tweak Gitorious data, just use its [http://gitorious.org/gitorious/mainline/trees/master/app/models model classes], e.g.: |
− | type "db" at the prompt, then give the db password
| |
− | from ~gitorious/config/database.yml
| |
| | | |
− | === Change project owner === | + | # search of particular object by its attributes |
− | UPDATE projects SET user_id=(SELECT id FROM users WHERE login='jasg') WHERE slug='labyrinth'; | + | user = User.find_by_login("user") |
| + | project = User.find_by_title("project") |
| + | |
| + | # change object attributes |
| + | project.owner = User.find_by_email("foo@bas") |
| + | project.save! |
| + | |
| + | # destroy object and all its dependencies |
| + | user.destroy |
| | | |
− | === Change repo owner === | + | === Tips === |
− | UPDATE repositories SET user_id=(SELECT id FROM users WHERE login='jasg') WHERE name='mainline' AND project_id=(SELECT id FROM projects WHERE title='poll');
| |
| | | |
− | === Add committer ===
| + | # reset user password |
− | INSERT INTO committerships SET | + | user = User.find_by_login("user") |
− | user_id=(select id from users where login='bernie'),
| + | password_key = user.forgot_password! |
− | repository_id=(SELECT id FROM repositories where
| + | Mailer.deliver_forgotten_password(user, password_key) |
− | project_id=(SELECT id FROM projects WHERE title='sugar') AND name='mainline'),
| |
− | kind=2, created_at=NOW(), updated_at=NOW();
| |
− | | |
− | === Hijack account to reset password ===
| |
− | update users set email='YOUREMAIL' where login='USER'; | |
− | | |
− | Then make Gitorious send you a password reset email.
| |
− | | |
− | update users set email='OLDEMAIL' where login='USER'; | |
− | | |
− | === Zapping a user account ===
| |
− | | |
− | WARNING: to kill a user account, make sure you also remove *ALL* its associated records
| |
− | from all tables, or Gitorious will break in non-obvious ways.
| |
− | | |
− | SELECT id FROM users WHERE login='demian';
| |
− | DELETE FROM committers WHERE user_id=666;
| |
− | DELETE FROM events WHERE user_id=666;
| |
− | DELETE FROM comments WHERE user_id=666;
| |
− | DELETE FROM merge_requests WHERE user_id=666;
| |
− | DELETE FROM repositories WHERE user_id=666; | |
− | DELETE FROM projects WHERE user_id=666;
| |
− | | |
− | NOTE: tch pointed out that Rails applications often provide a higher-level method
| |
− | in class User which deletes the record and its associated entries. However, our
| |
− | deployed version of Gitorious does not seem to provide it.
| |
− | | |
− | === Restart gitorious after code/config changes ===
| |
− | touch tmp/restart.txt
| |
| | | |
| == Upgrade notes == | | == Upgrade notes == |
| | | |
| Upgrade will be triggered on every puppet session (if there is such need), vcs repository will be rebased to the HEAD commit with all related changes like database migration. | | Upgrade will be triggered on every puppet session (if there is such need), vcs repository will be rebased to the HEAD commit with all related changes like database migration. |