Compare commits

...

832 Commits

Author SHA1 Message Date
Dmitriy Zaporozhets 7af16bbb0f Merge branch 'advanced-notes' of /home/git/repositories/gitlab/gitlabhq 2013-04-02 11:35:46 +00:00
Dmitriy Zaporozhets b641cdd183 fix test 2013-04-02 14:30:32 +03:00
Dmitriy Zaporozhets af657b0509 reset st_commits before setting new value to prevent error when old st_commits is broken 2013-04-02 11:32:41 +03:00
Dmitriy Zaporozhets d3559e2556 fix tabs features 2013-04-02 11:23:06 +03:00
Sytse Sijbrandij 08c6f5f604 Adding special cases to the advanced setup notes. 2013-04-02 07:52:47 +02:00
Dmitriy Zaporozhets 8465238899 fix long names on wall 2013-04-01 22:53:07 +03:00
Dmitriy Zaporozhets 8cadeb6750 nav views refactoring 2013-04-01 22:30:48 +03:00
Dmitriy Zaporozhets 19ab03f461 minor design improvements 2013-04-01 21:37:39 +03:00
Dmitriy Zaporozhets 0e9080e3dd Fixed bug with non-displayed download button 2013-04-01 21:25:50 +03:00
Dmitriy Zaporozhets 65d9f8c16c Fix notification issue 2013-04-01 21:16:52 +03:00
Dmitriy Zaporozhets 76a4cbe464 Merge branch 'refactor/gitlab_git' 2013-04-01 20:53:00 +03:00
Dmitriy Zaporozhets 8a6bf09ad0 Pass project into factory for teams tests 2013-04-01 20:35:41 +03:00
Dmitriy Zaporozhets f536c13355 fixed test using repo with commits but old factory 2013-04-01 19:06:47 +03:00
Dmitriy Zaporozhets 3b88636d3c fix tests 2013-04-01 18:35:29 +03:00
Dmitriy Zaporozhets adccf3b499 fix facotries 2013-04-01 18:24:05 +03:00
Dmitriy Zaporozhets f5dec306fd Use project_with_code factory where necessary 2013-04-01 18:16:08 +03:00
Dmitriy Zaporozhets 9a26e9a0d6 Dont init repo on every create(:repo) 2013-04-01 17:27:44 +03:00
Dmitriy Zaporozhets 273741fbde Merge pull request #3462 from tsl0922/fix-reassign-error
fix: wrong number of arguments
2013-04-01 07:26:04 -07:00
Dmitriy Zaporozhets 541d899410 Project.repository should never be nil so you can call repository.exists? or repository.empty?
Also specify separate project factory for project with filled repo
2013-04-01 16:56:25 +03:00
Dmitriy Zaporozhets 49b024f5f5 Use Gitlab::Git:: for git features across application 2013-04-01 16:04:35 +03:00
Dmitriy Zaporozhets bb06e905ef added Gitlab::Git::Compare for git compare feature 2013-04-01 16:03:11 +03:00
Dmitriy Zaporozhets 51c167554c added Gitlab::Git::Blame for git blame feature 2013-04-01 16:02:54 +03:00
Dmitriy Zaporozhets 22817398e6 define TestEnv and keep all global stubs in one place 2013-04-01 14:39:19 +03:00
tsl0922 45c4804c8e fix: wrong argument number 2013-04-01 17:25:31 +08:00
Dmitriy Zaporozhets 7bb71bb088 Fix stubbed repo 2013-04-01 09:21:31 +03:00
Dmitriy Zaporozhets 458631c5ba remove unnecessary Commit.new 2013-03-31 23:58:17 +03:00
Dmitriy Zaporozhets bbfbff3add Extend models functionality with old decorator methods. Use Repository model 2013-03-31 23:48:12 +03:00
Dmitriy Zaporozhets b53557aca6 Remove decorator calls and methods from views. Repalace with helper calls when needed 2013-03-31 23:47:26 +03:00
Dmitriy Zaporozhets da5b0c91dc Move some decorator logic to helpers 2013-03-31 23:46:54 +03:00
Dmitriy Zaporozhets 685681e28a remove Tree/Commit decorator usage from controllers 2013-03-31 23:46:25 +03:00
Dmitriy Zaporozhets 2a6b4f965e rake task to clear redis cache 2013-03-31 23:45:58 +03:00
Dmitriy Zaporozhets a0bca5b71d Add Repository model to proxy request to Gitlab::Git::Repositoty and decorate commits with Commit model 2013-03-31 23:45:38 +03:00
Dmitriy Zaporozhets 1ea385625b Remove Commit & Tree decorators 2013-03-31 23:44:59 +03:00
Dmitriy Zaporozhets 26323046fd Decorate Gitlab::Git::Commit with Commit 2013-03-31 19:00:45 +03:00
Dmitriy Zaporozhets 9dc644635f Fix tests and remove app/models/repository.rb 2013-03-31 18:50:17 +03:00
Dmitriy Zaporozhets 154e54b46e Remove grit logic from app/ 2013-03-31 18:49:58 +03:00
Dmitriy Zaporozhets d444a23ad6 specs for Gitlab::Git::Repository and Gitlab::Git::Commit 2013-03-31 18:49:31 +03:00
Dmitriy Zaporozhets 676bce2ab9 Move Commit and Repository logic to lib/gitlab/git 2013-03-31 18:49:06 +03:00
Dmitriy Zaporozhets 71b0f8ea0b Use existing methods for branch names: Ex use @repository.branch_names instead of @repository.heads.map(&:name) 2013-03-31 17:08:10 +03:00
Dmitriy Zaporozhets 025e41576e Merge branch 'header-in-contributing-guide' of /home/git/repositories/gitlab/gitlabhq 2013-03-31 12:06:48 +00:00
Dmitriy Zaporozhets a1b76c6c0a Merge branch 'notes-in-installation-guide' of /home/git/repositories/gitlab/gitlabhq 2013-03-31 12:06:24 +00:00
Dmitriy Zaporozhets ddaedaef1a Fix therubyracer dependencies 2013-03-31 15:04:08 +03:00
Sytse Sijbrandij 8fcdbaea71 Section for important notes. 2013-03-31 13:54:46 +02:00
Sytse Sijbrandij 15143a3b7b Improve header and wording. 2013-03-31 13:48:49 +02:00
Dmitriy Zaporozhets ea7e163660 Merge pull request #3457 from jrmithdobbs/fix-freebsd-bundle-install
Update deps for therubyracer and libv8 resolve build issues on FreeBSD...
2013-03-31 01:32:33 -07:00
Douglas Huff abc47852a9 Update deps for therubyracer and libv8 to resolve build issues on FreeBSD. Resolves Iussue#3446 . 2013-03-30 18:54:12 -07:00
Dmitriy Zaporozhets 188e6a7a3f Merge pull request #3369 from hiroponz/display-note-count
Display note count on network graph.
2013-03-30 15:10:26 -07:00
Dmitriy Zaporozhets c918000bc2 Merge pull request #3396 from Andrew8xx8/issue-button-fix
New issue button was not follows to external tracker if it is selected. ...
2013-03-30 15:10:08 -07:00
Dmitriy Zaporozhets 6005ec894a Merge pull request #3392 from hiroponz/fix-non-ascii-char-username
Fix RoutingError when changing username to non ascii char.
2013-03-30 15:07:11 -07:00
Dmitriy Zaporozhets 4449ac3ad1 Merge pull request #3430 from logorrhea/master
Changed the word 'authentification' to 'authentication'
2013-03-30 15:05:29 -07:00
Dmitriy Zaporozhets 69e5a4bbeb Merge pull request #3428 from colindean/bug/assigned-team-typo
fix typo: shure -> sure
2013-03-30 15:04:32 -07:00
Dmitriy Zaporozhets 1c5a393c95 Merge pull request #3406 from docwhat/in_projects
Fixed UsersProject.in_projects
2013-03-30 15:03:44 -07:00
Dmitriy Zaporozhets 52ae054447 prevent exception when trying to edit empty project 2013-03-30 16:46:56 +02:00
Dmitriy Zaporozhets 11b89eb381 Merge branch 'master' of github.com:gitlabhq/gitlabhq 2013-03-30 16:36:15 +02:00
Dmitriy Zaporozhets e998257dcf use rollbacked version of grit to make gollum works 2013-03-30 16:35:19 +02:00
Dmitriy Zaporozhets e29c9b7932 slower animation for tree browsing 2013-03-30 16:35:19 +02:00
Dmitriy Zaporozhets 52b0ceb87a Merge branch 'accepting-mr-in-uservoice' of /home/git/repositories/gitlab/gitlabhq 2013-03-30 11:15:55 +00:00
Dmitriy Zaporozhets 214768d3c5 Merge pull request #3440 from evanwon/patch-2
Fixed: gitlab-shell version check error message
2013-03-30 04:06:06 -07:00
Dmitriy Zaporozhets 66a1b88393 Update a grit to newer version 2013-03-30 12:50:44 +02:00
Sytse Sijbrandij d8eefdccfc Removing duplication by putting everything in the readme. Allow us to close issues that deviate from the guidelines. 2013-03-30 11:35:35 +01:00
Dmitriy Zaporozhets 49f14f057d Prevent gollum to overrride gitlab-grit gem. Use grit as instead so gollum uses it too. Fixes things with gpg singatured commits, etc. 2013-03-29 08:47:14 +02:00
Dmitriy Zaporozhets a18ce40943 Revert "First step with rugged"
This reverts commit 4524ba20b8.
2013-03-28 23:01:42 +02:00
Dmitriy Zaporozhets 4524ba20b8 First step with rugged 2013-03-28 21:57:38 +02:00
Evan Wondrasek f1b369b57d Fixed: gitlab-shell version check error message 2013-03-28 11:03:00 -05:00
Dmitriy Zaporozhets 21191318ae refactor wall.js. style wall page a bit 2013-03-28 16:41:29 +02:00
Dmitriy Zaporozhets 583bfac5f5 Fix Note notification for entities without assignee 2013-03-28 16:00:19 +02:00
Dmitriy Zaporozhets 5ad4be295f remove notify checkboxes from note forms 2013-03-28 15:39:18 +02:00
Dmitriy Zaporozhets 70947fedda inslude author & assignee to note notification recipients 2013-03-28 14:51:25 +02:00
Dmitriy Zaporozhets 618249734b rebuild notification on notes logic 2013-03-28 14:39:59 +02:00
Dmitriy Zaporozhets 63e6f055f1 Fix notify specs. Fix merge request close via api 2013-03-28 13:24:01 +02:00
Dmitriy Zaporozhets 2f585840db Fixed new mr/issue emails 2013-03-28 12:52:44 +02:00
Dmitriy Zaporozhets ecf3b2e471 add text templates to new emails 2013-03-28 12:33:54 +02:00
Dmitriy Zaporozhets c04120c1c5 Improve notification service tests 2013-03-28 12:24:04 +02:00
Dmitriy Zaporozhets f49a2ac0df Add close issue/mr methods to Notify. Refactored Notificationservice 2013-03-28 12:14:53 +02:00
Dmitriy Zaporozhets 9e616459e0 add watchers to email recipients list. Add emails for close/merge MR 2013-03-28 11:59:06 +02:00
Tyler Funk 26bd6acadb Changed the word 'authentification' to 'authentication' 2013-03-27 22:03:54 -05:00
Dmitriy Zaporozhets 11d52a1553 Fix NotificationService reassign_email method 2013-03-27 22:33:59 +02:00
Dmitriy Zaporozhets 2b2d43ed2a Update develoment dependencies 2013-03-27 22:21:32 +02:00
Colin Dean 9e24929f16 fix typo: shure -> sure 2013-03-27 15:55:10 -04:00
Dmitriy Zaporozhets ed7a2136dd update sidekiq 2013-03-27 21:51:40 +02:00
Dmitriy Zaporozhets f230fe3dda Fix NotificationService NameError for new issue 2013-03-27 21:42:01 +02:00
Dmitriy Zaporozhets 0a044c7318 NotificationService respects disabled notifications now 2013-03-27 20:28:00 +02:00
Dmitriy Zaporozhets ba59912072 Prepare UI for notification settings 2013-03-27 20:07:52 +02:00
Dmitriy Zaporozhets d55ade1686 notification scaffold 2013-03-27 19:04:29 +02:00
Dmitriy Zaporozhets 5f14a6bcf8 annotated 2013-03-27 18:26:37 +02:00
Sytse Sijbrandij 3392f6c1f0 Link to accepting issues on feedback forum. 2013-03-27 10:15:12 +01:00
Dmitriy Zaporozhets a31fe1a63f Merge pull request #3407 from NARKOZ/patch-1
use convenient method to check for empty project repo
2013-03-26 23:28:07 -07:00
Dmitriy Zaporozhets e3f1164248 stub notification in event model 2013-03-26 19:27:39 +02:00
Andrew8xx8 5e6f45b07f Settings replaced by Gitlab.config 2013-03-26 21:04:00 +04:00
Dmitriy Zaporozhets 3728c4904e refactor observers test since email logic moved to service 2013-03-26 19:00:54 +02:00
Dmitriy Zaporozhets ce0945efcd refactor observers. Added BaseObserver with helper methods 2013-03-26 18:11:38 +02:00
Dmitriy Zaporozhets 6abf58466f Move new_note email logic to NotificationService 2013-03-26 17:51:06 +02:00
Dmitriy Zaporozhets f93c4dc0d8 Use notificationService for MR reassigned 2013-03-26 17:23:28 +02:00
Dmitriy Zaporozhets 38ffb8220c use NotificationService for handle notify logic when MR created 2013-03-26 17:16:06 +02:00
Christian Höltje b8502cbaee Fixed UsersProject.in_projects
I discovered while trying to use UserTeam#remove_member() that
UsersProject.in_projects was broken.  So I wrote test cases to test what
I was trying to do and fixed the underlying problem.
2013-03-26 10:19:55 -04:00
Nihad Abbasov 7ed0dc0185 use convenient method to check for empty project repo 2013-03-26 07:14:57 -07:00
Dmitriy Zaporozhets 58a1ed6dd3 Merge pull request #3398 from Andrew8xx8/spork
Spork support added
2013-03-26 06:44:52 -07:00
Dmitriy Zaporozhets da1cf5b9e7 enable callbacks for specs after notification 2013-03-26 15:16:06 +02:00
Dmitriy Zaporozhets c7bd99b040 refactor issue observer spec 2013-03-26 14:41:57 +02:00
Andrew8xx8 5949e30243 Spork support added 2013-03-26 13:38:42 +04:00
Dmitriy Zaporozhets e3e8b9fcb9 fixed tests 2013-03-26 11:17:49 +02:00
Dmitriy Zaporozhets bfebf10850 reject current_user from close issue emails 2013-03-26 11:06:24 +02:00
Dmitriy Zaporozhets 4b3950456d notification level for user 2013-03-26 10:48:07 +02:00
Dmitriy Zaporozhets cf6d4dc10c NotificationService for resolving email notification logic 2013-03-26 10:48:06 +02:00
Dmitriy Zaporozhets 448152ab94 Use NotificationService for observers pt1 2013-03-26 10:48:06 +02:00
Sytse Sijbrandij f7e630c452 Updating based on Dmitriy his comments. 2013-03-26 10:46:53 +02:00
Sytse Sijbrandij 83d3f7e052 Better header and detail why you need two times the storage. Also moving memory and storage to the bottom, OS is more important. 2013-03-26 10:46:53 +02:00
Sytse Sijbrandij 7e93aaa6e6 Corrected mistake, added hint for windows users. 2013-03-26 10:46:53 +02:00
Sytse Sijbrandij 77c802a4fe Combine it with the memory requirements that where already there. 2013-03-26 10:46:53 +02:00
Sytse Sijbrandij ec1a37875d Added memory requirements based on https://news.ycombinator.com/item?id=5423851 2013-03-26 10:46:53 +02:00
Andrew8xx8 242f6aa218 New issue button was not follows to external tracker if it is selected. fixed #3386 2013-03-26 12:28:26 +04:00
Sato Hiroyuki 33e236c631 Fix RoutingError when changing username to non ascii char. 2013-03-26 14:47:11 +09:00
Sato Hiroyuki b49c1cb161 Display note count on network graph. 2013-03-26 09:51:39 +09:00
Sato Hiroyuki 62ef763a80 Refector: clean up code. 2013-03-26 09:46:10 +09:00
Dmitriy Zaporozhets 90db28d6d0 Merge pull request #3377 from SaitoWu/grit_ext
bump version of grit_ext
2013-03-25 11:55:20 -07:00
Saito 7a4f70d79b bump version of grit_ext 2013-03-26 01:12:29 +08:00
Dmitriy Zaporozhets 8c9123943f Update changelog 2013-03-25 16:12:12 +02:00
Dmitriy Zaporozhets 795bb9cf65 Merge branch 'feature/login_with_username' 2013-03-25 16:10:30 +02:00
Dmitriy Zaporozhets 9d92433a7c login with both email or username 2013-03-25 16:10:14 +02:00
Dmitriy Zaporozhets 1496c01521 try to move wiki if it does not exist 2013-03-25 15:52:54 +02:00
Dmitriy Zaporozhets 6752968bb5 Updated changelog with transfer & security changes 2013-03-25 15:27:09 +02:00
Dmitriy Zaporozhets 6e78a1d7c8 Merge branch 'improve/project_transfer' 2013-03-25 15:20:42 +02:00
Dmitriy Zaporozhets 53e54ddf8a require gitlab-shell v1.2.0 now 2013-03-25 15:19:06 +02:00
Dmitriy Zaporozhets d6ac38133c Admin.projects: remove views and route specs 2013-03-25 14:58:43 +02:00
Dmitriy Zaporozhets 98bea4b1ff Updatev security tests since admin is a superuser now. Has access to any project 2013-03-25 13:40:08 +02:00
Dmitriy Zaporozhets c610347cc1 Removed not relevant tests for admin.projects 2013-03-25 13:36:08 +02:00
Dmitriy Zaporozhets d0df8a6ff8 remove project edit from admin area. Redesigned project page in admin area 2013-03-25 11:07:11 +02:00
Dmitriy Zaporozhets e292d7c17b Make transfer action in project controller 2013-03-25 10:48:30 +02:00
Dmitriy Zaporozhets ff35b37fd2 transfer also wiki repository when transfer a project 2013-03-25 10:47:47 +02:00
Dmitriy Zaporozhets 1fb99264a9 Use TransferContext for project 2013-03-25 10:47:22 +02:00
Dmitriy Zaporozhets 850881a2ef add admin ability to edit project settings from project area 2013-03-25 10:46:57 +02:00
Riyad Preukschas 6e15284844 Merge pull request #3354 from vinodc/install-docs-typo-fix
Fixing a minor typo in the installation docs
2013-03-25 00:49:19 -07:00
Dmitriy Zaporozhets afa9f6045a Merge branch 'more-links-in-readme' of /home/git/repositories/gitlab/gitlabhq 2013-03-25 07:39:23 +00:00
Vinod Chandru df46903dbe Fixing a minor typo in the installation docs 2013-03-24 20:23:02 -07:00
Dmitriy Zaporozhets 5f159d4bc0 Merge pull request #3335 from zzet/patch-4
Update databases.md
2013-03-24 03:44:14 -07:00
Andrew Kumanyaev 4cc27fd9e1 Update database.yml.postgresql 2013-03-24 14:10:32 +04:00
Dmitriy Zaporozhets 38ea3939b2 Merge branch 'hiroponz-fix-404-json-file' 2013-03-24 12:01:56 +02:00
Dmitriy Zaporozhets 29b0ac489b move edit to separate controller. This fixes #3265 2013-03-24 11:57:44 +02:00
Andrew Kumanyaev 159cd0d742 Update databases.md 2013-03-24 13:48:23 +04:00
Dmitriy Zaporozhets b6641d6932 Merge branch 'fix-404-json-file' of https://github.com/hiroponz/gitlabhq into hiroponz-fix-404-json-file 2013-03-24 11:26:57 +02:00
Dmitriy Zaporozhets 979dcdba95 security update of crack gem 2013-03-24 11:24:26 +02:00
Sytse Sijbrandij 0d56b1b07f Updated links to gitlab.com and added the last doc files. 2013-03-23 21:20:09 +01:00
Sytse Sijbrandij c4f8d34b7d spelling error 2013-03-23 21:06:00 +01:00
Sytse Sijbrandij de3b181a69 5.0 should no longer be on the roadmap 2013-03-23 21:05:42 +01:00
Dmitriy Zaporozhets 77faffbda3 Merge pull request #3305 from dosire/update-ruby
Update ruby to latest version.
2013-03-22 11:04:00 -07:00
Sytse Sijbrandij 5cc5b74e8e Update ruby to latest version. 2013-03-22 18:34:59 +01:00
Dmitriy Zaporozhets e48fdde4f8 Merge pull request #3300 from aus/patch-1
Change gollum repo to use https:// instead of git://
2013-03-22 10:11:15 -07:00
Dmitriy Zaporozhets 747706a83a Merge pull request #3303 from dosire/attribute
Attribution as mentioned in https://news.ycombinator.com/item?id=5423635
2013-03-22 10:10:07 -07:00
Sytse Sijbrandij 78dd9a1481 All involved are mentioned. https://news.ycombinator.com/item?id=5424050 2013-03-22 17:54:42 +01:00
Dmitriy Zaporozhets c0da61c6d8 fix xss issue in blame 2013-03-22 18:52:25 +02:00
Sytse Sijbrandij 3869cfecc1 Use real name. 2013-03-22 17:42:31 +01:00
Sytse Sijbrandij ccc8806758 Attribution as mentioned in https://news.ycombinator.com/item?id=5423635 2013-03-22 17:39:22 +01:00
Austin Robertson ba1dbd39fb Change Gemfile.lock repo to use https:// 2013-03-22 10:38:27 -05:00
Austin Robertson 693dcce6bc Change gollum repo to use https:// instead of git://
A lot of people might have firewalls blocking the git:// protocol. Using https:// makes this easier and matches the other git repositories in the Gemfile.
2013-03-22 10:31:19 -05:00
Dmitriy Zaporozhets de2c189ec1 fix blame view head nav 2013-03-22 15:11:16 +02:00
Dmitriy Zaporozhets 84043e8e44 Fix lines and line numbers being squashed in File -> blame 2013-03-22 15:08:02 +02:00
Dmitriy Zaporozhets 235605fc6d Merge pull request #3288 from hiroponz/fix-style-network-graph
Fix style of network graph.
2013-03-22 00:43:26 -07:00
Sato Hiroyuki f5e001bd8c Using arrowed line only if it connects to not first parent.
It is easy to see which branch is merged.
2013-03-22 16:09:21 +09:00
Sato Hiroyuki 26606aa2ec Fix style of network graph.
refs #3258
2013-03-22 10:11:53 +09:00
Dmitriy Zaporozhets 5f9d654939 Dont show '0 additions and 0 deletions' message for commit 2013-03-21 22:50:18 +02:00
Dmitriy Zaporozhets ad5ea14210 Move commit.show partial from commits/ to commit/ 2013-03-21 22:22:54 +02:00
Dmitriy Zaporozhets fec283889b fix commit-description css on commit.show 2013-03-21 22:22:21 +02:00
Dmitriy Zaporozhets c4299bb45a Move directory logic out of model. Use Gitlab:Shell class to interact with file system 2013-03-21 22:11:08 +02:00
Dmitriy Zaporozhets 0103363191 replace Gitolited mixin with Gitlab::ShellAdapter 2013-03-21 21:01:14 +02:00
Dmitriy Zaporozhets d6338a8482 Merge pull request #3258 from hiroponz/display-commit-msg
Display commit message on network graph.
2013-03-21 09:58:57 -07:00
Sato Hiroyuki 06c5389780 Fix travis failure randomly, because Capybara.default_wait_time is too short. 2013-03-21 15:24:06 +00:00
Sato Hiroyuki a1fe375e44 Fix 404 error while displaying json files.
It uses params[:id] instead of request.fullpath.
It should fix #3132.
2013-03-21 15:10:14 +00:00
Dmitriy Zaporozhets 02f70851e4 Update readme to match 5-0-stable 2013-03-21 16:29:53 +02:00
GitLab f7ca6c5079 Version up to 5.0.0 2013-03-21 15:20:17 +02:00
Sato Hiroyuki a19e3d898d Display icon and commit message on network graph. 2013-03-21 13:08:54 +00:00
Sato Hiroyuki 916c61fc64 Refactor: clean up code. 2013-03-21 12:34:15 +00:00
Dmitriy Zaporozhets 0df01283b0 Merge pull request #3276 from DarthJDG/fix-group-typo
Fix column heading order in group admin view
2013-03-21 00:15:57 -07:00
Robert Biro f39d3b9a09 Fix column heading order in group admin view 2013-03-20 22:15:42 +00:00
Dmitriy Zaporozhets 3cdac0b934 Use Api.js to handle api calls to gitlab 2013-03-20 21:55:25 +02:00
Dmitriy Zaporozhets a163135cb5 Intead of showing 404 give users ability to close MR with missing branches 2013-03-20 20:22:29 +02:00
Dmitriy Zaporozhets a0cc38827f remove db:setup & seed_fu from install docs. gitlab:setup does it 2013-03-20 19:30:59 +02:00
Dmitriy Zaporozhets c71a7896b1 fix test button functionality for project -> service -> gitlab ci 2013-03-20 16:41:59 +02:00
Sato Hiroyuki 1f6b6b6c62 Rotating graph orientation. 2013-03-20 12:28:22 +00:00
Dmitriy Zaporozhets 9d06074409 gitlab 5.0 rc1 2013-03-20 13:49:32 +02:00
Dmitriy Zaporozhets 3d9bd6e3e7 fix gfm helper test 2013-03-20 13:41:18 +02:00
Dmitriy Zaporozhets 51b1859e49 fix key observer test 2013-03-20 10:25:11 +02:00
Dmitriy Zaporozhets 6347e9a60b Dont load diff in compare over 100 commits 2013-03-20 10:19:00 +02:00
Dmitriy Zaporozhets 72db22d385 send wall message with crtl+enter 2013-03-20 09:53:39 +02:00
Dmitriy Zaporozhets 316cf61965 Merge pull request #3247 from Undev/feature/fix_bug_in_team_assigment
Fix bug with downgrade permissions on first project assigment to team
2013-03-20 00:35:24 -07:00
Dmitriy Zaporozhets d2ca549f41 Merge pull request #3264 from yuters/patch-2
Fix user path in markdown
2013-03-20 00:32:45 -07:00
Dmitriy Zaporozhets 67bda08cbe Merge pull request #3266 from DanKnox/fix_wiki_cancel_edit_button
Fix the Cancel button on the Edit Wiki page.
2013-03-20 00:29:05 -07:00
Dan Knox 8300ae366c Fix the Cancel button on the Edit Wiki page.
The Cancel button on the Edit Wiki page was still redirecting back
to the "Index" page which is no longer the default Wiki page.

This commit changes the Cancel button in the following ways:

  * Pressing Cancel while editing an existing Wiki page will now
    redirect you back to the latest version of that page.
  * Pressing Cancel while editing a brand new Wiki home page that
    does not yet exist will redirect you to back to the same Edit
    Wiki Home page.
2013-03-19 21:36:09 -07:00
Martin Bastien 397c3da975 Fix user path in markdown 2013-03-19 21:29:59 -03:00
Dmitriy Zaporozhets 6880ace1fe Fix bug showing merge MR in milestone open list 2013-03-19 20:11:47 +02:00
Dmitriy Zaporozhets a3cdaeef66 refactor emails a bit. Add email on ssh key creation 2013-03-19 20:00:41 +02:00
Dmitriy Zaporozhets 52d3fa191f 5.0 beta2 2013-03-19 19:17:59 +02:00
Dmitriy Zaporozhets fb4f171587 rails up to 3.2.13 2013-03-19 18:52:17 +02:00
Dmitriy Zaporozhets 8ec01e0ba9 remove ajax loader from wall 2013-03-19 18:14:59 +02:00
Dmitriy Zaporozhets 3b42c267a6 Dont show blocked users in autocomplete 2013-03-19 18:07:14 +02:00
Dmitriy Zaporozhets 07a88d6699 Merge pull request #3255 from michelsalib/patch-1
Gitlab does not use gitolite anymore.
2013-03-19 08:59:10 -07:00
Dmitriy Zaporozhets 0cbb235c3e fix incorrectly moved spinach step 2013-03-19 17:53:21 +02:00
Dmitriy Zaporozhets 4403f71f45 added sanitize and linkify functions. Moved some js to lib/ 2013-03-19 15:54:58 +02:00
Dmitriy Zaporozhets 2465a4fdb2 removed few outdated tests 2013-03-19 15:37:11 +02:00
Dmitriy Zaporozhets 70af962963 Comment external issue tracker by default in gitlab.yml.example 2013-03-19 15:11:31 +02:00
Dmitriy Zaporozhets e6c2080214 use scrollTop solution for both chrome & firefox 2013-03-19 15:04:58 +02:00
Dmitriy Zaporozhets 063c4a069c fix wall feature. removed duplicated test 2013-03-19 14:58:58 +02:00
Dmitriy Zaporozhets ba4f0abf47 wall comment does not create an event on dashboard any more 2013-03-19 14:50:26 +02:00
Dmitriy Zaporozhets b1bd3f1252 fix tests. added jquery.timeago.js 2013-03-19 14:39:32 +02:00
Dmitriy Zaporozhets 124a5e270e add attachemnts support for wall 2013-03-19 13:28:29 +02:00
Michel Salib e2ddf03c7e Gitlab does not use gitolite anymore. 2013-03-19 11:52:59 +01:00
Dmitriy Zaporozhets 4d378f3c9a load notes for wall via api 2013-03-19 12:35:55 +02:00
Dmitriy Zaporozhets 57f3409bcc move Wall to own resource 2013-03-19 12:35:42 +02:00
Dmitriy Zaporozhets f3dfd22993 add wall.scss 2013-03-19 12:34:59 +02:00
Dmitriy Zaporozhets 5bf3a898ed Remove wall from basic notes logic 2013-03-19 12:34:14 +02:00
Sato Hiroyuki 175e09f167 Change graph element size. 2013-03-19 19:27:15 +09:00
Sato Hiroyuki 351c952192 Refactor: extract method. 2013-03-19 18:42:46 +09:00
Sato Hiroyuki 96a584211b Refactor: Clean up code. 2013-03-19 18:08:27 +09:00
Dmitriy Zaporozhets 1752c6dc8b Uncheck notify team checkbox by default 2013-03-19 09:38:33 +02:00
Dmitriy Zaporozhets e68955b4fc add permission messages to project edit 2013-03-19 09:27:12 +02:00
Dmitriy Zaporozhets fb1c85061e remove unused spec 2013-03-19 08:40:32 +02:00
Dmitriy Zaporozhets 54f40301ff fixed form input overflow on 1024px res 2013-03-19 08:39:26 +02:00
Dmitriy Zaporozhets 306ea84e85 Merge pull request #3251 from AlexDenisov/api_additional_user_fields
Abilities added to /user and /sign_in requests
2013-03-18 23:20:11 -07:00
Dmitriy Zaporozhets 924643198c Merge pull request #3252 from hiroponz/fix-timeout-large-repository
Fix timeout error while showing the network graph.
2013-03-18 23:17:52 -07:00
Sato Hiroyuki 92de0faf6e Fix spec errors. 2013-03-19 14:21:00 +09:00
Alex Denisov a15fe61fb0 API docs updated 2013-03-19 04:47:08 +00:00
Sato Hiroyuki fc66c18349 Fix travis failed randomly by timeout. 2013-03-19 12:53:12 +09:00
Sato Hiroyuki e00e54b69c Fix timeout error while showing the very large repo like git repo. 2013-03-19 10:36:40 +09:00
Sato Hiroyuki 46fa92187d Refactor: removing duplicate code. 2013-03-19 10:00:29 +09:00
Dmitriy Zaporozhets 7587a3b2fc fixed check for snippets module enabled 2013-03-18 23:44:57 +02:00
Dmitriy Zaporozhets 747292e2d3 reorder features list in project -> edit page 2013-03-18 23:38:16 +02:00
Dmitriy Zaporozhets b765a7958d Move snippets to own tab as feature. Make it disabled for new projects by default 2013-03-18 23:33:41 +02:00
Dmitriy Zaporozhets 112dc875ba feature: wiki -> new page 2013-03-18 23:08:54 +02:00
Dmitriy Zaporozhets ae06a0aab8 Return own tab for wall. Improve Wiki nav. Removed attachments listing page 2013-03-18 22:43:14 +02:00
Alex Denisov 28e7d1a8bf Abilities added to /user and /sign_in requests 2013-03-18 20:11:28 +00:00
Dmitriy Zaporozhets 6956f1f6e1 Improve usability of project edit page 2013-03-18 20:50:41 +02:00
Dmitriy Zaporozhets 0c884498d2 Rename project_head partial to settings_nav 2013-03-18 19:35:27 +02:00
Dmitriy Zaporozhets 0eccc08015 show project description in project listing on dashboard 2013-03-18 19:22:15 +02:00
Andrey Kumanyaev 0f39610532 Add control of action in project to team assigment 2013-03-18 16:07:04 +04:00
Andrey Kumanyaev a0f2fbc250 Fix bug with downgrade permissions on first project assigment to team 2013-03-18 15:44:26 +04:00
Dmitriy Zaporozhets aa5327a565 Fix project_limit being ignored on signup 2013-03-18 13:22:41 +02:00
Dmitriy Zaporozhets 3513902396 Merge pull request #3242 from murank/fix_failure_of_checking_merge_requests
Fix failure of cheking a merge request after conflict.
2013-03-18 03:39:51 -07:00
Dmitriy Zaporozhets d8ad01bb6e Merge pull request #3243 from lyda/misspellings
Result of misspellings run.
2013-03-18 03:37:37 -07:00
Kevin Lyda 415bade302 Result of misspellings run.
Most of these are comments but a few are strings for users.

Might be an idea to run this from time to time:
https://github.com/lyda/misspell-check

It runs mostly clean now.
2013-03-17 19:46:54 +00:00
murank 77295b00b8 Fix the order of clearing a satellite 2013-03-17 23:50:20 +09:00
Dmitriy Zaporozhets a96e0ec57e Merge pull request #3240 from DanKnox/fix_wiki_migrator
Fix Wiki migration task and add more test coverage.
2013-03-17 04:48:27 -07:00
Dan Knox 330fe4162e Fix Wiki migration task and add more test coverage.
There was an error in the #extract_attributes_from_page method that
caused an exception when checking to see if a page named "Home"
already exists.

The check occurs to handle the renaming of the main index page to
"Home" to match the Gollum standard. If there is already a page
called "Home" then the migrator will leave that page and create
the Index page as usual. Users will need to manually rename their
old "Home" page to something else then rename their "Index" page
to "Home". Fortunately, I would be highly surprised if this case
ever comes up.

I also added more verbosity to the logging so if an error does
occur, it will be easier to track down which Wiki page is causing
the problem.
2013-03-16 18:01:48 -07:00
Dmitriy Zaporozhets c367cc5ca6 Show projet name with namespace on team _projects widget 2013-03-16 14:40:16 +02:00
Dmitriy Zaporozhets cf848fd06d Merge pull request #3217 from chrislawlor/2437
Adds DB-sensitive tablename escape for backup task.
2013-03-16 02:26:01 -07:00
Dmitriy Zaporozhets 699c9cd499 Gemfile.lock with gollum 2013-03-15 18:50:45 +02:00
Dmitriy Zaporozhets 9f3a593092 Merge pull request #3230 from DanKnox/update_gollum_repo_location
Update gollum repository location in the Gemfile.
2013-03-15 09:46:23 -07:00
Sytse Sijbrandij 50c05b71b7 Update links to GitLab.com after renaming of GitLab cloud. 2013-03-15 17:33:43 +01:00
Dan Knox 8403e99f28 Update gollum repository location in the Gemfile.
Github just moved the Gollum repository to it's own organization.
This commit updates the Gemfile to point to the new repo location.

I also added a specific ref pointer to a version that is known to
work well just in case they slip up and break their master branch
right at the same time someone happens to be installing or updating
Gitlab. This is about the safest we can get until they put out the
next release that resolves the Pygments dependency issue.
2013-03-15 09:05:02 -07:00
Dmitriy Zaporozhets fdfc408d87 version up to beta1 2013-03-15 18:01:03 +02:00
Dmitriy Zaporozhets d75cb57f9c remove separator between search & icons in header 2013-03-15 17:35:54 +02:00
Dmitriy Zaporozhets 3c050a29a7 Merge branch 'DanKnox-use_gollum_wikis' 2013-03-15 17:21:13 +02:00
Dmitriy Zaporozhets 94f0493999 few fixes afte merge gollum wiki 2013-03-15 17:21:01 +02:00
Dmitriy Zaporozhets 71ab011a17 Merge branch 'use_gollum_wikis' of https://github.com/DanKnox/gitlabhq into DanKnox-use_gollum_wikis
Conflicts:
	app/views/layouts/project_resource.html.haml
	app/views/wikis/edit.html.haml
	app/views/wikis/pages.html.haml
	app/views/wikis/show.html.haml
	spec/features/gitlab_flavored_markdown_spec.rb
2013-03-15 16:55:07 +02:00
Dmitriy Zaporozhets 4f23c30ace Fix highlight line for solarized theme 2013-03-15 16:20:40 +02:00
Dmitriy Zaporozhets 86e23a584a spianch -> profile -> specify within block 2013-03-15 16:05:07 +02:00
Dmitriy Zaporozhets 2449bea2c4 restyle header a bit 2013-03-15 15:39:47 +02:00
Dmitriy Zaporozhets 21b1fee92c reannotated 2013-03-15 15:16:02 +02:00
Dmitriy Zaporozhets 2a04341fba finish up with solarized dark 2013-03-15 15:14:56 +02:00
Dmitriy Zaporozhets 8cad1c9f4c add dark solarized theme for code preview 2013-03-15 15:09:34 +02:00
Dmitriy Zaporozhets 7799b5bda6 Merge branch 'feature/writeboard' 2013-03-15 14:22:49 +02:00
Dmitriy Zaporozhets 35ad4fe7db Use wiki tab for wiki, wall, snippets 2013-03-15 14:20:03 +02:00
Dmitriy Zaporozhets 39bbdc468f on wall subpage active tab should be wiki too 2013-03-15 09:39:50 +02:00
Dmitriy Zaporozhets 5bf88506ec rename writeboards to wiki 2013-03-15 09:39:07 +02:00
Dmitriy Zaporozhets 2681a01bcf add resize button for better wiki reading 2013-03-14 22:57:38 +02:00
Dmitriy Zaporozhets a685624d27 Merge wiki, wall & snippets under one tab - writeboards 2013-03-14 22:24:27 +02:00
Dmitriy Zaporozhets 753ecbdcec Change spinach tab tests to fit new tabs navigation 2013-03-14 21:51:44 +02:00
Dmitriy Zaporozhets 38ecec4472 Remove tree single-tab panel 2013-03-14 19:50:57 +02:00
Chris Lawlor 3df5253cc3 Adds DB-sensitive tablename escape for backup task.
Uses ActiveRecord::Base.connection.quote_table_name.
Fixes issue 2437.
2013-03-14 13:30:25 -04:00
Dmitriy Zaporozhets 5c4e74acc3 Add settings tab to project. Move all project administration there 2013-03-14 19:28:29 +02:00
Dmitriy Zaporozhets d2b882fae5 Fix spinach tests 2013-03-14 17:13:00 +02:00
Dmitriy Zaporozhets da3bc14d80 removed mistype 2013-03-14 14:02:56 +02:00
Dmitriy Zaporozhets a8b1f8c0e5 use refresh icon instead loader gif 2013-03-14 14:02:24 +02:00
Dmitriy Zaporozhets 88d42c2e1c Replace projects_box with ui-box. Fixed team spinach test 2013-03-14 13:12:11 +02:00
Dmitriy Zaporozhets e84df44ea0 Redesign search filters 2013-03-14 13:11:20 +02:00
Dmitriy Zaporozhets 4673c85379 add teams to search autocomplete 2013-03-14 12:43:08 +02:00
Dmitriy Zaporozhets 441d256188 Rebuild team area 2013-03-14 12:38:43 +02:00
Dmitriy Zaporozhets f4f36f78dd Remove separate search page from group 2013-03-14 12:37:28 +02:00
Dmitriy Zaporozhets cc1dd624aa Restyled group -> edit area. Use select2 for transfer autocomplete 2013-03-14 11:31:33 +02:00
Dmitriy Zaporozhets 2f6d289f32 style select2-searching too 2013-03-14 10:20:45 +02:00
Dmitriy Zaporozhets 0e57085795 Merge branch 'feature/select2-user-ajax' 2013-03-14 10:20:25 +02:00
Dmitriy Zaporozhets ef05423f47 Finish select2-ajax for users. Added Select2Helper for tests 2013-03-14 10:16:27 +02:00
Dan Knox d69a37e0b7 Fix whitespace on MARKUPS constant in GollumWiki class. 2013-03-14 00:07:01 -07:00
Dan Knox 6d25484417 Limit available Wiki formats to Markdown and RDoc. 2013-03-13 23:34:50 -07:00
Dan Knox 7665b1de7e Use Gitlab Markdown for Markdown files and Gollum to render the rest.
This commit enables the usage of the Gitlab Markdown post processing
on all Markdown formatted files. For file types that do not contain
Markdown, it defaults to the Gollum native renderer to process the
content.
2013-03-13 23:31:08 -07:00
Dmitriy Zaporozhets 10f14136f5 fix setting gon.api_token 2013-03-13 23:45:47 +02:00
Dmitriy Zaporozhets bdcaf21ea7 Allow single/multiple user select 2013-03-13 23:19:09 +02:00
Dmitriy Zaporozhets 7316055ac8 multiselect for ajax-users-select2 2013-03-13 23:19:09 +02:00
Dmitriy Zaporozhets bf17d976a7 add api users filter and integrate users select2 2013-03-13 23:19:09 +02:00
Dmitriy Zaporozhets 163908b393 user select2 javascript 2013-03-13 23:19:09 +02:00
Dmitriy Zaporozhets 1bba46d661 md5 and utf_encode js libraries 2013-03-13 23:19:09 +02:00
Dmitriy Zaporozhets 67e2cf8864 select2-rails gem added 2013-03-13 23:19:09 +02:00
Dmitriy Zaporozhets d1a5e370f3 show mail-to and block buttons on /admin/users/:id page 2013-03-13 23:15:39 +02:00
Dmitriy Zaporozhets 963c212b68 UserTeam spinach fixed 2013-03-13 22:30:33 +02:00
Dmitriy Zaporozhets 496b7da7a0 Fix spinach tests 2013-03-13 21:58:32 +02:00
Dmitriy Zaporozhets 1587caa3e4 Use name+username in team -> new 2013-03-13 19:24:30 +02:00
Dmitriy Zaporozhets fa9a8c3847 Remove team_member show page -> use user_path instead 2013-03-13 19:16:36 +02:00
Dmitriy Zaporozhets 366bc32013 stub git shell mv_repository 2013-03-12 18:59:25 +02:00
Dmitriy Zaporozhets aecb37623e ask users to use ruby 1.9.3 for now 2013-03-12 14:16:55 +02:00
Dmitriy Zaporozhets 70fc1c5021 cleanup ProjectMover 2013-03-12 14:13:25 +02:00
Dmitriy Zaporozhets f1c24f40f9 fix spinach after #3196 2013-03-12 14:10:20 +02:00
Dmitriy Zaporozhets 6755d9908f Merge pull request #3196 from Undev/feature/broken-projects-search-23049
Broken projects search on dashboard
2013-03-12 04:31:57 -07:00
Andrew8xx8 fce22dfa2f Tests for dashboard projects fixed 2013-03-12 15:15:14 +04:00
Dmitriy Zaporozhets 147b93ee3e check gitlab-shell version in gitlab:check 2013-03-12 12:53:07 +02:00
Dmitriy Zaporozhets 102695530b fix project move email 2013-03-12 12:40:49 +02:00
Dmitriy Zaporozhets 59b36f2032 Use gitlab-shell to move repos. Requires gitlab-shell v1.1.0 2013-03-12 12:37:53 +02:00
Andrew8xx8 804ae05c58 Tests improved 2013-03-12 13:41:23 +04:00
Andrew8xx8 23f8f13ea4 Search fields were have same id's. Fixed 2013-03-12 13:41:23 +04:00
Andrew8xx8 072883fd08 Search projects on dashboard was not worked. Fixed 2013-03-12 13:26:45 +04:00
Dmitriy Zaporozhets b1e425511f restyle and cleanup emails 2013-03-12 10:46:04 +02:00
Dmitriy Zaporozhets 7367f1cfd8 Merge pull request #3192 from hiroponz/convert-to-coffee
Convert branch-graph.js to branch-graph.js.coffee
2013-03-11 06:48:16 -07:00
Dmitriy Zaporozhets dc3590d619 fix api internal test 2013-03-11 15:47:44 +02:00
Sato Hiroyuki 197f9abedf Covert to coffee. 2013-03-11 21:41:24 +09:00
Dmitriy Zaporozhets 11b57d979c Reduce amount of user info provided with internal api 2013-03-11 14:35:00 +02:00
Sato Hiroyuki b8f070f0d1 Rename to coffee. 2013-03-11 21:32:44 +09:00
Dmitriy Zaporozhets a29c883b5b Merge pull request #3170 from Asquera/api/system_hooks_adjustments
API: system hook request functions and documentation updated
2013-03-10 23:56:29 -07:00
Dan Knox f0aa54e0fb Create Wiki migration task.
This commit adds a new Rake task for migrating all of your existing
Wiki content from your database into new Gollum repositories.

The bulk of the logic happens within the `WikiToGollumMigrator`
class which is decently test covered and located in the lib directory.

The new Rake task can be executed by running:

   `bundle exec rake gitlab:wiki:migrate`

It will output a nice log of every project that it migrates along
with success or failure messages.

I have used it on my own installation to migrate my Wikis successfully.
2013-03-10 19:10:44 -07:00
Dan Knox 1479f17227 Add Spinach coverage for Gollum Wiki system and correct the Delete link.
The previously failing Spinach steps have been fixed with this commit.
I have also added new steps that cover the entire usage of the Wiki
system.

The new Spinach steps revealed a minor bug in the Delete page process.
The path for the "Delete this page" button was previously set to
`project_wikis_page(@project, @wiki)` when it should have been
using the singular `project_wiki_page(@project, @wiki)` path helper.

The link has been corrected and all steps are now passing.
2013-03-10 14:59:20 -07:00
Dmitriy Zaporozhets 269a985948 fixed travis env, added coverage badge 2013-03-10 20:29:34 +02:00
Dmitriy Zaporozhets 96fbef60f9 add coveralls.io to travis builds 2013-03-10 20:26:27 +02:00
Dmitriy Zaporozhets 473efc82b6 Group and team rss is valid now 2013-03-10 12:16:57 +02:00
Dmitriy Zaporozhets 8812d9dee2 Move groups and teams to tabs on dashboard. Remember tab with cookie 2013-03-10 11:57:14 +02:00
Dmitriy Zaporozhets 96c627edd8 Merge pull request #3169 from hiroponz/refactor-network-graph
Refactor network graph
2013-03-10 01:00:14 -08:00
Dan Knox ea9b3687db Replace current Wiki system with Gollum Wikis.
This commit replaces the old database backed Wiki system with the
excellent Gollum git based Wiki system.

The UI has been updated to allow for utilizing the extra features
that Gollum provides. Specifically:

* Edit page now allows you to choose the content format.
* Edit page allows you to provide a commit message for the change.
* History page now shows Format, Commit Message, and Commit Hash.
* A new Git Access page has been added with the Wiki Repo URL.
* The default page has been changed to Home from Index to match
the Gollum standard.

The old Wiki model has been left in tact to provide for the
development of a migration script that will move all content stored
in the old Wiki system into new Gollum Wikis.
2013-03-09 16:39:51 -08:00
Dmitriy Zaporozhets 8e8372d5ce better logo images for header 2013-03-10 00:12:25 +02:00
Dmitriy Zaporozhets 9c709be335 fix event relative date being cached 2013-03-08 13:14:47 +02:00
Dmitriy Zaporozhets bc15713569 Merge pull request #3173 from m4tthumphrey/patch-1
Added system hooks link to doc index
2013-03-08 02:08:09 -08:00
Matt Humphrey 7fb2999c60 Added system hooks link to doc index 2013-03-08 09:37:00 +00:00
Sebastian Ziebell 562de2a438 Merge branch 'master' into api/system_hooks_adjustments 2013-03-07 17:59:27 +01:00
Sebastian Ziebell 32f1eaaf0f API: system hooks API functions and documentation updated
* updated system hooks documentation and code comments
* fixed access to system hooks if no user given resulting in a `500 Server Error`
* added tests
2013-03-07 17:56:11 +01:00
Dmitriy Zaporozhets a7055be1fd Merge pull request #2835 from Asquera/fixes/api
Fix API return codes
2013-03-07 08:33:34 -08:00
Sebastian Ziebell ecf53bb9e6 API: fixes project creation and removed redundant info 2013-03-07 15:11:33 +01:00
Sebastian Ziebell 3374027e3a Merge branch 'master' into fixes/api, code clean up and tests fixed
Conflicts:
	doc/api/projects.md
	spec/requests/api/projects_spec.rb
2013-03-07 14:51:56 +01:00
Dmitriy Zaporozhets d2cec12632 block user should not be able to push 2013-03-07 14:18:30 +02:00
Sato Hiroyuki c0d312bebe Refactor: Removing a if statement, because the nil value is already removed in the view template. 2013-03-07 21:10:40 +09:00
Sato Hiroyuki b7e5f4556b Refactor: Removing the duplicated code. 2013-03-07 21:10:27 +09:00
Sato Hiroyuki 79cd1ca304 Refactor: change the map hash from a local variable to private variable. 2013-03-07 19:52:46 +09:00
Sato Hiroyuki ccc712b198 Refacor: removing the times array, because that is same with @commits array. 2013-03-07 19:16:51 +09:00
Dmitriy Zaporozhets 9c2a6e2013 Merge pull request #3047 from mikew/capistrano-deploy-example
Capistrano deploy example
2013-03-07 02:08:11 -08:00
Dmitriy Zaporozhets a32f85ac76 Merge pull request #3139 from rapofran/auto_focus_ldap_login
Autofocus to username input (LDAP login).
2013-03-07 01:55:19 -08:00
Dmitriy Zaporozhets 0d66fa89fc fix stubbed repo 2013-03-07 11:45:44 +02:00
Dmitriy Zaporozhets ca9098d898 remove last commit widget, added repo size and owner info on project home page 2013-03-07 11:14:19 +02:00
Sato Hiroyuki 8c5003cf75 Refactor: clean up models.
* Network::Commit
** Removing unnecessary accessors.
** Removing add_refs methods.
* Network::Graph
** Removing unnecessary accessors.
** The 3 times loop of commits don't need.
2013-03-07 17:56:01 +09:00
Dmitriy Zaporozhets e90277f9b5 show project description on public area 2013-03-07 10:08:43 +02:00
Dmitriy Zaporozhets 7c408960ce Merge pull request #3146 from amacarthur/AdminAPIs
Additional Admin APIs
2013-03-06 22:57:24 -08:00
Dmitriy Zaporozhets 52bf5b0e78 Merge pull request #3159 from peikk0/allow-redis-via-socket
Allow connection to Redis via unix socket
2013-03-06 22:43:13 -08:00
Sato Hiroyuki e03a018d28 Refactor: rename module and class names.
* Module: Graph -> Network
* Class: JsonBuilder -> Graph
2013-03-07 15:42:30 +09:00
Dmitriy Zaporozhets 1c2a7bc3cd Merge pull request #3161 from cabello/patch-1
Refactor README to split production/development environments
2013-03-06 22:31:25 -08:00
Sato Hiroyuki 784aa266bd Refactor: grouping parent and their space by including array. 2013-03-07 15:19:42 +09:00
Sato Hiroyuki 2f7f46b256 Refactor: replace "render :json = graph.to_json" to view template(show.json.erb).
Because model shouldn't know about view logic.
2013-03-07 15:19:32 +09:00
Danilo Cabello 3d662e5ccf Refactor README to split production/development environments 2013-03-06 20:06:56 -05:00
Sebastian Ziebell 39114d259c API: documentation contains infos to status codes in README file.
All the info to return codes from the API functions are available in the `README.md` file as suggested.
2013-03-07 00:15:57 +01:00
Pierre GUINOISEAU 67a61c80d1 Allow connection to Redis via unix socket
Allow connection to Redis via unix socket, using
unix:/var/run/redis/redis.sock for example.

Default behaviour does not change, except that the full Redis URL must
be configured, with redis:// for tcp or unix: for unix socket.
2013-03-06 22:06:12 +01:00
Dmitriy Zaporozhets 9dc46eee8e Return project description back 2013-03-06 22:56:48 +02:00
Dmitriy Zaporozhets 7b38a0de98 show highlighted code correctly inside issue body 2013-03-06 21:48:15 +02:00
Dmitriy Zaporozhets 872cf404eb fix js syntax error 2013-03-06 21:39:10 +02:00
Dmitriy Zaporozhets 19e9c736e7 add system hooks api docs to help content 2013-03-06 21:12:47 +02:00
Dmitriy Zaporozhets 08f29c322e update Gemfile.lock with https rubygems 2013-03-06 21:10:01 +02:00
Dmitriy Zaporozhets 89ce02ea5d Merge pull request #3158 from dosire/master
Use secure protocol
2013-03-06 10:22:45 -08:00
Sytse Sijbrandij bcaf3c2c3e Use secure protocol 2013-03-06 17:55:11 +01:00
Dmitriy Zaporozhets afee5303ff Merge pull request #3149 from m4tthumphrey/api-deploy-keys
Added methods to manage project deploy keys via API
2013-03-06 07:43:45 -08:00
Dmitriy Zaporozhets 65d78253cb Merge pull request #3156 from m4tthumphrey/api-system-hooks
Added methods to manage system hooks from API
2013-03-06 07:42:43 -08:00
Dmitriy Zaporozhets 0384ef46b8 Merge pull request #3157 from cabello/patch-1
Update README with references to versions.
2013-03-06 07:37:07 -08:00
Dmitriy Zaporozhets 4c1538a946 Use redis as cache storage. cache events 2013-03-06 17:30:48 +02:00
Danilo Cabello 4db5ec281e Update README with references to versions. 2013-03-06 10:20:46 -05:00
Matt Humphrey 1dd712ddc2 System hooks API. 2013-03-06 15:15:26 +00:00
Dmitriy Zaporozhets 40f1868194 Fix loading animation while browsing tree 2013-03-06 17:12:28 +02:00
Dmitriy Zaporozhets e38e2ce29a Merge pull request #3154 from hiroponz/fix-routing-error
Fix routing error
2013-03-06 05:08:09 -08:00
Sato Hiroyuki 83435e3d46 Adding sleep statements to allow sufficient time for the page to settle. 2013-03-06 16:36:11 +09:00
Sato Hiroyuki e7a67a5583 Don't set format manually, bacause set in routing. 2013-03-06 16:36:10 +09:00
Sato Hiroyuki bb63459d53 Fix routing errors.
It should fix #2598.
2013-03-06 16:36:10 +09:00
Sato Hiroyuki 6224ac0647 Add and fix some tests for routing.
It is linked to #2598.
2013-03-06 16:36:01 +09:00
Dmitriy Zaporozhets d03af842c5 fix public projects identations 2013-03-06 09:12:14 +02:00
Angus MacArthur 47abdc10ca Updated documentation for added Admin APIs 2013-03-05 23:48:40 -05:00
Sebastian Ziebell b5ef6d2268 API: refactored and simplified error handling in merge requests API 2013-03-05 23:43:05 +01:00
Sebastian Ziebell cce35b6d05 Fixes api 2013-03-05 22:33:45 +01:00
Sebastian Ziebell 61cfa2a7a6 Merge branch 'master' into fixes/api
Conflicts:
	lib/api/projects.rb
2013-03-05 22:29:49 +01:00
Matt Humphrey f411772e33 Project deploy keys API 2013-03-05 21:23:29 +00:00
Angus MacArthur 61ffcab60f Additional Admin APIs 2013-03-05 10:38:43 -05:00
Dmitriy Zaporozhets 6beae84ea3 reduce letter-spacing for top nav 2013-03-05 17:28:13 +02:00
Dmitriy Zaporozhets a99ad3d355 tree_heleper: concat html only if present. Avoid nil exception 2013-03-05 17:15:20 +02:00
Dmitriy Zaporozhets 9ba21dd0c4 better solution for #3027 2013-03-05 17:07:12 +02:00
Dmitriy Zaporozhets d5663e148f Merge pull request #2870 from mikew/relative-url-root-default
default gitlab.relative_url_root to ENV['RAILS_RELATIVE_URL_ROOT']
2013-03-05 06:54:31 -08:00
Dmitriy Zaporozhets 0c06b7fe20 Merge pull request #3106 from davidosomething/patch-1
Update doc/install/databases.md
2013-03-05 06:52:41 -08:00
Dmitriy Zaporozhets 3d45d300d8 Merge branch 'gliptak-omniauth_no_email_1' 2013-03-05 16:50:46 +02:00
Dmitriy Zaporozhets 2d2a235c06 fixed omniauth email spec 2013-03-05 16:50:37 +02:00
Dmitriy Zaporozhets da6b53a80e Merge branch 'omniauth_no_email_1' of https://github.com/gliptak/gitlabhq into gliptak-omniauth_no_email_1
Conflicts:
	app/observers/user_observer.rb
	spec/observers/user_observer_spec.rb
2013-03-05 16:48:18 +02:00
Dmitriy Zaporozhets d5d9f1c515 Merge pull request #2015 from elvanja/commits-group-and-sort-by-date-desc
fix: grouping commits by date desc doesn't sort the groups too
2013-03-05 06:40:13 -08:00
Dmitriy Zaporozhets c2ba868c9b Merge pull request #2954 from cabeca/fix-image-url-emoji
Fix image url for emoji.
2013-03-05 05:52:01 -08:00
Dmitriy Zaporozhets f22488f726 Merge pull request #3143 from Undev/state-machine-3
State machine 3
2013-03-05 05:38:16 -08:00
Dmitriy Zaporozhets f9200e118c remove custom font 2013-03-05 13:16:56 +02:00
Andrew8xx8 c6d6bd6ab4 Typo fixed 2013-03-05 14:29:44 +04:00
Dmitriy Zaporozhets 9bb35e7e59 Prevent app crash if team owner removed 2013-03-05 09:27:06 +02:00
Dmitriy Zaporozhets 3a09f02e11 Merge pull request #3109 from hiroponz/improve-network-graph
Improve network graph
2013-03-04 23:02:27 -08:00
J. Francisco Raposerias a40541c42d add autofocus to username input 2013-03-04 17:54:26 -03:00
Dmitriy Zaporozhets bf06b3196d Make clone widget read-only 2013-03-04 22:18:53 +02:00
Dmitriy Zaporozhets 730e79e787 better event-notes typography 2013-03-04 22:00:51 +02:00
Dmitriy Zaporozhets d54845a16a use md-typography for note content 2013-03-04 21:34:26 +02:00
Dmitriy Zaporozhets dc7507cfe7 = preserve do was ignored for empty project page so was replaced with filter 2013-03-04 21:12:36 +02:00
Dmitriy Zaporozhets 533693ab41 Fix dark color bg for wiki 2013-03-04 21:11:03 +02:00
Dmitriy Zaporozhets 24cc0faf2c add link ti public area 2013-03-04 20:11:23 +02:00
Dmitriy Zaporozhets c2082f4d78 Fix edit team page 2013-03-04 19:47:20 +02:00
Andrew8xx8 0d9a6fe7b1 User's blocked field refactored to use state machine 2013-03-04 18:52:30 +04:00
Andrew8xx8 9a06dd4aa1 Migrations added 2013-03-04 18:51:00 +04:00
Sato Hiroyuki 95b826071f Add some tests for network graph 2013-03-04 17:50:42 +09:00
Dmitriy Zaporozhets 152c6018b3 use grit_ext gem instead of fork 2013-03-04 08:56:54 +02:00
Dmitriy Zaporozhets d199de0444 Use gitlab-pygments gem 2013-03-04 08:54:00 +02:00
Dmitriy Zaporozhets 282b804556 use gitlab-grack gem 2013-03-03 22:08:04 +02:00
Dmitriy Zaporozhets 512ab1b61a Use gem for gitlab grit 2013-03-03 22:01:20 +02:00
Dmitriy Zaporozhets 4635ad83e6 Merge pull request #3126 from dosire/refer-to-vagrant-vm
Refer to virtual machine from the installation document.
2013-03-03 08:36:26 -08:00
Dmitriy Zaporozhets 5a80a28a18 Merge pull request #3123 from wtw/patch-1
Corrected some typos in gitlab.yml.example comments
2013-03-03 08:35:27 -08:00
Dmitriy Zaporozhets 891dc550e0 README code in lists 2013-03-03 18:22:56 +02:00
Dmitriy Zaporozhets 06807885cf fix readme code nesting 2013-03-03 18:21:36 +02:00
Dmitriy Zaporozhets bb7490771e Use proper markdown syntax for code in README.md 2013-03-03 17:51:24 +02:00
Dmitriy Zaporozhets 69159634d6 Merge pull request #3125 from dosire/development-doc-in-repo
Development doc in repo
2013-03-03 07:48:25 -08:00
Sytse Sijbrandij 50620b7df8 Refer to virtual machine from the installation document. 2013-03-03 12:38:01 +01:00
Sytse Sijbrandij 6e908f1a36 Sidekiq replaced resque. 2013-03-03 12:29:57 +01:00
Sytse Sijbrandij 5421f6b239 Small fixes and better quoting. 2013-03-02 23:38:48 +01:00
Sytse Sijbrandij 56d1cc5be5 Replacing the development guide. 2013-03-02 23:27:52 +01:00
Dmitriy Zaporozhets 5b4032d175 Merge pull request #3118 from 2called-chaos/dont_send_mails_twice
Do not send issue status mail twice if author = assignee
2013-03-02 10:48:22 -08:00
Dmitriy Zaporozhets 62562e4d0d Merge pull request #3119 from m4tthumphrey/patch-1
Add namespace_id to project creation via API
2013-03-02 10:47:19 -08:00
Dmitriy Zaporozhets bd3848c05b Merge pull request #3124 from dosire/comprehensive-readme
Cleaned up and enhanced readme.
2013-03-02 10:45:38 -08:00
Sytse Sijbrandij 737a449795 Cleaned up and enhanced readme.
Finishing touches.

Make the layout more consistent.
2013-03-02 13:04:57 +01:00
Dmitriy Zaporozhets 907c334fe0 fix decorate call for milestone users 2013-03-02 13:23:30 +02:00
Dmitriy Zaporozhets 86da625f1d Updated gems: omniauth, sinatra, foreman 2013-03-02 12:58:47 +02:00
wtw 1c8c5c76b6 Corrected some typos in gitlab.yml.example comments 2013-03-01 23:53:37 +01:00
Matt Humphrey 1c0c7bd6e3 Missed comma. 2013-03-01 16:36:19 +00:00
Matt Humphrey dd653f62f3 Added namespace_id to project creation via API
This allows you to set the namespace ID for projects via the the API. By default it is created for the current user. You can assign it to the global namespace by passing `GLN` which translates to 'Global Namespace'.
2013-03-01 16:34:11 +00:00
Dmitriy Zaporozhets 1cfc2b6fc7 Merge branch 'Undev-team-and-group-descriptions' 2013-03-01 16:26:39 +02:00
Dmitriy Zaporozhets ef646928e4 better presenting for group description 2013-03-01 16:26:26 +02:00
Sven Pachnit c280c3ce6d Do not send issue status mail twice if author = assignee 2013-03-01 15:09:14 +01:00
Dmitriy Zaporozhets 87f555e1ef fixed db/schema 2013-03-01 16:07:55 +02:00
Dmitriy Zaporozhets 5c3cb47c16 Merge branch 'team-and-group-descriptions' of https://github.com/Undev/gitlabhq into Undev-team-and-group-descriptions
Conflicts:
	db/schema.rb
2013-03-01 16:05:51 +02:00
Dmitriy Zaporozhets a73e58f70b draper raise now RuntimeError instead of NoMethodError 2013-03-01 15:59:43 +02:00
Dmitriy Zaporozhets dbcf4144ee use simple decorate on single commits 2013-03-01 15:35:22 +02:00
Dmitriy Zaporozhets 6aead7991f fix decorate calls on collections after draper update 2013-03-01 15:24:59 +02:00
Dmitriy Zaporozhets 520f02259c gems updated: unicorn, draper, github-markup 2013-03-01 15:15:29 +02:00
Dmitriy Zaporozhets 153a4c142d updated gems: haml-rails, carrierwave 2013-03-01 15:09:11 +02:00
Dmitriy Zaporozhets 5da7424f8d Gem updated: devise, grape, sidekiq, settingslogic 2013-03-01 14:36:12 +02:00
Sato Hiroyuki f8009a4858 Fix spinach errors. 2013-03-01 17:28:29 +09:00
Dmitriy Zaporozhets 22d6ce9873 Merge pull request #3082 from devote/patch-1
Distorted lines in `diff`
2013-02-28 23:46:07 -08:00
Dmitriy Zaporozhets 0b52c461da use grit_ext 0.6.2 2013-03-01 09:23:18 +02:00
Dmitriy Zaporozhets 7a0af60b51 update stamp 2013-02-28 21:14:00 +02:00
Dmitriy Zaporozhets 547ae558d7 update httparty 2013-02-28 21:11:12 +02:00
Dmitriy Zaporozhets ed9543ff5d update devise gem 2013-02-28 21:06:16 +02:00
Dmitriy Zaporozhets 00ae65b108 try to use stable version for database cleaner 2013-02-28 21:02:41 +02:00
Dmitriy Zaporozhets 1c517153a8 fix admin users tests 2013-02-28 19:56:36 +02:00
Dmitriy Zaporozhets 9a5c152c0e Merge pull request #3114 from Un1matr1x/docs
docs improvement
2013-02-28 09:48:34 -08:00
Un1matr1x 9c40002625 docs improvement 2013-02-28 18:30:07 +01:00
Dmitriy Zaporozhets b1f58fcaea allow any attachment filenames 2013-02-28 19:29:21 +02:00
Dmitriy Zaporozhets 115454f3ed created-by-me filter for issues inside project. Fixed global project.issues order 2013-02-28 17:46:28 +02:00
Dmitriy Zaporozhets 15b121d603 Merge branch 'master' of github.com:gitlabhq/gitlabhq 2013-02-28 17:10:06 +02:00
Dmitriy Zaporozhets afed5cb614 Merge branch 'Undev-link-to-issue-tracker' 2013-02-28 17:08:58 +02:00
Dmitriy Zaporozhets e1f77b9be0 Merge branch 'link-to-issue-tracker' of https://github.com/Undev/gitlabhq into Undev-link-to-issue-tracker
Conflicts:
	Gemfile.lock
2013-02-28 17:02:20 +02:00
Andrew8xx8 2f1f05d431 Fixed notes from randx 2013-02-28 18:55:35 +04:00
Dmitriy Zaporozhets e8ff9ad2f2 Merge pull request #2249 from jouve/fix_possible_spec_failure
fix one of the possible causes of build failures
2013-02-28 06:45:16 -08:00
Dmitriy Zaporozhets d452ffc2d0 Merge branch 'features/text_mail_templates' 2013-02-28 16:43:15 +02:00
Thomas Berger 7ed0878654 added text-templates for mail notification 2013-02-28 16:39:58 +02:00
Dmitriy Zaporozhets 6682689ab2 Merge pull request #3103 from ezkl/binding-of-caller-bump
Update binding_of_caller to v0.7.1
2013-02-28 06:36:11 -08:00
Andrew8xx8 d3f042a6f2 Css classes improved 2013-02-28 18:35:27 +04:00
Dmitriy Zaporozhets 6393ed6a41 add description what is gitlab-shell 2013-02-28 16:21:58 +02:00
Dmitriy Zaporozhets dec15a4142 Add instruction to edit gitlab-shell config 2013-02-28 16:13:24 +02:00
Andrew8xx8 9c747fbb95 Missing descriptions added 2013-02-28 17:37:02 +04:00
Andrew8xx8 cf6d9a2222 Tests for team and group descriptions added 2013-02-28 17:15:22 +04:00
Andrew8xx8 9959669f1c Desctiptions removed from dashboard 2013-02-28 17:15:22 +04:00
Andrew8xx8 3d4e32457b Table description indentation fixed 2013-02-28 17:15:22 +04:00
Andrew8xx8 ba5373805a Description added to user temas factory 2013-02-28 17:15:22 +04:00
Andrew8xx8 b4648c3b52 Spinach tests fixed 2013-02-28 17:15:22 +04:00
Andrew8xx8 5f657203a1 Description added to temas 2013-02-28 17:15:22 +04:00
Andrew8xx8 9f45e01e84 Description to groups added 2013-02-28 17:14:21 +04:00
Andrew8xx8 1dab19d0d7 DB schema updated 2013-02-28 16:30:47 +04:00
Andrew8xx8 cff845784e Show Issues tracker select only if one or more remote issue trackers available 2013-02-28 16:11:14 +04:00
Andrew8xx8 8caccae454 Issue helper tests improved 2013-02-28 16:11:14 +04:00
Andrew8xx8 b6d0f2852d Issues link from project page follows on remote bug tracker if it selected now 2013-02-28 16:11:14 +04:00
Andrew8xx8 ab98db73a3 Issues tracker settings enableds/disableds without page reloading now 2013-02-28 16:11:14 +04:00
Andrew8xx8 bca72eac74 Default issue tracker name added to gon variables 2013-02-28 16:11:14 +04:00
Andrew8xx8 cf3cf3750e Gem gon added. It produces server-side variable values in javascript 2013-02-28 16:11:14 +04:00
Andrew8xx8 c6385e4135 Section name returned back to base 2013-02-28 16:11:13 +04:00
Andrew8xx8 c643b50dbd Default value for issues_tracker setting added 2013-02-28 16:11:13 +04:00
Andrew8xx8 9b606ede00 Wrong default section in config. Fixed. 2013-02-28 16:11:13 +04:00
Andrew8xx8 9e8a818696 Issues helper included to markdown helper 2013-02-28 16:11:13 +04:00
Andrew8xx8 16c720fd96 Issues helper improved 2013-02-28 16:11:13 +04:00
Andrew8xx8 f13600845d Migration added 2013-02-28 16:11:13 +04:00
Andrew8xx8 0afdf39dbc New field added 2013-02-28 16:11:13 +04:00
Andrew8xx8 62de22c142 External issue tracker params added to config 2013-02-28 16:10:01 +04:00
Andrew8xx8 68a7ecdaaf Project issue tracker functions refactored 2013-02-28 16:10:00 +04:00
Andrew8xx8 999fc2391b Issue tracker added to edit project form in admin area 2013-02-28 16:10:00 +04:00
Andrew8xx8 e6d2e56961 Issue tracker field added to projects 2013-02-28 16:10:00 +04:00
Andrew8xx8 8f621c9e06 Enumerize gem added 2013-02-28 15:15:53 +04:00
Dmitriy Zaporozhets fa6bf2c0f5 remove unnecessary center tag in devise layout 2013-02-28 12:08:25 +02:00
Dmitriy Zaporozhets 54d95f5897 Restyle flash message. Not it does not overflow head panel 2013-02-28 11:06:52 +02:00
Dmitriy Zaporozhets e6b5f4ade9 refactor finders in spianch:merge_request.feature 2013-02-28 09:43:48 +02:00
Dmitriy Zaporozhets 51b547f842 Commenting a failing test 2013-02-28 09:25:23 +02:00
Dmitriy Zaporozhets aa3109b84a Merge pull request #3104 from gitlabhq/contributing-file
Update contributing file with latest insights.
2013-02-27 23:11:06 -08:00
Sato Hiroyuki 2a687dd562 Show gravatar icon on tooltip. 2013-02-28 14:56:27 +09:00
Sato Hiroyuki 00d0e57e85 Commits are arranged below their first parent. 2013-02-28 11:46:17 +09:00
Sato Hiroyuki 14c2a37da2 A tip is made slanting. 2013-02-28 11:44:52 +09:00
Sato Hiroyuki 38fce3deb0 It improves detecting an overlap of a line 2013-02-28 11:44:40 +09:00
David c13f9adab8 Update doc/install/databases.md
Remove prompt $ from code line for uniformity
2013-02-27 17:09:14 -05:00
Sytse Sijbrandij 46bbeabcde Link to new contributing file and the requirements doc. 2013-02-27 22:17:46 +01:00
Sytse Sijbrandij 5f9bc743f5 Update contributing file with latest insights. 2013-02-27 21:51:46 +01:00
Ezekiel Templin 70e1b3b1cb Update `binding_of_caller` version
Updating this dependency fixed my Ruby 2.0 installation issues.
2013-02-27 14:32:36 -05:00
Dmitriy Zaporozhets 863d297ede reduce fonts size for wiki render 2013-02-27 21:10:23 +02:00
Dmitriy Zaporozhets 2c71c2e1df trying new readme 2013-02-27 21:05:57 +02:00
Dmitriy Zaporozhets 60fdc04d03 Merge pull request #3098 from Undev/important-migrations-fix
IMPORTANT! Data converting in migrations was wrong. Fixed
2013-02-27 10:52:42 -08:00
Dmitriy Zaporozhets b2a69262e1 Merge pull request #3101 from tsl0922/master
Fix project transfer error
2013-02-27 10:48:14 -08:00
Dmitriy Zaporozhets aceb747bb8 use system call to start sidekiq 2013-02-27 20:40:01 +02:00
Dmitriy Zaporozhets 92039dd677 Developers can merge MR if target branch is not protected 2013-02-27 20:20:31 +02:00
Sebastian Ziebell d269d107d8 API: fixed adding a note
Now the correct attribute is checked if it's available or not. Also fixed a test.
2013-02-27 18:12:02 +01:00
Sebastian Ziebell 3bb342b961 Merge branch 'master' into fixes/api 2013-02-27 17:52:59 +01:00
Sebastian Ziebell 7499f65014 API: extracted helper method to validate required parameters, code clean up
Added a helper method to check if required parameters are given in an API call. Can be used
to return a `400 Bad Request` return code if a required attribute is missing.
Code clean up and fixed tests.
2013-02-27 17:50:30 +01:00
Dmitriy Zaporozhets 33cd1ae9dc Update README 2013-02-27 18:09:48 +02:00
Sebastian Ziebell 43d7596030 Merge branch 'feature/api-documentation-fixes' of github.com:Xylakant/gitlabhq into fixes/api
Conflicts:
	doc/api/projects.md
2013-02-27 16:49:45 +01:00
Dmitriy Zaporozhets b3d648b4e8 Prevent duplicate merge events 2013-02-27 17:48:51 +02:00
Nihad Abbasov 3c5954b8c8 proper fix for #2300 2013-02-27 06:47:04 -08:00
Sebastian Ziebell 07f306d8af Merge branch 'master' into fixes/api 2013-02-27 15:15:47 +01:00
Sebastian Ziebell 3b3add35fb API: merge request documentation updated, added return codes to functions
The API documentation of merge requests contains info to status codes for all functions.
Required arguments are now checked in the merge requests API functions and a `400 Bad Request` error is
returned if they are not given.
2013-02-27 15:07:42 +01:00
Nihad Abbasov e4b67d3b18 Merge pull request #3095 from fdiary/update-grape-for-ruby2.0
update grape to 0.3.1 for ruby 2.0 support.
2013-02-27 06:06:02 -08:00
Nihad Abbasov 8d847b89d2 API: fix commits pagination
closes #2300
2013-02-27 06:00:33 -08:00
Sebastian Ziebell e96d77d3db API: issues documentation and API functions updated
The issues documentation is updated with infos to status codes and the deprecated `DELETE` function and
how to close an issue. A few more tests added to check status codes of API functions.
2013-02-27 14:36:20 +01:00
Sato Hiroyuki f11e855bdb Finding free space from the way near commit which is downward 2013-02-27 21:49:53 +09:00
Sebastian Ziebell dffc2b8a8b API: session documentation updated and test added 2013-02-27 12:58:06 +01:00
Sebastian Ziebell 873db06255 API: groups documentation updated, functions return different status codes
Updates the API documentation of groups with infos to return codes. The function calls
in the groups API have updated documentation and return `400 Bad Request` status code
if a required attribute is missing.
2013-02-27 12:34:45 +01:00
tsl0922 df63ab78a8 Fix project transfer error 2013-02-27 18:27:10 +08:00
Sebastian Ziebell e119b0a0cb API repository documentation updated, includes infos to return codes
The API documentation of repository is updated and now contains infos to status codes.
Code documentation is also adjusted for `GET /projects/:id/repository/commits` and includes infos to
pagination attributes. Tests are updated.
2013-02-27 11:24:12 +01:00
Sebastian Ziebell ac4a09e9cc Merge branch 'master' into fixes/api 2013-02-27 10:16:48 +01:00
Andrew8xx8 4a55c69877 Data converting migrations was wrong. Fixed 2013-02-27 12:53:36 +04:00
Dmitriy Zaporozhets 135418dcbf fixed popen test 2013-02-27 08:24:12 +02:00
Dmitriy Zaporozhets cba6e92436 move transfer logic out of project to service 2013-02-26 23:14:32 +02:00
Dmitriy Zaporozhets 0cf0487d65 Fix TestHookContext 2013-02-26 23:04:14 +02:00
Dmitriy Zaporozhets 4e5164338a specs for api/internal 2013-02-26 22:53:59 +02:00
Dmitriy Zaporozhets 2c5e4955c0 specs for Gitlab::Popen 2013-02-26 22:53:46 +02:00
Kazuhiko 3b548d9251 update grape to 0.3.1 for ruby 2.0 support.
add grape-entity, that is split from grape 0.3.0.
remove usage of deprecated error_format, that is removed in grape 0.2.3.
2013-02-26 21:31:45 +01:00
Sato Hiroyuki aa36f07a02 Fix the commits are not ordered commiter date.
It is fixed that the date label of network graph is broken.
2013-02-26 21:20:14 +09:00
Sato Hiroyuki d8a40d8c93 Move graph module from lib or vendor directory to app directory.
Because not autoloading lib directory at development mode.
2013-02-26 20:31:39 +09:00
Dmitriy Zaporozhets 9c252a60c1 remove tests for unexisting methods 2013-02-26 11:17:02 +02:00
Dmitriy Zaporozhets 15c0e58a49 remove unused code related to gitolite 2013-02-26 11:11:43 +02:00
Dmitriy Zaporozhets c08f19f275 email validation added 2013-02-26 11:09:32 +02:00
Dmitriy Zaporozhets f2cac135d5 Merge branch 'Undev-state-machine-stage-2' 2013-02-26 10:48:30 +02:00
Dmitriy Zaporozhets 5ac5510fd6 Fix automerge detection client-side since #3056 2013-02-26 10:47:27 +02:00
Dmitriy Zaporozhets d7b667fee2 Merge branch 'state-machine-stage-2' of https://github.com/Undev/gitlabhq into Undev-state-machine-stage-2
Conflicts:
	app/models/merge_request.rb
2013-02-26 10:38:40 +02:00
Dmitriy Zaporozhets 0cc95ef2f5 Merge pull request #2889 from kennytm/master
Show only ≤16 lines of codes in a discussion in a MR (issue #2860).
2013-02-26 00:32:02 -08:00
Dmitriy Zaporozhets 573942263a Fix issue edit button showup 2013-02-26 10:17:09 +02:00
Dmitriy Zaporozhets c9b1df1201 Fixing tests 2013-02-25 23:16:34 +02:00
Dmitriy Zaporozhets 39fe9b644f Add close issue to note actions bar 2013-02-25 23:10:50 +02:00
Dmitriy Zaporozhets 8de19b259e proper name for issue partial 2013-02-25 22:56:10 +02:00
Dmitriy Zaporozhets 5e69ad2cea Sanitize user profile input 2013-02-25 22:51:15 +02:00
Dmitriy Zaporozhets db8baf2895 Since search_autocomplete_source rendered with raw all human input should be sanitized to prevent XSS 2013-02-25 22:12:11 +02:00
Dmitriy Zaporozhets d0646babdb Remove gitolite mention from docs 2013-02-25 21:45:33 +02:00
Dmitriy Zaporozhets f17fe7fff2 correct indentation in activity observer 2013-02-25 21:26:15 +02:00
Dmitriy Zaporozhets 7bab81b199 Move git post push logic to service 2013-02-25 21:21:38 +02:00
Dmitriy Zaporozhets 9611640e38 Merge pull request #3052 from Undev/system-hook-observer-improves
System hooks code & logic refactoring
2013-02-25 10:15:23 -08:00
Dmitriy Zaporozhets 72d48376ab Merge pull request #3057 from axilleas/master
Remove function 'check_issue_1059_shell_profile_error' from check.rake as it is not needed anymore
2013-02-25 10:11:52 -08:00
Dmitriy Zaporozhets 580a56b6ff Update grit to handle symlinks 2013-02-25 19:44:37 +02:00
Dmitriy Zaporozhets 262f80a68a Update grit for ruby 2.0 support 2013-02-25 19:22:46 +02:00
Dmitriy Zaporozhets 3cf814ff9d remove duplicate finder in features/steps/path 2013-02-25 10:28:59 +02:00
Dmitrii Pakhtinov e975ed836d Distorted lines in `diff`
Distorted lines in `diff` when viewing files `windows-style-line-separator: \r\n`
2013-02-25 12:21:38 +04:00
Dmitriy Zaporozhets c3659ef2e5 Fix merge request migration for postgres 2013-02-25 08:53:49 +02:00
Dmitriy Zaporozhets ed60b6fc90 Merge pull request #3071 from dmedvinsky/fix-webhook-auth
Fix WebHook and special symbols in credentials
2013-02-24 04:13:15 -08:00
Dmitriy Zaporozhets 3432c9aed7 Merge pull request #3072 from dmedvinsky/add-title-remove-member
Add title for "Remove from team" button
2013-02-24 04:04:58 -08:00
Dmitriy Zaporozhets 46d353304a Merge pull request #3073 from dmedvinsky/cosmetic-search-transition
Add transition on search box
2013-02-24 04:03:16 -08:00
Dmitry Medvinsky b0fb68c191 Add transition on search box
It's kind of cool trend to use animated-expanding search box nowadays.
E.g. see Github.
2013-02-22 20:50:17 +04:00
Dmitry Medvinsky 30180ed82e Add title for "Remove from team" button 2013-02-22 20:29:03 +04:00
Dmitry Medvinsky dbd9d8d4c3 Fix WebHook and special symbols in credentials
When using web hook with credentials secured web resource, one needs to
put the credentials in the hook URL.

If the credentials contain special symbols (e.g. @ or #), it should be
URL-quoted (e.g. %40 instead of @).

But when Gitlab is making a request, it should unquote the symbols
before base64-encoding them.
2013-02-22 20:10:25 +04:00
Sebastian Ziebell 9ee6c58acc API documentation updated for project snippets.
The API Documentation for project snippets got infos to return codes. Tests are added
to check status codes when handling project snippets.
2013-02-21 21:13:46 +01:00
Sebastian Ziebell ce9e35c295 API: Fixes tests for changed hook deletion 2013-02-21 21:04:16 +01:00
Dmitriy Zaporozhets 292dffc228 Add new entries to CHANGELOG 2013-02-21 17:01:02 +02:00
Dmitriy Zaporozhets 99b6750e15 Restore old order for MR lists. Fix failing tests 2013-02-21 16:26:09 +02:00
Dmitriy Zaporozhets 4a137651ec Fix merge request closed filter. Fixed one more test 2013-02-21 14:11:24 +02:00
Dmitriy Zaporozhets be817c53c6 Update database cleaner. Remove postgres from travis build list since it gives us deadlocks always 2013-02-21 14:11:04 +02:00
Dmitriy Zaporozhets cce14e0b01 Removing ambiguity and non-working selectors 2013-02-21 13:28:05 +02:00
Dmitriy Zaporozhets 5aeaf248f1 Fixing rspec after upgrade to capybara pt1 2013-02-21 13:09:47 +02:00
Dmitriy Zaporozhets 2d5096b678 Fix ambiguity for member link in test 2013-02-21 12:39:09 +02:00
Dmitriy Zaporozhets 37187336b1 Team features are green now 2013-02-21 12:27:52 +02:00
Andrew8xx8 c77730dd71 An Id must be sended to queue 2013-02-21 14:04:06 +04:00
Dmitriy Zaporozhets 28da2a8bdc Monkeypatch satellite call for merge request in tests 2013-02-21 11:44:33 +02:00
Dmitriy Zaporozhets 42ce2c1080 improve selectors to pass capybara 2.0 2013-02-21 11:27:22 +02:00
Dmitriy Zaporozhets 03f6a28ec0 move capybara scenarios to spec/features 2013-02-21 10:41:37 +02:00
Dmitriy Zaporozhets 9f722427e5 Add LoginHelpers to feature type 2013-02-21 10:41:13 +02:00
Dmitriy Zaporozhets 830da0c218 Update capybara, poltergeist, spinach, rspec-rails 2013-02-21 10:28:13 +02:00
Dmitriy Zaporozhets af3138e801 Update sidekiq 2013-02-21 10:00:18 +02:00
Dmitriy Zaporozhets 585259b837 Fix merge state detection 2013-02-21 09:25:07 +02:00
Sebastian Ziebell 4a60c377b8 API documentation update for milestones
Updated the milestones API documentation and added return codes descriptions.
2013-02-20 22:51:59 +01:00
mikew 4243105eb5 deploys under git user 2013-02-20 17:11:41 -04:30
Sebastian Ziebell 33c1463645 API: fixes return codes for notes, documentation updated
The notes API documentation updated with return codes. API now returns `400 Bad Request` if
required attributes are not present. Return codes are documented now, also tested in added tests.
The documentation now reflects the current state of the API.
2013-02-20 22:17:05 +01:00
Axilleas Pipinellis a3bbc5956b We don't need to check .profile now that gitolite is replaced by gitlab-shell 2013-02-20 17:36:09 +02:00
Andrew8xx8 6d68923edc human_merge_status replaced by human_merge_status_name 2013-02-20 17:50:29 +04:00
Andrew8xx8 52e0df5c23 class.self methods moved to scopes 2013-02-20 17:50:24 +04:00
Andrew8xx8 e2d94e0719 State machine added for merge_status field 2013-02-20 17:49:48 +04:00
Andrew8xx8 1b7b17d12a Database schema updated 2013-02-20 17:49:40 +04:00
Andrew8xx8 8ba27b7b46 Migrations for convertion merge_status added 2013-02-20 17:49:33 +04:00
Sebastian Ziebell f0e417091c Merge branch 'master' into fixes/api
Conflicts:
	spec/requests/api/projects_spec.rb
2013-02-20 14:30:11 +01:00
Dmitriy Zaporozhets ba1a453ef3 Merge pull request #3053 from m4tthumphrey/api-delete-hook-by-id
Fix RESTfulness of project hook deletions by API
2013-02-20 05:22:38 -08:00
Sebastian Ziebell 512d826cc3 API: fixes test if project limit is reached
Fixes a test that checks if the project limit is reached.
2013-02-20 14:15:04 +01:00
Matt Humphrey dddf6eab2d Removed unnecessary paramter hash. Also tidied up hash format in hook creation spec 2013-02-20 11:45:54 +00:00
Sebastian Ziebell eefb27f5ae Merge branch 'master' into fixes/api
Conflicts:
	spec/requests/api/projects_spec.rb
2013-02-20 12:43:32 +01:00
Matt Humphrey 33c513274d Fix RESTfulness of project hook deletions by API 2013-02-20 11:35:36 +00:00
Andrew8xx8 99760edc75 Method moved to service 2013-02-20 15:33:03 +04:00
Sebastian Ziebell 1b97a2eee8 API: fixes return codes, documentation updated with status codes, tests added
The users API updated with return codes, e.g. if required parameters are missing
a `400 Bad Request` error is returned instead of `404`. Fixes return codes of functions,
e.g. deletion of a ssh key is an idempotent function now.
The API documentation is updated to reflect the current status of the API. Descriptions
are more detailed and complete, infos to return values are added to all functions.
2013-02-20 12:23:56 +01:00
Andrew8xx8 aa1780d03c System hooks execution moved to System hook service 2013-02-20 14:53:15 +04:00
Dmitriy Zaporozhets b7ac654b88 Merge pull request #2988 from Asquera/error_project_limit
API: creating last project before limit returns 404
2013-02-20 02:47:30 -08:00
Dmitriy Zaporozhets 25e4c512d4 Merge pull request #3011 from Asquera/fix_access_to_nonvisible_hook
API: fixes visibility of project hook
2013-02-20 02:45:07 -08:00
Dmitriy Zaporozhets c56d32c73e Merge pull request #3038 from dmedvinsky/commit-time
Add commit full time tooltip to `commited_ago`
2013-02-20 02:41:35 -08:00
Dmitriy Zaporozhets 36ea32162d Merge pull request #3045 from eldios/patch-1
Update doc/install/installation.md
2013-02-20 02:29:16 -08:00
Dmitriy Zaporozhets e7a5ec3376 Merge pull request #3043 from sjmulder/state-seed
Update seeds for state columns
2013-02-20 02:28:44 -08:00
Andrew8xx8 468c8c5f0a A little bit of codestyle improvments 2013-02-20 13:15:56 +04:00
Nihad Abbasov 08f665cf28 API docs: fix new milestone parameters 2013-02-20 11:41:32 +04:00
Mike Wyatt c6f5b96ba8 allow force=yes rake gitlab:setup for capistrano deploy:cold 2013-02-20 00:14:03 -03:30
Mike Wyatt bed500090e Capistrano deployment example scripts 2013-02-20 00:13:18 -03:30
Lele 49a46d6ca9 Update doc/install/installation.md
changed installation overview list step #4
Gitolite -> GitLab shell
2013-02-20 02:01:39 +01:00
Sijmen Mulder 3a45e6010f Update seeds for state columns 2013-02-19 22:14:28 +01:00
Dmitry Medvinsky eb58529757 Add commit full time tooltip to `commited_ago` 2013-02-19 19:56:43 +04:00
Dmitriy Zaporozhets 6bc9249b38 Merge pull request #3034 from Andrew8xx8/patch-2
Event already has author relation
2013-02-19 03:27:42 -08:00
Andrew Kulakov 303fb06c96 Event already has author relation 2013-02-19 15:22:29 +04:00
Dmitriy Zaporozhets 401041cfd6 Merge pull request #3032 from raphendyr/fix_development_environment
Fix development fixture for gitlab_shell
2013-02-19 01:49:36 -08:00
Dmitriy Zaporozhets 67465dc5ef Fix private flag for project 2013-02-19 11:45:49 +02:00
Jaakko Kantojärvi fab586bc87 Fix development fixture for gitlab_shell 2013-02-19 11:17:59 +02:00
Dmitriy Zaporozhets 5d72a3e133 Merge branch 'Undev-state-machine' 2013-02-19 11:04:54 +02:00
Dmitriy Zaporozhets 155703c613 Merge branch 'state-machine' of https://github.com/Undev/gitlabhq into Undev-state-machine
Conflicts:
	app/models/issue.rb
	app/models/merge_request.rb
2013-02-19 11:01:19 +02:00
Andrew8xx8 6e333d5075 Javascript widget fixed 2013-02-19 12:57:09 +04:00
Dmitriy Zaporozhets 52028dcd2d Merge pull request #3013 from crystax/master
Sort groups alphabetically on dashboard page
2013-02-19 00:51:08 -08:00
Dmitriy Zaporozhets bfc359ca61 Fix project filter for MR on dashboard 2013-02-19 09:43:41 +02:00
Andrew8xx8 d58eb62d68 Migrations iproved 2013-02-19 11:32:10 +04:00
Dmitry Moskalchuk f7ae1bce25 Syntax fix of sorting groups/users 2013-02-19 11:13:19 +04:00
Dmitriy Zaporozhets ba937b2b3d Dont show assigned_teams block unless any. Show count in filter 2013-02-18 21:21:24 +02:00
Dmitriy Zaporozhets a29db26cc9 Refactor and restyle team page for project 2013-02-18 21:10:49 +02:00
Dmitriy Zaporozhets e9d8d074a1 no projects message in group area 2013-02-18 20:31:43 +02:00
Dmitriy Zaporozhets 655e68a0ad Merge pull request #2998 from axilleas/master
Minor changes to installation and databases docs.
2013-02-18 10:02:32 -08:00
Dmitriy Zaporozhets b87ef427e9 Merge pull request #2990 from raphendyr/gitignore_and_logrotate
Change .gitignore to ignore logrotated log files.
2013-02-18 10:01:09 -08:00
Dmitriy Zaporozhets e049e18780 Merge pull request #2991 from raphendyr/username_change_disablation
Add option to disable username changing
2013-02-18 09:59:24 -08:00
Dmitriy Zaporozhets ea28519f57 Merge pull request #2996 from raphendyr/ssh_fingerprint_fix
Ssh fingerprint fix
2013-02-18 09:56:35 -08:00
Andrew8xx8 e5f048f44d Migrations refactored ro support data convertion 2013-02-18 18:54:30 +04:00
Dmitriy Zaporozhets 97de6f851b Fix not-working team memebership permissions change 2013-02-18 16:40:11 +02:00
Andrew8xx8 41e97a766b Creating test values moved to before 2013-02-18 17:52:39 +04:00
Andrew8xx8 d27ed43daa Hash syntax improved 2013-02-18 17:22:18 +04:00
Andrew8xx8 557a9fa321 Debug remomved 2013-02-18 17:16:29 +04:00
Andrew8xx8 ff94f29be5 States events fixed 2013-02-18 16:49:56 +04:00
Andrew8xx8 231d9e0426 Observer refactored to use StateMachine events 2013-02-18 16:49:17 +04:00
Dmitriy Zaporozhets 1481d1cfe0 Merge branch 'count_user_owned_projects' of /home/git/repositories/gitlab/gitlabhq 2013-02-18 12:46:45 +00:00
Dmitriy Zaporozhets 01a7250ba5 Add user to team he creates 2013-02-18 14:35:38 +02:00
Marin Jankovski 1734611181 Count owned projects, not just personal 2013-02-18 13:15:35 +01:00
Andrew8xx8 6074896cbf Spinach tests fixed 2013-02-18 14:43:50 +04:00
Andrew8xx8 69698aacbc Additional tests added to Issue 2013-02-18 14:43:50 +04:00
Andrew8xx8 b607c70e8f Additional tests added to Milestone 2013-02-18 14:43:50 +04:00
Andrew8xx8 0b4f4fe157 Migrations for StateMachine refactoring added 2013-02-18 14:43:50 +04:00
Andrew8xx8 1644117a1a Issue uses StateMachine now 2013-02-18 14:43:50 +04:00
Andrew8xx8 0b512af803 Milestone uses StateMachine now 2013-02-18 14:43:50 +04:00
Andrew8xx8 29f70acc98 Merge Request uses StateMachine now 2013-02-18 14:43:50 +04:00
Andrew8xx8 b45e9aefd3 Merge Request uses StateMachine now 2013-02-18 14:43:50 +04:00
Andrew8xx8 f97296597c Issuable consern uses StateMachine now 2013-02-18 14:43:49 +04:00
Andrew8xx8 8db3920c01 State renamed to merge_status 2013-02-18 14:43:49 +04:00
Andrew8xx8 26d4574ada State machine gem added 2013-02-18 14:43:49 +04:00
Sebastian Ziebell da040fc134 API documentation expanded with status code information
Information to return codes added to projects and users documentation.
2013-02-18 11:15:26 +01:00
Dmitriy Zaporozhets 020078663e Prevent xss attack over group name. Added regex validation for group and team name 2013-02-18 09:28:18 +02:00
Jaakko Kantojärvi c20be05a80 Fix ssh key test by adding valid ssh key 2013-02-17 21:31:48 +02:00
Jaakko Kantojärvi 27f4cf7542 Tests to validate that invalid keys are rejected 2013-02-17 21:31:20 +02:00
Dmitriy Zaporozhets cfdf94fc27 use attachment secure_url for Attachemnt page 2013-02-17 16:18:42 +02:00
Dmitriy Zaporozhets 0d3b75845a Merge pull request #3017 from jojosch/owner-link-admin
Fix link to owner of group and team in admin interface
2013-02-17 06:15:33 -08:00
Miguel Cabeça 157b038661 Include Riyad Preukschas suggestions. 2013-02-17 13:02:22 +00:00
Dmitriy Zaporozhets 1efeb1b562 redesign mars theme a bit. Better border color for search-input for dark theme 2013-02-17 12:16:19 +02:00
Dmitriy Zaporozhets 32a5548c41 Fix link color for dark theme 2013-02-17 12:05:26 +02:00
Johannes Schleifenbaum 3ae7a45d5a Fix link to owner of group and team in admin interface 2013-02-17 11:00:02 +01:00
Dmitriy Zaporozhets 9764ba6df2 create satellite for imported repo 2013-02-16 21:47:43 +02:00
Dmitriy Zaporozhets 42ffbea8e0 Fix logo alignment for default theme 2013-02-16 21:37:06 +02:00
Dmitriy Zaporozhets f45f033199 Add logo to deploy.html 2013-02-16 21:35:11 +02:00
Dmitriy Zaporozhets 18a496142b Reduce size of nav panel. Fixed nav background for IE. Refactored mars theme 2013-02-16 21:24:51 +02:00
Dmitry Moskalchuk a9c1b85e08 Sort groups/namespaces by human name 2013-02-16 19:40:33 +04:00
Dmitry Moskalchuk 2a4ef0fe49 Sort groups alphabetically on dashboard page 2013-02-16 19:11:36 +04:00
Sebastian Ziebell e9d3b96595 API: fixes visibility of project hook
When a user is not authorized to see the list of hooks for a project, he is
still able to access the hooks separately. For example if access to
`GET /projects/:id/hooks` fails and returns a `403 Unauthorized` error it is
still possible to access a hook directly via `GET /projects/:id/hooks/:hook_id`.

Fixes access, also added tests to check access and status codes of hooks.
2013-02-16 14:42:49 +01:00
Dmitriy Zaporozhets fa3cc1dd24 Merge branch 'features/attachment_server' of /home/git/repositories/gitlab/gitlabhq 2013-02-16 12:45:20 +00:00
Dmitriy Zaporozhets b729728536 uppercase Gitlab version and revision constants. check api return gitlab version now 2013-02-16 14:42:22 +02:00
Dmitriy Zaporozhets e65cc4f849 Merge pull request #2994 from dasbh/master
Fix gitlab:setup task on fresh installation
2013-02-16 01:10:36 -08:00
Dmitriy Zaporozhets d6394a00f3 Merge pull request #3002 from nafu/repo_patch
Fix file_name for archive
2013-02-16 01:09:45 -08:00
Dmitriy Zaporozhets c3a5aa159a Merge pull request #3003 from livedata/patch-1
fixed API access to the project
2013-02-16 01:08:33 -08:00
Axilleas Pipinellis a53f687fe6 Added creation of pids directory to fix #2995, replaced deprecated nginx init.d command with service one, some more clean-up 2013-02-16 08:24:36 +02:00
Axilleas Pipinellis b65e5b1e96 Nginx: edit actual file instead of symlink 2013-02-16 07:50:41 +02:00
Sebastian Ziebell beb00af0c1 API documentation extended with snippets, tags and commits
Documentation is updated with information how to handle snippets or how to access tags
and commits. Nearly all project specific functions are now described in the documentation.
A few previous entries have been updated with status codes, e.g. `401 Unauthorized`.
2013-02-15 18:50:52 +01:00
livedata bbd1bfd155 fixed API access to the project 2013-02-15 15:37:06 +01:00
Fumiya Nakamura 20868acc96 Fix file_path to correspond with the name 2013-02-15 05:50:42 -08:00
Fumiya Nakamura a1d106110d Fix file_name for archive 2013-02-15 05:00:15 -08:00
Sebastian Ziebell 99739a58c3 API documentation extended with infos to project branches 2013-02-15 13:54:26 +01:00
Axilleas Pipinellis cdf95f1ce6 Added relative urls to other documentation files, removed duplicate debian update commands 2013-02-15 12:20:50 +02:00
Axilleas Pipinellis 46f7b7c1f2 Run db:setup and db:seed_fu before gitlab:setup 2013-02-15 11:53:35 +02:00
Axilleas Pipinellis 6178964929 Connect to database with git user, not gitlab 2013-02-15 11:52:10 +02:00
Jaakko Kantojärvi 6fd88b8cbb Fix ssh key fingerprinting test to use exitcode 2013-02-15 11:16:21 +02:00
Dmitriy Zaporozhets f6cc71bc36 Per project protection 2013-02-15 09:51:21 +02:00
Dmitriy Zaporozhets 4821aa6c25 skip protection to aws3 2013-02-15 09:49:35 +02:00
Dmitriy Zaporozhets f9dd547aa7 remove commented code 2013-02-15 09:16:46 +02:00
Bhagavan Das 4bc7d98d65 Remove hardcoded refernce to gitlab-shell home. so that gitlab can be installed on any unix account other than git 2013-02-14 23:10:18 +00:00
Bhagavan Das 08dfbc962b rename setup to setup_db so that it does not collide with gitlab🐚setup task 2013-02-14 21:39:48 +00:00
Sebastian Ziebell 5417fbfecd Test to check 404 error when project id not found 2013-02-14 21:00:05 +01:00
Sebastian Ziebell 12a1f73b61 API projects documentation grouped into sections & updated with status codes
The API documentation for projects now is structured into major sections that describe
the different aspects when dealing with projects, e.g. hooks, branches, team members etc.
All described methods now contain a list of possible status codes the method can return. A few
methods have extra sample JSON responses and a description if a method is idempotent.
Idempotent methods can be called multiple times while returning the same status code.
2013-02-14 20:43:48 +01:00
Riyad Preukschas 428af5ea62 Merge pull request #2890 from cameronyule/support_osx_groups
OS X support for gitlab:check rake tasks
2013-02-14 11:07:46 -08:00
Sebastian Ziebell c8b92a4be2 Merge branch 'master' into fixes/api 2013-02-14 17:02:16 +01:00
Jaakko Kantojärvi ba65f2910b Add option to disable username changing
This option allows to disable users from changing their username.

This is very usefull in environments using strong internal authentication methods like ldap, pam or shibboleth.

You can allow users to change theyr username in these environments, but then new users (users loging in first time) is blocked from gitlab is her username exists.
2013-02-14 17:58:56 +02:00
Sebastian Ziebell c305eb31aa API: tests that check status codes for project branches and hooks
Status code 422 (Unprocessable Entity) returned if invalid url is given when creating
or updating a project hook.
2013-02-14 16:55:33 +01:00
Jaakko Kantojärvi 1bf79f2443 Change .gitignore to ignore logrotated log files. 2013-02-14 17:43:20 +02:00
Sebastian Ziebell 6df02adc7a API: status code 403 returned if new project would exceed limit
When the project limit is reached the user is not allowed to create new ones.
Instead of error code 404 the status code 403 (Forbidden) is returned with error
message via API.
2013-02-14 15:51:56 +01:00
Dmitriy Zaporozhets 04186e9797 Merge pull request #2987 from Undev/support_env_in_settings
Environments support added to Gitlab config
2013-02-14 06:00:40 -08:00
Dmitriy Zaporozhets 7fad4a9636 Merge pull request #2989 from PierreGambarotto/master
archive download : namespace directory not created
2013-02-14 05:53:07 -08:00
Pierre Gambarotto b6b6b640b1 fix archive download : not creating namespace directory 2013-02-14 14:29:24 +01:00
Dmitriy Zaporozhets c9ca15e8d6 require missing lib 2013-02-14 15:25:55 +02:00
Dmitriy Zaporozhets 49cf9badbc Gitlab::ShellEnv added 2013-02-14 15:17:43 +02:00
Dmitriy Zaporozhets b698094d4d Update post-receive worker to use correct identifier 2013-02-14 14:00:02 +02:00
Sebastian Ziebell 3025824415 API: refactored last fix, project limit in web client is fixed too
The previous call `saved?` is restored in the `POST /projects` method in the API.
It is refactored to check if the record is persisted. This is useful to not validate
the record again after saving. This fixes the returned status code in the web client
too. If the last project is created via web client instead of error notification
the project page is shown.
2013-02-14 12:58:33 +01:00
Sebastian Ziebell 7e45ba7004 API: fixes return code when creating last project before reaching limit
When creating the last project via API when reaching the project limit a status code
of 404 (Not found) is returned instead of 201 (Created). The fix checks now correctly if
the project could be saved.
2013-02-14 11:14:52 +01:00
Sebastian Ziebell 1a01fc0c96 API: tests to show incorrect behavior when reaching project limit
When reaching the project limit the API returns an error code 404 on the last possible
project. The project itself is created and is available in the database (seems valid).
A similar behavior can be observed when reaching the project limit via web client, but
in this case the user is notified that the maximum number of projects is reached. The project
itself is still created and can be accessed.

Tests are added to check the behavior when reaching the project limit or one tries
to exceed it via the API.
2013-02-14 11:13:25 +01:00
Andrew8xx8 77a3bfe1de Environments support added to Gitlab config 2013-02-14 11:44:34 +04:00
Dmitriy Zaporozhets ed3f44085e Redesign Admin -> user -> show page 2013-02-13 19:14:35 +02:00
Dmitriy Zaporozhets 6b24c375cb style admin -> users page. Search by username too 2013-02-13 17:28:28 +02:00
Sebastian Ziebell 6fc3263e15 API: extracted helper method to provide 400 bad request error with description
Extracted a method for 400 error (Bad request) and adjusted code accordingly. The name of
the missing attribute is used to show which one was missing from the request. It is used to
give an appropriate message in the json response.
2013-02-13 15:48:52 +01:00
Sebastian Ziebell 54ab9bb6df API: return status code 400 if filepath of raw file blob not given 2013-02-13 14:47:59 +01:00
Dmitriy Zaporozhets fd5dc597ed Add placeholder for project import 2013-02-13 15:27:18 +02:00
Dmitriy Zaporozhets f4c8df897d Merge branch 'mikew-unicorn-app-dir-fix' 2013-02-13 15:11:37 +02:00
Dmitriy Zaporozhets 2ea12ff663 Merge branch 'unicorn-app-dir-fix' of https://github.com/mikew/gitlabhq into mikew-unicorn-app-dir-fix
Conflicts:
	config/unicorn.rb.example
2013-02-13 15:11:26 +02:00
Dmitriy Zaporozhets 95e4217a2b Merge pull request #2979 from Undev/fix_naming
Constants in Events looks good now
2013-02-13 04:33:01 -08:00
Andrew8xx8 839957cf56 Constants in Events looks good now 2013-02-13 15:48:16 +04:00
Sebastian Ziebell fd01f3aacd API: fixes a few return codes for project snippets
When using project snippets via API the functions now provide status codes for
different situations other then only returning 404 error. If required parameters are missing,
e.g. `title` when creating a project snippet a 400 (Bad request) error is returned. The snippet
delete function now is idempotent and returns a 200 (Ok) regardless if the snippet with the
given id is available or not. Changing return codes of these functions has the advantage that
the 404 error is used only for resources, which are not available.

Tests added to check these status codes when handling project snippets.
2013-02-13 12:09:16 +01:00
Sebastian Ziebell 375caeefcf Merge branch 'master' into fixes/api 2013-02-13 10:31:06 +01:00
Sebastian Ziebell ae40e855ef API: test checks a 400 code is returned if snippet title not given 2013-02-13 10:29:42 +01:00
Sebastian Ziebell 82bd0904ff API: test checks a 404 error is returned if snippet id not found 2013-02-13 10:25:13 +01:00
Dmitriy Zaporozhets b9f8b40190 Merge pull request #2971 from yuters/patch-1
Some fix for gitlab:gitlab_shell:check
2013-02-12 22:17:24 -08:00
Martin Bastien 8353bd8ee3 Forgot gitlab-shell folder 2013-02-12 12:49:11 -05:00
Martin Bastien 6b96ca47e0 Some fix for gitlab:gitlab_shell:check
Fixing issue #2970
2013-02-12 12:42:36 -05:00
Dmitriy Zaporozhets 37a5ac4271 Merge pull request #2969 from zerustech/patch-1
Update lib/tasks/sidekiq.rake
2013-02-12 09:25:53 -08:00
Dmitriy Zaporozhets 8f9c01feed Merge pull request #2946 from Asquera/fix/access_to_non_existent_branch
API: Fixes return code when accessing non existent branch (#2922)
2013-02-12 09:24:54 -08:00
Dmitriy Zaporozhets 452adb7bcc Merge branch 'hiroponz-easy-to-find-commit-on-network-graph' 2013-02-12 19:22:49 +02:00
Dmitriy Zaporozhets 622dae76cc style network graph form a bit 2013-02-12 19:22:40 +02:00
Dmitriy Zaporozhets ddea7d1689 Merge branch 'easy-to-find-commit-on-network-graph' of https://github.com/hiroponz/gitlabhq into hiroponz-easy-to-find-commit-on-network-graph 2013-02-12 19:02:05 +02:00
Dmitriy Zaporozhets d6513b5153 Merge pull request #2924 from cdawzrd/patch-2
Disable autocomplete for admin/users form
2013-02-12 08:45:07 -08:00
Sebastian Ziebell 7cc4339f71 API: changed status codes for project hooks functions
Different status codes in the API lib are returned on hook creation, update or deletion.
If a required parameter is not given (e.g. `url` in `/projects/:id/hooks/:hook_id`) status
code 400 (Bad request) is returned. On hook deletion a 200 status code is returned, regardless if
the hook is present or not. This makes the DELETE function an idempotent operation. Appropriate tests
are added to check these status codes.
2013-02-12 17:44:42 +01:00
Michael Lee 4c0c908655 Update lib/tasks/sidekiq.rake
Mac OS uses launchd instead of /etc/init.d to start daemons and tasks to be started by launchd MUST NOT daemon itself. So "nohup" here won't work for Mac OS. 

Can we add a "launchd" task to the rake file so that we can start sidekiq as "bundle exec rake sidekiq:launchd" ?
2013-02-12 23:01:55 +08:00
Dmitriy Zaporozhets 06dd530ede Merge branch 'user_delete_account' of /home/git/repositories/gitlab/gitlabhq 2013-02-12 10:53:51 +00:00
Dmitriy Zaporozhets 9f2041ad0e Merge pull request #2965 from yurifury/fix-blob-route
Gitlab incorrectly routes blobs to the compare controller depending on filename.
2013-02-12 01:50:03 -08:00
Dmitriy Zaporozhets bf908989d0 Merge branch 'Undev-fix-db-after-updating-rails' 2013-02-12 11:47:02 +02:00
Dmitriy Zaporozhets 806b76a168 rename scope to prevent name collision 2013-02-12 11:46:50 +02:00
Sebastian Ziebell 449380265a Merge branch 'master' into fixes/api 2013-02-12 10:17:57 +01:00
Dmitriy Zaporozhets 4bf63212d7 Merge branch 'fix-db-after-updating-rails' of https://github.com/Undev/gitlabhq into Undev-fix-db-after-updating-rails 2013-02-12 11:13:25 +02:00
Dmitriy Zaporozhets 644f8819af restore handling exception for project creation 2013-02-12 10:41:21 +02:00
Yuri Feldman 2d0c3e4c6d Fix for incorrect routing to the Compare controller 2013-02-12 19:28:48 +11:00
Yuri Feldman 918e2213e7 Test to show incorrect routing to Compare controller 2013-02-12 19:28:37 +11:00
Andrew8xx8 b5db541338 All scopes must be in lambdas 2013-02-12 11:16:45 +04:00
Andrew8xx8 9a22ac63ec Dynamic values must be in blocks if FG 2013-02-12 10:54:56 +04:00
Dmitriy Zaporozhets d138b3de4b Render events for team dashboard 2013-02-11 23:23:38 +02:00
Dmitriy Zaporozhets 06d9ccf484 Rails up to 3.2.12 2013-02-11 23:17:34 +02:00
Dmitriy Zaporozhets 68aa88c9bd Fix project creation without import 2013-02-11 23:13:21 +02:00
Dmitriy Zaporozhets 8bf8c70c4b Import repo feature 2013-02-11 23:00:12 +02:00
Dmitriy Zaporozhets a699ebdbcc handle attahcment with send_file 2013-02-11 21:31:19 +02:00
Dmitriy Zaporozhets ab0cfc0036 fixing tests after refactoring 2013-02-11 20:28:27 +02:00
Dmitriy Zaporozhets 2a1fac9e4f add import repo gitlab_shell call 2013-02-11 19:41:02 +02:00
Dmitriy Zaporozhets ea0cb39d63 use proper name for gitlabshell worker 2013-02-11 19:27:26 +02:00
Dmitriy Zaporozhets dd8d0a659d Fix procfile and attachment in event nore 2013-02-11 19:25:06 +02:00
Dmitriy Zaporozhets d64090b8a9 No gitolite in project any more 2013-02-11 19:16:59 +02:00
Dmitriy Zaporozhets 8e0b58d7e7 render note with attachment for event 2013-02-11 15:47:01 +02:00
Miguel Cabeça f6957f7658 Fix image url for emoji. 2013-02-11 12:22:06 +00:00
Marin Jankovski 483f720861 UPdate field name. 2013-02-11 13:12:41 +01:00
Marin Jankovski f339af858b Test the delete acount option. 2013-02-11 13:06:37 +01:00
Dmitriy Zaporozhets ab19196391 fix attachment uploader for aws 2013-02-11 10:14:32 +02:00
Dmitriy Zaporozhets 2d83e43db0 FIx gitlab:env:info 2013-02-11 10:02:52 +02:00
Dmitriy Zaporozhets 7a88bf0978 Fix gitlab:check 2013-02-11 09:58:02 +02:00
Dmitriy Zaporozhets fcfb6d8438 Since gitlab-shell no sense to check hooks 2013-02-11 09:15:42 +02:00
Sebastian Ziebell 2bd955961c Changed function to `not_found`.
Instead of using funtion `error!` the function `not_found!` is used to return 404 error. Adjusted documentation accordingly.
2013-02-09 21:01:17 +01:00
Dmitriy Zaporozhets a404c43805 removing outdated checks 2013-02-09 15:34:04 +02:00
Dmitriy Zaporozhets 38737079b6 ignore docs by git 2013-02-09 15:26:47 +02:00
Dmitriy Zaporozhets 2f019b2b4c cleanup rake tasks since no gitolite required 2013-02-09 15:21:19 +02:00
Dmitriy Zaporozhets ff76e05271 show project head for empty project 2013-02-09 15:16:33 +02:00
Dmitriy Zaporozhets 38985390b0 Refactored and fixed seeds to work with gitlab-shell 2013-02-09 15:13:56 +02:00
Dmitriy Zaporozhets 152f87864c remove useless warning 2013-02-09 12:32:24 +02:00
Dmitriy Zaporozhets 433f2dbcef task to build missing projects with gitlab-shell 2013-02-09 12:30:49 +02:00
Sebastian Ziebell 56b3223945 Fixes test that checks status code of hook creation 2013-02-08 18:19:59 +01:00
Sebastian Ziebell 40e7846f3e Status code 404 returned when retrieving non existent branch (issue #2922)
Accessing a repository branch that does not exist returns a 404 error instead
of 200 now. Added a test.
2013-02-08 17:04:08 +01:00
Sebastian Ziebell 9544f90389 Adding a project hook returns status code 400 if url is not given
When adding a project hook a url must be specified or a 400 error code is returned

* Specs added to check status code on handling project hooks
* refactored code, extracted a method
2013-02-08 16:48:05 +01:00
Sebastian Ziebell 818caf0b5d API: refined status code handling when adding or updating a project member
When a user is added to a project that is already a member of, a status code 201 is now returned to
signal an idempotent operation. If something fails then instead of returning error code 404 different
more specific error codes are returned. Status code 400 (Bad request) is returned when a required
attribute, e.g. `access_level` is not given or 422 if there is a semantic error, e.g. should
the `access_level` have an unsupported value.

Specs are added to check these status codes.
2013-02-08 14:33:29 +01:00
Sebastian Ziebell 8045a81bcf Merge branch 'master' into fixes/api 2013-02-08 10:32:42 +01:00
Dmitriy Zaporozhets 2f0a75ab77 GitLab meta to 5.0 2013-02-08 08:55:39 +02:00
Dmitriy Zaporozhets 4b58030207 Merge pull request #2936 from jameswritescode/fix_installation_doc_typo
fix the gitlab-shell clone url in master installation doc
2013-02-07 22:41:19 -08:00
James Newton d4c24b990f fix the gitlab-shell clone url 2013-02-07 11:53:37 -06:00
Dmitriy Zaporozhets 66121d6caa Improve devise views 2013-02-07 13:20:33 +02:00
Dmitriy Zaporozhets 210e9cd489 It should be 5.0.0pre 2013-02-07 13:05:30 +02:00
Dmitriy Zaporozhets 4e1757bfda Merge branch 'gitlab-shell' of dev.gitlabhq.com:gitlab/gitlabhq 2013-02-07 08:26:39 +00:00
Dmitriy Zaporozhets d09d87e3b0 fix deploy key spec 2013-02-07 10:25:47 +02:00
Dmitriy Zaporozhets cdcf69d0d9 gitlab;shell init script 2013-02-07 10:06:39 +02:00
Dmitriy Zaporozhets 8ae1d812dc deploy keys support for gitlab-shell api 2013-02-07 09:56:13 +02:00
Dmitriy Zaporozhets 48628d31d5 dont allow duplicates in ssh keys 2013-02-07 09:42:22 +02:00
Sebastian Ziebell 5d8a99f104 Test to check a user must be part of the team to see project.
A user must be part of the team to see a protected project. A test is given
to check that a 404 error is returned if the user can not see the project.
2013-02-06 17:11:01 +01:00
Sebastian Ziebell a534c9b72d A few fixes in documentation to notes, updates infos on status codes
A few fixes in the notes URI pattern (`notes` instead of `:notes`), also updated
the information to status codes. If `body` attribute is missing from a POST request
a status code 400 (Bad request) is returned. This reflects the code changes from
the previous commit.
2013-02-06 17:11:00 +01:00
Sebastian Ziebell bb24275f8d Status code 400 is returned if body is missing on note creation.
If a note is created with a POST request via API (`/projects/:id/notes`) status
code 400 is returned instead of 404. The resource itself exists but the request
is incomplete. Specs added to check different status codes when accessing, creating
and updating notes.
2013-02-06 17:11:00 +01:00
Sebastian Ziebell b9d40d2524 Tests added to check status codes when handling milestone via API
A few more tests added to check status code when creating or updating milestones.
2013-02-06 17:11:00 +01:00
Sebastian Ziebell 5be0265fe7 Status code 400 returned if title not given in a milestone (via API)
If a milestone is created via API but no title given then status code 400 (Bad request)
is returned instead of 404. A small helper method handles the errors collection of a
milestone.
2013-02-06 17:10:29 +01:00
Sebastian Ziebell 41e93bbfe2 Test added to check creation of note to a non-existent MR via API 2013-02-06 17:05:55 +01:00
Sebastian Ziebell f978a71f41 Creating MR comment without a note returns status code 400 (Bad request)
Creating a comment to an existing merge request via API without providing a note
returns a status code 400 now, suggesting a bad request. The reason for this
is the resource itself (MR) exists but the required property is not set.
2013-02-06 17:02:30 +01:00
Sebastian Ziebell 3f4e215c80 Extracted helper method to avoid code duplication 2013-02-06 17:02:30 +01:00
Sebastian Ziebell 413952ff94 Creating or updating a MR returns more informative status codes.
Using the API library to create or update a merge request at the moment a 404 error is returned.
This is fine when the merge request in question does not exist, but does not provide good
information that for example a required attribute is missing.
A status code of 400 (Bad request) is returned when creating or updating a merge request
when either `source_branch` or `target_branch` is missing. A status code of 409 is returned
when `source_branch` and `target_branch` are the same. Tests are added for these cases.
2013-02-06 16:57:00 +01:00
Jon Evans 6474797d1c Update app/views/admin/users/_form.html.haml 2013-02-06 09:27:09 -05:00
Jon Evans c9777518e3 Ruby 1.9 hash syntax 2013-02-06 09:26:46 -05:00
Jon Evans 4ce3ef41de Disable autocomplete for admin/users form
Fixes #2796
2013-02-06 08:50:35 -05:00
Marin Jankovski 1b4ba3eb99 Add user delete option. 2013-02-06 12:44:09 +01:00
Dmitriy Zaporozhets 18fc090052 remove hooks and support scripts from main repo. Moved to gitlab-shell 2013-02-05 15:59:40 +02:00
Dmitriy Zaporozhets bd3288e320 api check call 2013-02-05 15:55:49 +02:00
Dmitriy Zaporozhets 478570dc32 fix move repository 2013-02-05 13:43:25 +02:00
Dmitriy Zaporozhets adfd36f26a no need to run gitolite for enable_automerge 2013-02-05 13:30:56 +02:00
Dmitriy Zaporozhets 867945d193 Improving installation docs 2013-02-05 13:02:58 +02:00
Sato Hiroyuki 9dccecc9b5 Sort the commits on network graph by commiter date.
Author date is not updated, if the commits is rebased.
So the network graph having many rebased commit turns round and round,
that it is very difficult to undarstand history.
2013-02-05 19:58:49 +09:00
Dmitriy Zaporozhets 70e3bffd95 Fixed: post-receive, project remove, tests 2013-02-05 12:47:50 +02:00
Sato Hiroyuki df85c9c06a Fix bug when it has been switched to tag. 2013-02-05 19:08:25 +09:00
Sato Hiroyuki 8ff5cf9cd5 Add search box for the commit. 2013-02-05 19:08:09 +09:00
Dmitriy Zaporozhets 39e37677f2 add remove keys from gitlab-shell by id 2013-02-05 11:12:15 +02:00
Dmitriy Zaporozhets 081c272b85 Remove outdated specs and fixed key remove 2013-02-05 10:15:49 +02:00
Dmitriy Zaporozhets 12198bee2f update structure 2013-02-05 09:17:45 +02:00
Dmitriy Zaporozhets f385c7212e remove unexisting stubs 2013-02-05 09:14:35 +02:00
Sato Hiroyuki 81cc1cb87b Enable to display the commit older than 650th commit. 2013-02-05 12:42:30 +09:00
Sato Hiroyuki 1e907498a9 The commit is marked and displayed in the center. 2013-02-05 12:34:35 +09:00
Sato Hiroyuki 7812cb77c8 Fix typo. 2013-02-05 12:20:04 +09:00
Dmitriy Zaporozhets c75fc9c7a6 remove gitolite stub 2013-02-04 18:18:36 +02:00
Dmitriy Zaporozhets 935b6ae653 Internal API 2013-02-04 17:53:43 +02:00
Dmitriy Zaporozhets 6f7ccea668 Fix satellites to use filesystem. Correct post-receive user finder 2013-02-04 16:19:37 +02:00
Dmitriy Zaporozhets 896c3a0a9d remove update_repository calls 2013-02-04 15:24:16 +02:00
Dmitriy Zaporozhets 5c6492662e update installation docs 2013-02-04 15:18:20 +02:00
Dmitriy Zaporozhets 27d9ac0fe8 Make gitlab works with gitlab-shell 2013-02-04 15:07:56 +02:00
Dmitriy Zaporozhets 6b9a609044 preparing for gitlab-shell 2013-02-04 14:28:10 +02:00
Cameron Yule e0d62d9c5f Replacing the manual parsing of the /etc/group file with the equivalent call from the Etc class in the Ruby standard library. This has the benefit of supporting additional platforms (e.g. OS X). 2013-02-02 20:04:07 +00:00
KennyTM~ e565be241f Show only ≤16 lines of code in a discussion (fix issue #2860). 2013-02-03 03:33:42 +08:00
Felix Gilcher 566de5ab06 update api documentation for delete team member
correctly describes the new behavior
2013-02-01 14:20:51 +00:00
Felix Gilcher ce6436b98a Don't crash when removing a user that's not project member
The attempt to revoke project access for a user that was not member of the
project results in a 500 Internal Server error where it actually should
result in a 200 OK since after the operation, the user is not member of
the project. This turns the operation into an idempotent call that can
be repeated with no ill effects.

Updated the spec and changed the code accordingly. However, the result differs
slightly, as we can't return the users project access level if the user was not
member. I'm not aware if anybody relies on the result of this call.

Fixes #2832
2013-02-01 13:53:35 +00:00
Felix Gilcher c72910a8bf log fatal errors that we catch
In case we rescue from a fatal error, we want the error and the backtrace to
the error logged, so we can debug later on. This change injects the configured
logger from the rails app to the grape API and logs error as well as backtrace
in a rails-like fashion.
2013-02-01 10:23:23 +00:00
Mike Wyatt 5e28710692 remove hardcoded app_dir from unicorn.rb.example 2013-01-31 18:33:11 -03:30
Mike Wyatt 7225c06934 default gitlab.relative_url_root to ENV['RAILS_RELATIVE_URL_ROOT'] 2013-01-31 18:28:03 -03:30
Felix Gilcher 2a669fc899 rescue all errors and return the proper format
This rescues all errors and returns a proper JSON response. Fixes #2833.
2013-01-29 18:20:59 +01:00
Felix Gilcher e76215a395 Update docs to reflect that project names are allowed as ID
The API accepts project names in all places where project IDs are expected. Updated the docs to
reflect that.
2013-01-28 23:51:45 +01:00
Felix Gilcher a90d5c21b5 describe the project access level
the documentation mentions access_level as required parameter, but fails to list
accepted values.
2013-01-28 16:46:58 +01:00
Felix Gilcher 2ddaf00387 Added documentation for passing the token as header
The documentation was unclear about how to pass the api private token as
header. Updated the doc to include the nessesary information bits and
added an example using the curl command line client.
2013-01-28 14:49:27 +01:00
Cyril 4d19a4fbeb fix build failure
(https://travis-ci.org/gitlabhq/gitlabhq/builds/3593153)
2013-01-17 12:24:26 +01:00
Vanja Radovanović 333f7372c5 fix: grouping by date desc doesn't sort it too 2012-11-19 11:44:28 +01:00
Gabor Liptak cb2be3ce0a Don't email omniauth created users 2012-09-19 13:36:00 -05:00
1044 changed files with 12772 additions and 84473 deletions

4
.gitignore vendored
View File

@ -2,7 +2,7 @@
.rbx/
db/*.sqlite3
db/*.sqlite3-journal
log/*.log
log/*.log*
tmp/
.sass-cache/
coverage/*
@ -20,9 +20,11 @@ config/database.yml
config/initializers/omniauth.rb
config/unicorn.rb
config/resque.yml
config/aws.yml
db/data.yml
.idea
.DS_Store
.chef
vendor/bundle/*
rails_best_practices_output.html
doc/code/*

2
.rspec
View File

@ -1 +1 @@
--colour
--colour --drb

View File

@ -1,7 +1,6 @@
language: ruby
env:
- DB=postgresql
- DB=mysql
- DB=mysql TRAVIS=true
before_install:
- sudo apt-get install libicu-dev -y
- gem install charlock_holmes -v="0.6.9"
@ -9,7 +8,7 @@ branches:
only:
- 'master'
rvm:
- 1.9.3-p327
- 1.9.3-p392
services:
- mysql
- postgresql

View File

@ -1,6 +1,53 @@
v 5.1.0
- You can login with email or username now
- Corrected project transfer rollback when repository cannot be moved
- Move both repo and wiki when project transfer requrested
- Admin area: project editing was removed from admin namespace
- Access: admin user has now access to any project.
v 5.0.0
- Replaced gitolite with gitlab-shell
- Removed gitolite-related libraries
- State machine added
- Setup gitlab as git user
- Internal API
- Show team tab for empty projects
- Import repository feature
- Updated rails
- Use lambda for scopes
- Redesign admin area -> users
- Redesign admin area -> user
- Secure link to file attachments
- Add validations for Group and Team names
- Restyle team page for project
- Update capybara, rspec-rails, poltergeist to recent versions
- Wiki on git using Gollum
- Added Solarized Dark theme for code review
- Dont show user emails in autocomplete lists, profile pages
- Added settings tab for group, team, project
- Replace user popup with icons in header
- Handle project moving with gitlab-shell
- Added select2-rails for selectboxes with ajax data load
- Fixed search field on projects page
- Added teams to search autocomplete
- Move groups and teams on dashboard sidebar to sub-tabs
- API: improved return codes and docs. (Felix Gilcher, Sebastian Ziebell)
- Redesign wall to be more like chat
- Snippets, Wall features are disabled by default for new projects
v 4.2.0
- Teams
- User show page. Via /u/username
- Show help contents on pages for better navigation
- Async gitolite calls
- added satellites logs
- can_create_group, can_create_team booleans for User
- Process web hooks async
- GFM: Fix images escaped inside links
- Network graph improved
- Switchable branches for network graph
- API: Groups
- Fixed project download
v 4.1.0
- Optional Sign-Up
@ -16,7 +63,7 @@ v 4.1.0
- cleanup rake tasks
- fix backup/restore
- scss cleanup
- show preview for note images
- show preview for note images
- improved network-graph
- get rid of app/roles/
- added new classes Team, Repository
@ -30,7 +77,7 @@ v 4.1.0
v 4.0.0
- Remove project code and path from API. Use id instead
- Return valid clonable url to repo for web hook
- Fixed backup issue
- Fixed backup issue
- Reorganized settings
- Fixed commits compare
- Refactored scss

View File

@ -1,26 +1,53 @@
# Contact & support
If you want quick help, head over to our [Support Forum](https://groups.google.com/forum/#!forum/gitlabhq).
Otherwise you can follow our [Issue Submission Guide](https://github.com/gitlabhq/gitlabhq/wiki/Issue-Submission-Guide) for a more systematic and thorough guide to solving your issues.
# Contribute to GitLab
## Recipes
This guide details how to use pull requests and the issues to improve GitLab.
We collect user submitted installation scripts and config file templates for platforms we don't support officially.
We believe there is merit in allowing a certain amount of diversity.
You can get and submit your solution to running/configuring GitLab with your favorite OS/distro, database, web server, cloud hoster, configuration management tool, etc.
## Closing policy for pull requests and issues
Help us improve the collection of [GitLab Recipes](https://github.com/gitlabhq/gitlab-recipes/)
Pull requests and issues not in line with the guidelines listed in this document will be closed with just a link to this paragraph. GitLab is a popular open source project and the capacity to deal with issues and pull requests is limited. To get support for your problems please use other channels as detailed in [the getting help section of the readme](https://github.com/gitlabhq/gitlabhq#getting-help). Professional [support subscriptions](http://www.gitlab.com/subscription/) and [consulting services](http://www.gitlab.com/consultancy/) are available from [GitLab.com](http://www.gitlab.com/).
## Pull requests
## Feature suggestions
We welcome pull request with improvements to GitLab code and/or documentation. The issues we would really like a pull request for are listed with the [status 'accepting merge/pull requests' on our feedback forum](http://feedback.gitlab.com/forums/176466-general/status/796455) but other improvements are also welcome.
Follow the [Issue Submission Guide](https://github.com/gitlabhq/gitlabhq/wiki/Issue-Submission-Guide) and support other peoples ideas or propose your own.
### Pull request guidelines
If you can please submit a pull request with the fix including tests. The workflow to make a pull request is as follows:
## Code
1. Fork the project on GitHub
1. Create a feature branch
1. Write tests and code
1. If you have multiple commits please combine them into one commit by [squashing them](http://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
1. Push the commit to your fork
1. Submit a pull request
Follow our [Developer Guide](https://github.com/gitlabhq/gitlabhq/wiki/Developer-Guide) to set you up for hacking on GitLab.
We will accept pull requests if:
* The code has proper tests and all tests pass
* It can be merged without problems (if not please use: git rebase master)
* It doesn't break any existing functionality
* It's quality code that conforms to the [Rails style guide](https://github.com/bbatsov/rails-style-guide) and best practices
* The description includes a motive for your change and the method you used to achieve it
* It keeps the GitLab code base clean and well structured
* We think other users will need the same functionality
* If it makes changes to the UI the pull request should include screenshots
For examples of feedback on pull requests please look at already [closed pull requests](https://github.com/gitlabhq/gitlabhq/pulls?direction=desc&page=1&sort=created&state=closed).
## Issue tracker
The [issue tracker](https://github.com/gitlabhq/gitlabhq/issues) is only for obvious bugs or misbehavior in the master branch of GitLab. When submitting an issue please conform to the issue submission guidelines listed below.
Please send a pull request with a tested solution or a pull request with a failing test instead of opening an issue if you can. If you're unsure where to post, post to the [Support Forum](https://groups.google.com/forum/#!forum/gitlabhq) first. There are a lot of helpful GitLab users there who may be able to help you quickly. If your particular issue turns out to be a bug, it will find its way from there.
### Issue tracker guidelines
**Search** for similar entries before submitting your own, there's a good chance somebody else had the same issue or idea. Show your support with `:+1:` and/or join the discussion.
* Summarize your issue in one sentence (what goes wrong, what did you expect to happen)
* Describe your issue in detail
* How can we reproduce the issue on the [GitLab Vagrant virtual machine](https://github.com/gitlabhq/gitlab-vagrant-vm) (start with: vagrant destroy && vagrant up && vagrant ssh)
* Add the last commit sha1 of the GitLab version you used to replicate the issue
* Add logs or screen shots when possible
* Link to the line of code that might be responsible for the problem
* Describe your setup (use relevant parts from `sudo -u gitlab -H bundle exec rake gitlab:env:info`)

4
Capfile.example Normal file
View File

@ -0,0 +1,4 @@
load 'deploy'
load 'deploy/assets'
require 'bundler/capistrano'
load 'config/deploy'

66
Gemfile
View File

@ -1,4 +1,4 @@
source "http://rubygems.org"
source "https://rubygems.org"
def darwin_only(require_as)
RUBY_PLATFORM.include?('darwin') && require_as
@ -8,23 +8,26 @@ def linux_only(require_as)
RUBY_PLATFORM.include?('linux') && require_as
end
gem "rails", "3.2.11"
gem "rails", "3.2.13"
# Supported DBs
gem "mysql2", group: :mysql
gem "pg", group: :postgres
# Auth
gem "devise", "~> 2.1.0"
gem 'omniauth', "~> 1.1.1"
gem "devise"
gem 'omniauth', "~> 1.1.3"
gem 'omniauth-google-oauth2'
gem 'omniauth-twitter'
gem 'omniauth-github'
# GITLAB patched libs
gem "grit", git: "https://github.com/gitlabhq/grit.git", ref: '7f35cb98ff17d534a07e3ce6ec3d580f67402837'
gem 'grack', git: "https://github.com/gitlabhq/grack.git", ref: 'ba46f3b0845c6a09d488ae6abdce6ede37e227e8'
gem 'grit_ext', git: "https://github.com/gitlabhq/grit_ext.git", ref: '8e6afc2da821354774aa4d1ee8a1aa2082f84a3e'
# Extracting information from a git repository
# Since gollum requires grit we cannot use gitlab-grit gem name any more. Use grit instead
gem "grit", '~> 2.5.0', git: 'https://github.com/gitlabhq/grit.git', ref: '42297cdcee16284d2e4eff23d41377f52fc28b9d'
gem 'grit_ext', '~> 0.8.1'
# Ruby/Rack Git Smart-HTTP Server Handler
gem 'gitlab-grack', '~> 1.0.0', require: 'grack'
# LDAP Auth
gem 'gitlab_omniauth-ldap', '1.0.2', require: "omniauth-ldap"
@ -32,30 +35,31 @@ gem 'gitlab_omniauth-ldap', '1.0.2', require: "omniauth-ldap"
# Dump db to yml file. Mostly used to migrate from sqlite to mysql
gem 'gitlab_yaml_db', '1.0.0', require: "yaml_db"
# Gitolite client (for work with gitolite-admin repo)
gem "gitolite", '1.1.0'
# Syntax highlighter
gem "pygments.rb", git: "https://github.com/gitlabhq/pygments.rb.git", branch: "master"
gem "gitlab-pygments.rb", '~> 0.3.2', require: 'pygments.rb'
# Language detection
gem "github-linguist", "~> 2.3.4" , require: "linguist"
# API
gem "grape", "~> 0.2.1"
gem "grape", "~> 0.3.1"
gem "grape-entity", "~> 0.2.0"
# Format dates and times
# based on human-friendly examples
gem "stamp"
# Enumeration fields
gem 'enumerize'
# Pagination
gem "kaminari", "~> 0.14.1"
# HAML
gem "haml-rails", "~> 0.3.5"
gem "haml-rails"
# Files attachments
gem "carrierwave", "~> 0.7.1"
gem "carrierwave"
# Authorization
gem "six"
@ -71,18 +75,21 @@ gem "redcarpet", "~> 2.2.2"
gem "github-markup", "~> 0.7.4", require: 'github/markup'
# Servers
gem "unicorn", "~> 4.4.0"
gem "unicorn"
# State machine
gem "state_machine"
# Issue tags
gem "acts-as-taggable-on", "2.3.3"
# Decorators
gem "draper", "~> 0.18.0"
gem "draper"
# Background jobs
gem 'slim'
gem 'sinatra', :require => nil
gem 'sidekiq', '2.6.4'
gem 'sinatra', require: nil
gem 'sidekiq'
# HTTP requests
gem "httparty"
@ -93,10 +100,20 @@ gem "colored"
# GitLab settings
gem 'settingslogic'
# Wiki
# - Use latest master to resolve Gem dependency with Pygemnts
# github-linquist needs pygments 0.4.2 but Gollum 2.4.11
# requires pygments 0.3.2. The latest master Gollum has been updated
# to use pygments 0.4.2. Change this after next Gollum release.
gem "gollum", "~> 2.4.0", git: "https://github.com/gollum/gollum.git", ref: "5dcd3c8c8f"
# Misc
gem "foreman"
gem "git"
# Cache
gem "redis-rails"
group :assets do
gem "sass-rails", "~> 3.2.5"
gem "coffee-rails", "~> 3.2.2"
@ -104,6 +121,7 @@ group :assets do
gem "therubyracer"
gem 'chosen-rails', "0.9.8"
gem 'select2-rails'
gem 'jquery-atwho-rails', "0.1.7"
gem "jquery-rails", "2.1.3"
gem "jquery-ui-rails", "2.0.2"
@ -112,6 +130,7 @@ group :assets do
gem 'bootstrap-sass', "2.2.1.1"
gem "font-awesome-sass-rails", "~> 3.0.0"
gem "gemoji", "~> 1.2.1", require: 'emoji/railtie'
gem "gon"
end
group :development do
@ -133,13 +152,14 @@ group :development do
end
group :development, :test do
gem 'coveralls', require: false
gem 'rails-dev-tweaks'
gem 'spinach-rails'
gem "rspec-rails"
gem "capybara"
gem "pry"
gem "awesome_print"
gem "database_cleaner", ref: "f89c34300e114be99532f14c115b2799a3380ac6", git: "https://github.com/bmabey/database_cleaner.git"
gem "database_cleaner"
gem "launchy"
gem 'factory_girl_rails'
@ -153,7 +173,9 @@ group :development, :test do
gem 'rb-inotify', require: linux_only('rb-inotify')
# PhantomJS driver for Capybara
gem 'poltergeist', git: 'https://github.com/jonleighton/poltergeist.git', ref: '5c2e092001074a8cf09f332d3714e9ba150bc8ca'
gem 'poltergeist', '1.1.0'
gem 'spork', '~> 1.0rc'
end
group :test do
@ -165,5 +187,5 @@ group :test do
end
group :production do
gem "gitlab_meta", '4.0'
gem "gitlab_meta", '5.0'
end

View File

@ -1,10 +1,3 @@
GIT
remote: https://github.com/bmabey/database_cleaner.git
revision: f89c34300e114be99532f14c115b2799a3380ac6
ref: f89c34300e114be99532f14c115b2799a3380ac6
specs:
database_cleaner (0.9.1)
GIT
remote: https://github.com/ctran/annotate_models.git
revision: be4e26825b521f0b2d86b181e2dff89901aa9b1e
@ -13,41 +6,16 @@ GIT
activerecord (>= 2.3.0)
rake (>= 0.8.7)
GIT
remote: https://github.com/gitlabhq/grack.git
revision: ba46f3b0845c6a09d488ae6abdce6ede37e227e8
ref: ba46f3b0845c6a09d488ae6abdce6ede37e227e8
specs:
grack (1.0.0)
rack (~> 1.4.1)
GIT
remote: https://github.com/gitlabhq/grit.git
revision: 7f35cb98ff17d534a07e3ce6ec3d580f67402837
ref: 7f35cb98ff17d534a07e3ce6ec3d580f67402837
revision: 42297cdcee16284d2e4eff23d41377f52fc28b9d
ref: 42297cdcee16284d2e4eff23d41377f52fc28b9d
specs:
grit (2.5.0)
diff-lcs (~> 1.1)
mime-types (~> 1.15)
posix-spawn (~> 0.3.6)
GIT
remote: https://github.com/gitlabhq/grit_ext.git
revision: 8e6afc2da821354774aa4d1ee8a1aa2082f84a3e
ref: 8e6afc2da821354774aa4d1ee8a1aa2082f84a3e
specs:
grit_ext (0.6.1)
charlock_holmes (~> 0.6.9)
GIT
remote: https://github.com/gitlabhq/pygments.rb.git
revision: db1da0343adf86b49bdc3add04d02d2e80438d38
branch: master
specs:
pygments.rb (0.3.2)
posix-spawn (~> 0.3.6)
yajl-ruby (~> 1.1.0)
GIT
remote: https://github.com/gitlabhq/raphael-rails.git
revision: cb2c92a040b9b941a5f1aa1ea866cc26e944fe58
@ -55,84 +23,89 @@ GIT
raphael-rails (2.1.0)
GIT
remote: https://github.com/jonleighton/poltergeist.git
revision: 5c2e092001074a8cf09f332d3714e9ba150bc8ca
ref: 5c2e092001074a8cf09f332d3714e9ba150bc8ca
remote: https://github.com/gollum/gollum.git
revision: 5dcd3c8c8f68158e43ff79861279088ee56d0ebe
ref: 5dcd3c8c8f
specs:
poltergeist (1.0.2)
capybara (~> 1.1)
childprocess (~> 0.3)
faye-websocket (~> 0.4, >= 0.4.4)
http_parser.rb (~> 0.5.3)
multi_json (~> 1.0)
gollum (2.4.11)
github-markdown (~> 0.5.3)
github-markup (>= 0.7.5, < 1.0.0)
grit (~> 2.5.0)
mustache (>= 0.99.4, < 1.0.0)
nokogiri (~> 1.5.6)
pygments.rb (~> 0.4.2)
sanitize (~> 2.0.3)
sinatra (~> 1.3.5)
stringex (~> 1.5.1)
useragent (~> 0.4.16)
GEM
remote: http://rubygems.org/
remote: https://rubygems.org/
specs:
actionmailer (3.2.11)
actionpack (= 3.2.11)
mail (~> 2.4.4)
actionpack (3.2.11)
activemodel (= 3.2.11)
activesupport (= 3.2.11)
actionmailer (3.2.13)
actionpack (= 3.2.13)
mail (~> 2.5.3)
actionpack (3.2.13)
activemodel (= 3.2.13)
activesupport (= 3.2.13)
builder (~> 3.0.0)
erubis (~> 2.7.0)
journey (~> 1.0.4)
rack (~> 1.4.0)
rack (~> 1.4.5)
rack-cache (~> 1.2)
rack-test (~> 0.6.1)
sprockets (~> 2.2.1)
activemodel (3.2.11)
activesupport (= 3.2.11)
activemodel (3.2.13)
activesupport (= 3.2.13)
builder (~> 3.0.0)
activerecord (3.2.11)
activemodel (= 3.2.11)
activesupport (= 3.2.11)
activerecord (3.2.13)
activemodel (= 3.2.13)
activesupport (= 3.2.13)
arel (~> 3.0.2)
tzinfo (~> 0.3.29)
activeresource (3.2.11)
activemodel (= 3.2.11)
activesupport (= 3.2.11)
activesupport (3.2.11)
i18n (~> 0.6)
activeresource (3.2.13)
activemodel (= 3.2.13)
activesupport (= 3.2.13)
activesupport (3.2.13)
i18n (= 0.6.1)
multi_json (~> 1.0)
acts-as-taggable-on (2.3.3)
rails (~> 3.0)
addressable (2.3.2)
arel (3.0.2)
awesome_print (1.1.0)
backports (2.6.5)
backports (2.6.7)
bcrypt-ruby (3.0.1)
better_errors (0.3.2)
coderay (>= 1.0.0)
erubis (>= 2.7.0)
binding_of_caller (0.6.8)
blankslate (3.1.2)
binding_of_caller (0.7.1)
debug_inspector (>= 0.0.1)
bootstrap-sass (2.2.1.1)
sass (~> 3.2)
builder (3.0.4)
capybara (1.1.3)
capybara (2.0.2)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
selenium-webdriver (~> 2.0)
xpath (~> 0.1.4)
carrierwave (0.7.1)
xpath (~> 1.0.0)
carrierwave (0.8.0)
activemodel (>= 3.2.0)
activesupport (>= 3.2.0)
celluloid (0.12.4)
facter (>= 1.6.12)
timers (>= 1.0.0)
charlock_holmes (0.6.9)
childprocess (0.3.6)
ffi (~> 1.0, >= 1.0.6)
childprocess (0.3.8)
ffi (~> 1.0, >= 1.0.11)
chosen-rails (0.9.8)
railties (~> 3.0)
thor (~> 0.14)
code_analyzer (0.3.1)
sexp_processor
coderay (1.0.8)
coderay (1.0.9)
coffee-rails (3.2.2)
coffee-script (>= 2.2.0)
railties (~> 3.2.0)
@ -143,41 +116,53 @@ GEM
colored (1.2)
colorize (0.5.8)
connection_pool (1.0.0)
crack (0.3.1)
coveralls (0.6.2)
colorize
multi_json (~> 1.3)
rest-client
simplecov (>= 0.7)
thor
crack (0.3.2)
daemons (1.1.9)
devise (2.1.2)
database_cleaner (0.9.1)
debug_inspector (0.0.2)
descendants_tracker (0.0.1)
devise (2.2.3)
bcrypt-ruby (~> 3.0)
orm_adapter (~> 0.1)
railties (~> 3.1)
warden (~> 1.2.1)
diff-lcs (1.1.3)
draper (0.18.0)
actionpack (~> 3.2)
activesupport (~> 3.2)
diff-lcs (1.2.1)
draper (1.1.0)
actionpack (>= 3.0)
activesupport (>= 3.0)
request_store (~> 1.0.3)
email_spec (1.4.0)
launchy (~> 2.1)
mail (~> 2.2)
enumerize (0.5.1)
activesupport (>= 3.2)
erubis (2.7.0)
escape_utils (0.2.4)
eventmachine (1.0.0)
execjs (1.4.0)
multi_json (~> 1.0)
facter (1.6.17)
facter (1.6.18)
factory_girl (4.1.0)
activesupport (>= 3.0.0)
factory_girl_rails (4.1.0)
factory_girl (~> 4.1.0)
railties (>= 3.0.0)
faraday (0.8.4)
faraday (0.8.6)
multipart-post (~> 1.1)
faye-websocket (0.4.6)
faye-websocket (0.4.7)
eventmachine (>= 0.12.0)
ffaker (1.15.0)
ffi (1.1.5)
ffi (1.4.0)
font-awesome-sass-rails (3.0.0.1)
railties (>= 3.1.1)
sass-rails (>= 3.1.1)
foreman (0.60.2)
foreman (0.61.0)
thor (>= 0.13.6)
gemoji (1.2.1)
gherkin-ruby (0.2.1)
@ -187,54 +172,62 @@ GEM
escape_utils (~> 0.2.3)
mime-types (~> 1.19)
pygments.rb (>= 0.2.13)
github-markup (0.7.4)
gitlab_meta (4.0)
github-markdown (0.5.3)
github-markup (0.7.5)
gitlab-grack (1.0.0)
rack (~> 1.4.1)
gitlab-pygments.rb (0.3.2)
posix-spawn (~> 0.3.6)
yajl-ruby (~> 1.1.0)
gitlab_meta (5.0)
gitlab_omniauth-ldap (1.0.2)
net-ldap (~> 0.2.2)
omniauth (~> 1.0)
pyu-ruby-sasl (~> 0.0.3.1)
rubyntlm (~> 0.1.1)
gitlab_yaml_db (1.0.0)
gitolite (1.1.0)
gratr19 (~> 0.4.4.1)
grit (~> 2.5.0)
hashery (~> 1.5.0)
grape (0.2.2)
gon (4.0.2)
grape (0.3.2)
activesupport
hashie (~> 1.2)
builder
hashie (>= 1.2.0)
multi_json (>= 1.3.2)
multi_xml
multi_xml (>= 0.5.2)
rack
rack-accept
rack-mount
virtus
gratr19 (0.4.4.1)
grape-entity (0.2.0)
activesupport
multi_json (>= 1.3.2)
grit_ext (0.8.1)
charlock_holmes (~> 0.6.9)
growl (1.0.3)
guard (1.5.4)
listen (>= 0.4.2)
guard (1.6.2)
listen (>= 0.6.0)
lumberjack (>= 1.0.2)
pry (>= 0.9.10)
terminal-table (>= 1.4.3)
thor (>= 0.14.6)
guard-rspec (2.1.2)
guard-rspec (2.5.1)
guard (>= 1.1)
rspec (~> 2.11)
guard-spinach (0.0.2)
guard (>= 1.1)
spinach
haml (3.1.7)
haml-rails (0.3.5)
haml (4.0.0)
tilt
haml-rails (0.4)
actionpack (>= 3.1, < 4.1)
activesupport (>= 3.1, < 4.1)
haml (~> 3.1)
haml (>= 3.1, < 4.1)
railties (>= 3.1, < 4.1)
hashery (1.5.0)
blankslate
hashie (1.2.0)
hike (1.2.1)
http_parser.rb (0.5.3)
httparty (0.9.0)
httparty (0.10.2)
multi_json (~> 1.0)
multi_xml
multi_xml (>= 0.5.2)
httpauth (0.2.0)
i18n (0.6.1)
journey (1.0.4)
@ -245,47 +238,46 @@ GEM
jquery-ui-rails (2.0.2)
jquery-rails
railties (>= 3.1.0)
json (1.7.6)
json (1.7.7)
jwt (0.1.5)
multi_json (>= 1.0)
kaminari (0.14.1)
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
kgio (2.7.4)
kgio (2.8.0)
launchy (2.1.2)
addressable (~> 2.3)
letter_opener (1.0.0)
launchy (>= 2.0.4)
libv8 (3.3.10.4)
libwebsocket (0.1.6)
websocket
listen (0.5.3)
lumberjack (1.0.2)
mail (2.4.4)
libv8 (3.11.8.17)
listen (0.7.3)
lumberjack (1.0.3)
mail (2.5.3)
i18n (>= 0.4.0)
mime-types (~> 1.16)
treetop (~> 1.4.8)
method_source (0.8.1)
mime-types (1.19)
mime-types (1.21)
modernizr (2.6.2)
sprockets (~> 2.0)
multi_json (1.5.0)
multi_xml (0.5.1)
multi_json (1.7.2)
multi_xml (0.5.3)
multipart-post (1.1.5)
mustache (0.99.4)
mysql2 (0.3.11)
net-ldap (0.2.2)
nokogiri (1.5.5)
nokogiri (1.5.6)
oauth (0.4.7)
oauth2 (0.8.0)
oauth2 (0.8.1)
faraday (~> 0.8)
httpauth (~> 0.1)
jwt (~> 0.1.4)
multi_json (~> 1.0)
rack (~> 1.2)
omniauth (1.1.1)
omniauth (1.1.3)
hashie (~> 1.2)
rack
omniauth-github (1.0.3)
omniauth-github (1.1.0)
omniauth (~> 1.0)
omniauth-oauth2 (~> 1.1)
omniauth-google-oauth2 (0.1.13)
@ -302,17 +294,23 @@ GEM
omniauth-oauth (~> 1.0)
orm_adapter (0.4.0)
pg (0.14.1)
poltergeist (1.1.0)
capybara (~> 2.0, >= 2.0.1)
faye-websocket (~> 0.4, >= 0.4.4)
http_parser.rb (~> 0.5.3)
polyglot (0.3.3)
posix-spawn (0.3.6)
progressbar (0.12.0)
pry (0.9.10)
pry (0.9.12)
coderay (~> 1.0.5)
method_source (~> 0.8)
slop (~> 3.3.1)
slop (~> 3.4)
pygments.rb (0.4.2)
posix-spawn (~> 0.3.6)
yajl-ruby (~> 1.1.0)
pyu-ruby-sasl (0.0.3.3)
quiet_assets (1.0.1)
railties (~> 3.1)
rack (1.4.3)
rack (1.4.5)
rack-accept (0.4.5)
rack (>= 0.4)
rack-cache (1.2)
@ -321,68 +319,91 @@ GEM
rack (>= 1.1.3)
rack-mount (0.8.3)
rack (>= 1.0.0)
rack-protection (1.3.2)
rack-protection (1.4.0)
rack
rack-ssl (1.3.2)
rack-ssl (1.3.3)
rack
rack-test (0.6.2)
rack (>= 1.0)
rails (3.2.11)
actionmailer (= 3.2.11)
actionpack (= 3.2.11)
activerecord (= 3.2.11)
activeresource (= 3.2.11)
activesupport (= 3.2.11)
rails (3.2.13)
actionmailer (= 3.2.13)
actionpack (= 3.2.13)
activerecord (= 3.2.13)
activeresource (= 3.2.13)
activesupport (= 3.2.13)
bundler (~> 1.0)
railties (= 3.2.11)
railties (= 3.2.13)
rails-dev-tweaks (0.6.1)
actionpack (~> 3.1)
railties (~> 3.1)
rails_best_practices (1.13.2)
rails_best_practices (1.13.4)
activesupport
awesome_print
code_analyzer
colored
erubis
i18n
progressbar
railties (3.2.11)
actionpack (= 3.2.11)
activesupport (= 3.2.11)
ruby-progressbar
railties (3.2.13)
actionpack (= 3.2.13)
activesupport (= 3.2.13)
rack-ssl (~> 1.3.2)
rake (>= 0.8.7)
rdoc (~> 3.4)
thor (>= 0.14.6, < 2.0)
raindrops (0.10.0)
rake (10.0.3)
rake (10.0.4)
rb-fsevent (0.9.2)
rb-inotify (0.8.8)
ffi (>= 0.5.0)
rdoc (3.12)
rdoc (3.12.2)
json (~> 1.4)
redcarpet (2.2.2)
redis (3.0.2)
redis (3.0.3)
redis-actionpack (3.2.3)
actionpack (~> 3.2.3)
redis-rack (~> 1.4.0)
redis-store (~> 1.1.0)
redis-activesupport (3.2.3)
activesupport (~> 3.2.3)
redis-store (~> 1.1.0)
redis-namespace (1.2.1)
redis (~> 3.0.0)
rspec (2.12.0)
rspec-core (~> 2.12.0)
rspec-expectations (~> 2.12.0)
rspec-mocks (~> 2.12.0)
rspec-core (2.12.0)
rspec-expectations (2.12.0)
diff-lcs (~> 1.1.3)
rspec-mocks (2.12.0)
rspec-rails (2.12.0)
redis-rack (1.4.2)
rack (~> 1.4.1)
redis-store (~> 1.1.0)
redis-rails (3.2.3)
redis-actionpack (~> 3.2.3)
redis-activesupport (~> 3.2.3)
redis-store (~> 1.1.0)
redis-store (1.1.3)
redis (>= 2.2.0)
ref (1.0.4)
request_store (1.0.5)
rest-client (1.6.7)
mime-types (>= 1.16)
rspec (2.13.0)
rspec-core (~> 2.13.0)
rspec-expectations (~> 2.13.0)
rspec-mocks (~> 2.13.0)
rspec-core (2.13.1)
rspec-expectations (2.13.0)
diff-lcs (>= 1.1.3, < 2.0)
rspec-mocks (2.13.0)
rspec-rails (2.13.0)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec-core (~> 2.12.0)
rspec-expectations (~> 2.12.0)
rspec-mocks (~> 2.12.0)
rspec-core (~> 2.13.0)
rspec-expectations (~> 2.13.0)
rspec-mocks (~> 2.13.0)
ruby-progressbar (1.0.2)
rubyntlm (0.1.1)
rubyzip (0.9.9)
sass (3.2.5)
sass-rails (3.2.5)
sanitize (2.0.3)
nokogiri (>= 1.4.4, < 1.6)
sass (3.2.7)
sass-rails (3.2.6)
railties (~> 3.2.0)
sass (>= 3.1.10)
tilt (~> 1.3)
@ -392,16 +413,19 @@ GEM
seed-fu (2.2.0)
activerecord (~> 3.1)
activesupport (~> 3.1)
selenium-webdriver (2.26.0)
select2-rails (3.3.1)
sass-rails (>= 3.2)
thor (~> 0.14)
selenium-webdriver (2.30.0)
childprocess (>= 0.2.5)
libwebsocket (~> 0.1.3)
multi_json (~> 1.0)
rubyzip
settingslogic (2.0.8)
sexp_processor (4.1.3)
websocket (~> 1.0.4)
settingslogic (2.0.9)
sexp_processor (4.2.0)
shoulda-matchers (1.3.0)
activesupport (>= 3.0.0)
sidekiq (2.6.4)
sidekiq (2.8.0)
celluloid (~> 0.12.0)
connection_pool (~> 1.0)
multi_json (~> 1)
@ -411,59 +435,66 @@ GEM
multi_json (~> 1.0)
simplecov-html (~> 0.7.1)
simplecov-html (0.7.1)
sinatra (1.3.3)
rack (~> 1.3, >= 1.3.6)
rack-protection (~> 1.2)
sinatra (1.3.5)
rack (~> 1.4)
rack-protection (~> 1.3)
tilt (~> 1.3, >= 1.3.3)
six (0.2.0)
slim (1.3.6)
temple (~> 0.5.5)
tilt (~> 1.3.3)
slop (3.3.3)
spinach (0.5.2)
slop (3.4.4)
spinach (0.7.0)
colorize
gherkin-ruby (~> 0.2.0)
spinach-rails (0.1.8)
capybara (~> 1)
spinach-rails (0.2.0)
capybara (~> 2.0.0)
railties (>= 3)
spinach (>= 0.4)
spork (1.0.0rc3)
sprockets (2.2.2)
hike (~> 1.2)
multi_json (~> 1.0)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
stamp (0.3.0)
stamp (0.5.0)
state_machine (1.1.2)
stringex (1.5.1)
temple (0.5.5)
terminal-table (1.4.5)
test_after_commit (0.0.1)
therubyracer (0.10.2)
libv8 (~> 3.3.10)
therubyracer (0.11.4)
libv8 (~> 3.11.8.12)
ref
thin (1.5.0)
daemons (>= 1.0.9)
eventmachine (>= 0.12.6)
rack (>= 1.0.0)
thor (0.16.0)
tilt (1.3.3)
timers (1.0.2)
thor (0.18.0)
tilt (1.3.6)
timers (1.1.0)
treetop (1.4.12)
polyglot
polyglot (>= 0.3.1)
tzinfo (0.3.35)
tzinfo (0.3.37)
uglifier (1.3.0)
execjs (>= 0.3.0)
multi_json (~> 1.0, >= 1.0.2)
unicorn (4.4.0)
unicorn (4.6.2)
kgio (~> 2.6)
rack
raindrops (~> 0.7)
virtus (0.5.2)
useragent (0.4.16)
virtus (0.5.4)
backports (~> 2.6.1)
descendants_tracker (~> 0.0.1)
warden (1.2.1)
rack (>= 1.0)
webmock (1.9.0)
addressable (>= 2.2.7)
crack (>= 0.1.7)
websocket (1.0.2)
xpath (0.1.4)
websocket (1.0.7)
xpath (1.0.0)
nokogiri (~> 1.3)
yajl-ruby (1.1.0)
@ -478,14 +509,16 @@ DEPENDENCIES
binding_of_caller
bootstrap-sass (= 2.2.1.1)
capybara
carrierwave (~> 0.7.1)
carrierwave
chosen-rails (= 0.9.8)
coffee-rails (~> 3.2.2)
colored
database_cleaner!
devise (~> 2.1.0)
draper (~> 0.18.0)
coveralls
database_cleaner
devise
draper
email_spec
enumerize
factory_girl_rails
ffaker
font-awesome-sass-rails (~> 3.0.0)
@ -494,18 +527,21 @@ DEPENDENCIES
git
github-linguist (~> 2.3.4)
github-markup (~> 0.7.4)
gitlab_meta (= 4.0)
gitlab-grack (~> 1.0.0)
gitlab-pygments.rb (~> 0.3.2)
gitlab_meta (= 5.0)
gitlab_omniauth-ldap (= 1.0.2)
gitlab_yaml_db (= 1.0.0)
gitolite (= 1.1.0)
grack!
grape (~> 0.2.1)
grit!
grit_ext!
gollum (~> 2.4.0)!
gon
grape (~> 0.3.1)
grape-entity (~> 0.2.0)
grit (~> 2.5.0)!
grit_ext (~> 0.8.1)
growl
guard-rspec
guard-spinach
haml-rails (~> 0.3.5)
haml-rails
httparty
jquery-atwho-rails (= 0.1.7)
jquery-rails (= 2.1.3)
@ -515,39 +551,42 @@ DEPENDENCIES
letter_opener
modernizr (= 2.6.2)
mysql2
omniauth (~> 1.1.1)
omniauth (~> 1.1.3)
omniauth-github
omniauth-google-oauth2
omniauth-twitter
pg
poltergeist!
poltergeist (= 1.1.0)
pry
pygments.rb!
quiet_assets (~> 1.0.1)
rack-mini-profiler
rails (= 3.2.11)
rails (= 3.2.13)
rails-dev-tweaks
rails_best_practices
raphael-rails!
rb-fsevent
rb-inotify
redcarpet (~> 2.2.2)
redis-rails
rspec-rails
sass-rails (~> 3.2.5)
sdoc
seed-fu
select2-rails
settingslogic
shoulda-matchers (= 1.3.0)
sidekiq (= 2.6.4)
sidekiq
simplecov
sinatra
six
slim
spinach-rails
spork (~> 1.0rc)
stamp
state_machine
test_after_commit
therubyracer
thin
uglifier (~> 1.3.0)
unicorn (~> 4.4.0)
unicorn
webmock

View File

@ -1,2 +1,2 @@
web: bundle exec unicorn_rails -p $PORT
worker: bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,common,default,gitolite
worker: bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,common,default,gitlab_shell

166
README.md
View File

@ -1,45 +1,161 @@
# Welcome to GitLab [![build status](https://secure.travis-ci.org/gitlabhq/gitlabhq.png)](https://travis-ci.org/gitlabhq/gitlabhq) [![build status](https://secure.travis-ci.org/gitlabhq/grit.png)](https://travis-ci.org/gitlabhq/grit) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/gitlabhq/gitlabhq) [![Dependency Status](https://gemnasium.com/gitlabhq/gitlabhq.png)](https://gemnasium.com/gitlabhq/gitlabhq)
## GitLab: self hosted Git management software
GitLab is a free project and repository management application
![logo](https://raw.github.com/gitlabhq/gitlabhq/master/public/gitlab_logo.png)
[![CI](http://ci.gitlab.org/projects/1/status?ref=master)](http://ci.gitlab.org/projects/1?ref=master)
### GitLab allows you to
* keep your code secure on your own server
* manage repositories, users and access permissions
* communicate through issues, line-comments and wiki pages
* perform code review with merge requests
## Application details
### GitLab is
* based on Ruby on Rails
* distributed under the MIT License
* works with gitolite
* powered by Ruby on Rails
* completely free and open source (MIT license)
* used by more than 10.000 organizations to keep their code secure
## Requirements
### Code status
* Ubuntu/Debian
* ruby 1.9.3+
* [![build status](http://ci.gitlab.org/projects/1/status?ref=master)](http://ci.gitlab.org/projects/1?ref=master) ci.gitlab.org (master branch)
* [![build status](https://secure.travis-ci.org/gitlabhq/gitlabhq.png)](https://travis-ci.org/gitlabhq/gitlabhq) travis-ci.org (master branch)
* [![Code Climate](https://codeclimate.com/github/gitlabhq/gitlabhq.png)](https://codeclimate.com/github/gitlabhq/gitlabhq)
* [![Dependency Status](https://gemnasium.com/gitlabhq/gitlabhq.png)](https://gemnasium.com/gitlabhq/gitlabhq)
* [![Coverage Status](https://coveralls.io/repos/gitlabhq/gitlabhq/badge.png?branch=master)](https://coveralls.io/r/gitlabhq/gitlabhq)
### Resources
* GitLab.org community site: [Homepage](http://gitlab.org) [Screenshots](http://gitlab.org/screenshots/) [Blog](http://blog.gitlab.org/) [Demo](http://demo.gitlabhq.com/users/sign_in)
* GitLab.com commercial services: [Homepage](http://www.gitlab.com/) [Subscription](http://www.gitlab.com/subscription/) [Consultancy](http://www.gitlab.com/consultancy/) [GitLab Cloud](http://www.gitlab.com/cloud/) [Blog](http://blog.gitlab.com/)
* GitLab CI: [Readme](https://github.com/gitlabhq/gitlab-ci/blob/master/README.md) of the GitLab open-source continuous integration server
### Requirements
* Ubuntu/Debian**
* ruby 1.9.3
* MySQL
* git
* gitolite
* gitlab-shell
* redis
## Install
** More details are in the [requirements doc](https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/requirements.md)
Checkout wiki pages for installation information, migration, etc.
### Installation
## Community
#### Official production installation
[Google Group](https://groups.google.com/group/gitlabhq)
Follow the installation guide for production server.
## Contacts
* [Installation guide for latest stable release (5.0)](https://github.com/gitlabhq/gitlabhq/blob/5-0-stable/doc/install/installation.md) - **Recommended**
Twitter:
* [Installation guide for the current master branch (5.1)](https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md)
* @gitlabhq
* @dzaporozhets
Email
#### Official development installation
* m@gitlabhq.com
If you want to contribute, please first read our [Contributing Guidelines](https://github.com/gitlabhq/gitlabhq/blob/master/CONTRIBUTING.md) and then we suggest you to use the Vagrant virtual machine project to get an environment working with all dependencies.
## Contribute
* [Vagrant virtual machine](https://github.com/gitlabhq/gitlab-vagrant-vm)
[Developer Guide](https://github.com/gitlabhq/gitlabhq/wiki/Developer-Guide)
Want to help - send a pull request.
We'll accept good pull requests.
#### Unsupported production installation
* [GitLab recipes](https://github.com/gitlabhq/gitlab-recipes) for setup on different platforms
* [Unofficial installation guides](https://github.com/gitlabhq/gitlab-public-wiki/wiki/Unofficial-Installation-Guides)
* [BitNami one-click installers](http://bitnami.com/stack/gitlab)
* [TurnKey Linux virtual appliance](http://www.turnkeylinux.org/gitlab)
### New versions and upgrading
Each month on the 22th a new version is released together with an upgrade guide.
* [Upgrade guides](https://github.com/gitlabhq/gitlabhq/wiki)
* [Changelog](https://github.com/gitlabhq/gitlabhq/blob/master/CHANGELOG)
* [Roadmap](https://github.com/gitlabhq/gitlabhq/blob/master/ROADMAP.md)
### Getting started
1. The Installation guide contains instructions to download an init script and run that on boot. With the init script you can also start GitLab
sudo service gitlab start
or
sudo /etc/init.d/gitlab restart
2. Start it with [Foreman](https://github.com/ddollar/foreman) in development mode
bundle exec foreman start -p 3000
or start it manually
bundle exec rails s
bundle exec rake sidekiq:start
### Running the tests
* Seed the database
bundle exec rake db:setup RAILS_ENV=test
bundle exec rake db:seed_fu RAILS_ENV=test
* Run all tests
bundle exec rake gitlab:test
* Rspec unit and functional tests
bundle exec rake spec
* Spinach integration tests
bundle exec rake spinach
### GitLab interfaces
* [GitLab API](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/README.md)
* [Rake tasks](https://github.com/gitlabhq/gitlabhq/tree/master/doc/raketasks)
* [Directory structure](https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/structure.md)
* [Databases](https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/databases.md)
### Getting help
* [Troubleshooting guide](https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide) contains solutions to common problems.
* [Support forum](https://groups.google.com/forum/#!forum/gitlabhq) is the best place to ask questions. For example you can use it if you have questions about: permission denied errors, invisible repos, can't clone/pull/push or with web hooks that don't fire. Please search for similar issues before posting your own, there's a good chance somebody else had the same issue you have now and had it resolved. There are a lot of helpful GitLab users there who may be able to help you quickly. If your particular issue turns out to be a bug, it will find its way from there to a fix.
* [Feedback and suggestions forum](http://gitlab.uservoice.com/forums/176466-general) is the place to propose and discuss new features for GitLab.
* [Support subscription](http://www.gitlab.com/subscription/) connect you to the knowledge of GitLab experts that will resolve your issues and answer your questions.
* [Consultancy](http://www.gitlab.com/consultancy/) allows you hire GitLab exports for installations, upgrades and customizations.
* [Contributing guide](https://github.com/gitlabhq/gitlabhq/blob/master/CONTRIBUTING.md) describes how to submit pull requests and issues. Pull requests and issues not in line with the guidelines in this document will be closed without comment.
### Getting in touch
* [Core team](https://github.com/gitlabhq?tab=members)
* [Contributors](https://github.com/gitlabhq/gitlabhq/graphs/contributors)
* [Leader](https://github.com/randx)
* [Contact page](http://gitlab.org/contact/)

View File

@ -1,12 +1,5 @@
## GitLab Roadmap
### v5.0 March 22
* Replace gitolite with gitlab-shell
* Usability improvements
* Notification improvements
### v4.2 February 22
* Teams
### v5.1 April 22
* Not decided yet.

View File

@ -1 +1 @@
4.2.0pre
5.1.0pre

View File

@ -1,92 +0,0 @@
Copyright (c) 2010, Jan Gerner (post@yanone.de)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,53 @@
@Api =
users_path: "/api/:version/users.json"
user_path: "/api/:version/users/:id.json"
notes_path: "/api/:version/projects/:id/notes.json"
# Get 20 (depends on api) recent notes
# and sort the ascending from oldest to newest
notes: (project_id, callback) ->
url = Api.buildUrl(Api.notes_path)
url = url.replace(':id', project_id)
$.ajax(
url: url,
data:
private_token: gon.api_token
gfm: true
recent: true
dataType: "json"
).done (notes) ->
notes.sort (a, b) ->
return a.id - b.id
callback(notes)
user: (user_id, callback) ->
url = Api.buildUrl(Api.user_path)
url = url.replace(':id', user_id)
$.ajax(
url: url
data:
private_token: gon.api_token
dataType: "json"
).done (user) ->
callback(user)
# Return users list. Filtered by query
# Only active users retrieved
users: (query, callback) ->
url = Api.buildUrl(Api.users_path)
$.ajax(
url: url
data:
private_token: gon.api_token
search: query
per_page: 20
active: true
dataType: "json"
).done (users) ->
callback(users)
buildUrl: (url) ->
return url.replace(':version', gon.api_version)

View File

@ -17,6 +17,7 @@
//= require bootstrap
//= require modernizr
//= require chosen-jquery
//= require select2
//= require raphael
//= require g.raphael-min
//= require g.bar-min

View File

@ -3,3 +3,11 @@ $ ->
container = $(@).closest(".js-toggler-container")
container.toggleClass("on")
$("body").on "click", ".js-toggle-visibility-link", (e) ->
$(@).find('i').
toggleClass('icon-chevron-down').
toggleClass('icon-chevron-up')
container = $(".js-toggle-visibility-container")
container.toggleClass("hide")
e.preventDefault()

View File

@ -0,0 +1,309 @@
class BranchGraph
constructor: (@element, @options) ->
@preparedCommits = {}
@mtime = 0
@mspace = 0
@parents = {}
@colors = ["#000"]
@offsetX = 120
@offsetY = 20
@unitTime = 30
@unitSpace = 10
@load()
load: ->
$.ajax
url: @options.url
method: "get"
dataType: "json"
success: $.proxy((data) ->
$(".loading", @element).hide()
@prepareData data.days, data.commits
@buildGraph()
, this)
prepareData: (@days, @commits) ->
@collectParents()
for c in @commits
c.isParent = true if c.id of @parents
@preparedCommits[c.id] = c
@collectColors()
collectParents: ->
for c in @commits
@mtime = Math.max(@mtime, c.time)
@mspace = Math.max(@mspace, c.space)
for p in c.parents
@parents[p[0]] = true
@mspace = Math.max(@mspace, p[1])
collectColors: ->
k = 0
while k < @mspace
@colors.push Raphael.getColor(.8)
# Skipping a few colors in the spectrum to get more contrast between colors
Raphael.getColor()
Raphael.getColor()
k++
buildGraph: ->
graphHeight = $(@element).height()
graphWidth = $(@element).width()
ch = Math.max(graphHeight, @offsetY + @unitTime * @mtime + 150)
cw = Math.max(graphWidth, @offsetX + @unitSpace * @mspace + 300)
@r = r = Raphael(@element.get(0), cw, ch)
top = r.set()
cuday = 0
cumonth = ""
barHeight = Math.max(graphHeight, @unitTime * @days.length + 320)
r.rect(0, 0, 26, barHeight).attr fill: "#222"
r.rect(26, 0, 20, barHeight).attr fill: "#444"
for day, mm in @days
if cuday isnt day[0]
# Dates
r.text(36, @offsetY + @unitTime * mm, day[0])
.attr(
font: "12px Monaco, monospace"
fill: "#DDD"
)
cuday = day[0]
if cumonth isnt day[1]
# Months
r.text(13, @offsetY + @unitTime * mm, day[1])
.attr(
font: "12px Monaco, monospace"
fill: "#EEE"
)
cumonth = day[1]
for commit in @commits
x = @offsetX + @unitSpace * (@mspace - commit.space)
y = @offsetY + @unitTime * commit.time
@drawDot(x, y, commit)
@drawLines(x, y, commit)
@appendLabel(x, y, commit.refs) if commit.refs
@appendAnchor(top, commit, x, y)
@markCommit(x, y, commit, graphHeight)
top.toFront()
@bindEvents()
bindEvents: ->
drag = {}
element = @element
dragger = (event) ->
element.scrollLeft drag.sl - (event.clientX - drag.x)
element.scrollTop drag.st - (event.clientY - drag.y)
element.on mousedown: (event) ->
drag =
x: event.clientX
y: event.clientY
st: element.scrollTop()
sl: element.scrollLeft()
$(window).on "mousemove", dragger
$(window).on
mouseup: ->
$(window).off "mousemove", dragger
keydown: (event) ->
# left
element.scrollLeft element.scrollLeft() - 50 if event.keyCode is 37
# top
element.scrollTop element.scrollTop() - 50 if event.keyCode is 38
# right
element.scrollLeft element.scrollLeft() + 50 if event.keyCode is 39
# bottom
element.scrollTop element.scrollTop() + 50 if event.keyCode is 40
appendLabel: (x, y, refs) ->
r = @r
shortrefs = refs
# Truncate if longer than 15 chars
shortrefs = shortrefs.substr(0, 15) + "" if shortrefs.length > 17
text = r.text(x + 4, y, shortrefs).attr(
"text-anchor": "start"
font: "10px Monaco, monospace"
fill: "#FFF"
title: refs
)
textbox = text.getBBox()
# Create rectangle based on the size of the textbox
rect = r.rect(x, y - 7, textbox.width + 5, textbox.height + 5, 4).attr(
fill: "#000"
"fill-opacity": .5
stroke: "none"
)
triangle = r.path(["M", x - 5, y, "L", x - 15, y - 4, "L", x - 15, y + 4, "Z"]).attr(
fill: "#000"
"fill-opacity": .5
stroke: "none"
)
label = r.set(rect, text)
label.transform(["t", -rect.getBBox().width - 15, 0])
# Set text to front
text.toFront()
appendAnchor: (top, commit, x, y) ->
r = @r
options = @options
anchor = r.circle(x, y, 10).attr(
fill: "#000"
opacity: 0
cursor: "pointer"
).click(->
window.open options.commit_url.replace("%s", commit.id), "_blank"
).hover(->
@tooltip = r.commitTooltip(x + 5, y, commit)
top.push @tooltip.insertBefore(this)
, ->
@tooltip and @tooltip.remove() and delete @tooltip
)
top.push anchor
drawDot: (x, y, commit) ->
r = @r
r.circle(x, y, 3).attr(
fill: @colors[commit.space]
stroke: "none"
)
r.rect(@offsetX + @unitSpace * @mspace + 10, y - 10, 20, 20).attr(
fill: "url(#{commit.author.icon})"
stroke: @colors[commit.space]
"stroke-width": 2
)
r.text(@offsetX + @unitSpace * @mspace + 35, y, commit.message.split("\n")[0]).attr(
"text-anchor": "start"
font: "14px Monaco, monospace"
)
drawLines: (x, y, commit) ->
r = @r
for parent, i in commit.parents
parentCommit = @preparedCommits[parent[0]]
parentY = @offsetY + @unitTime * parentCommit.time
parentX1 = @offsetX + @unitSpace * (@mspace - parentCommit.space)
parentX2 = @offsetX + @unitSpace * (@mspace - parent[1])
# Set line color
if parentCommit.space <= commit.space
color = @colors[commit.space]
else
color = @colors[parentCommit.space]
# Build line shape
if parent[1] is commit.space
offset = [0, 5]
arrow = "l-2,5,4,0,-2,-5,0,5"
else if parent[1] < commit.space
offset = [3, 3]
arrow = "l5,0,-2,4,-3,-4,4,2"
else
offset = [-3, 3]
arrow = "l-5,0,2,4,3,-4,-4,2"
# Start point
route = ["M", x + offset[0], y + offset[1]]
# Add arrow if not first parent
if i > 0
route.push(arrow)
# Circumvent if overlap
if commit.space isnt parentCommit.space or commit.space isnt parent[1]
route.push(
"L", parentX2, y + 10,
"L", parentX2, parentY - 5,
)
# End point
route.push("L", parentX1, parentY)
r
.path(route)
.attr(
stroke: color
"stroke-width": 2)
markCommit: (x, y, commit, graphHeight) ->
if commit.id is @options.commit_id
r = @r
r.path(["M", x + 5, y, "L", x + 15, y + 4, "L", x + 15, y - 4, "Z"]).attr(
fill: "#000"
"fill-opacity": .5
stroke: "none"
)
# Displayed in the center
@element.scrollTop(y - graphHeight / 2)
Raphael::commitTooltip = (x, y, commit) ->
boxWidth = 300
boxHeight = 200
icon = @image(commit.author.icon, x, y, 20, 20)
nameText = @text(x + 25, y + 10, commit.author.name)
idText = @text(x, y + 35, commit.id)
messageText = @text(x, y + 50, commit.message)
textSet = @set(icon, nameText, idText, messageText).attr(
"text-anchor": "start"
font: "12px Monaco, monospace"
)
nameText.attr(
font: "14px Arial"
"font-weight": "bold"
)
idText.attr fill: "#AAA"
@textWrap messageText, boxWidth - 50
rect = @rect(x - 10, y - 10, boxWidth, 100, 4).attr(
fill: "#FFF"
stroke: "#000"
"stroke-linecap": "round"
"stroke-width": 2
)
tooltip = @set(rect, textSet)
rect.attr(
height: tooltip.getBBox().height + 10
width: tooltip.getBBox().width + 10
)
tooltip.transform ["t", 20, 20]
tooltip
Raphael::textWrap = (t, width) ->
content = t.attr("text")
abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
t.attr text: abc
letterWidth = t.getBBox().width / abc.length
t.attr text: content
words = content.split(" ")
x = 0
s = []
for word in words
if x + (word.length * letterWidth) > width
s.push "\n"
x = 0
x += word.length * letterWidth
s.push word + " "
t.attr text: s.join("")
b = t.getBBox()
h = Math.abs(b.y2) - Math.abs(b.y) + 1
t.attr y: b.y + h
@BranchGraph = BranchGraph

View File

@ -1,5 +1,6 @@
window.dashboardPage = ->
Pager.init 20, true
initSidebarTab()
$(".event_filter_link").bind "click", (event) ->
event.preventDefault()
toggleFilter $(this)
@ -25,3 +26,14 @@ toggleFilter = (sender) ->
event_filters.splice index, 1
$.cookie "event_filter", event_filters.join(",")
initSidebarTab = ->
key = "dashboard_sidebar_filter"
# store selection in cookie
$('.dash-sidebar-tabs a').on 'click', (e) ->
$.cookie(key, $(e.target).attr('id'))
# show tab from cookie
sidebar_filter = $.cookie(key)
$("#" + sidebar_filter).tab('show') if sidebar_filter

View File

@ -0,0 +1,9 @@
$.fn.showAndHide = ->
$(@).show().
delay(3000).
fadeOut()
$.fn.enableButton = ->
$(@).removeAttr('disabled').
removeClass('disabled')

View File

@ -0,0 +1,181 @@
/**
* Timeago is a jQuery plugin that makes it easy to support automatically
* updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
*
* @name timeago
* @version 1.1.0
* @requires jQuery v1.2.3+
* @author Ryan McGeary
* @license MIT License - http://www.opensource.org/licenses/mit-license.php
*
* For usage and examples, visit:
* http://timeago.yarp.com/
*
* Copyright (c) 2008-2013, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
$.timeago = function(timestamp) {
if (timestamp instanceof Date) {
return inWords(timestamp);
} else if (typeof timestamp === "string") {
return inWords($.timeago.parse(timestamp));
} else if (typeof timestamp === "number") {
return inWords(new Date(timestamp));
} else {
return inWords($.timeago.datetime(timestamp));
}
};
var $t = $.timeago;
$.extend($.timeago, {
settings: {
refreshMillis: 60000,
allowFuture: false,
strings: {
prefixAgo: null,
prefixFromNow: null,
suffixAgo: "ago",
suffixFromNow: "from now",
seconds: "less than a minute",
minute: "about a minute",
minutes: "%d minutes",
hour: "about an hour",
hours: "about %d hours",
day: "a day",
days: "%d days",
month: "about a month",
months: "%d months",
year: "about a year",
years: "%d years",
wordSeparator: " ",
numbers: []
}
},
inWords: function(distanceMillis) {
var $l = this.settings.strings;
var prefix = $l.prefixAgo;
var suffix = $l.suffixAgo;
if (this.settings.allowFuture) {
if (distanceMillis < 0) {
prefix = $l.prefixFromNow;
suffix = $l.suffixFromNow;
}
}
var seconds = Math.abs(distanceMillis) / 1000;
var minutes = seconds / 60;
var hours = minutes / 60;
var days = hours / 24;
var years = days / 365;
function substitute(stringOrFunction, number) {
var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
var value = ($l.numbers && $l.numbers[number]) || number;
return string.replace(/%d/i, value);
}
var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
seconds < 90 && substitute($l.minute, 1) ||
minutes < 45 && substitute($l.minutes, Math.round(minutes)) ||
minutes < 90 && substitute($l.hour, 1) ||
hours < 24 && substitute($l.hours, Math.round(hours)) ||
hours < 42 && substitute($l.day, 1) ||
days < 30 && substitute($l.days, Math.round(days)) ||
days < 45 && substitute($l.month, 1) ||
days < 365 && substitute($l.months, Math.round(days / 30)) ||
years < 1.5 && substitute($l.year, 1) ||
substitute($l.years, Math.round(years));
var separator = $l.wordSeparator || "";
if ($l.wordSeparator === undefined) { separator = " "; }
return $.trim([prefix, words, suffix].join(separator));
},
parse: function(iso8601) {
var s = $.trim(iso8601);
s = s.replace(/\.\d+/,""); // remove milliseconds
s = s.replace(/-/,"/").replace(/-/,"/");
s = s.replace(/T/," ").replace(/Z/," UTC");
s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
return new Date(s);
},
datetime: function(elem) {
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
return $t.parse(iso8601);
},
isTime: function(elem) {
// jQuery's `is()` doesn't play well with HTML5 in IE
return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
}
});
// functions that can be called via $(el).timeago('action')
// init is default when no action is given
// functions are called with context of a single element
var functions = {
init: function(){
var refresh_el = $.proxy(refresh, this);
refresh_el();
var $s = $t.settings;
if ($s.refreshMillis > 0) {
setInterval(refresh_el, $s.refreshMillis);
}
},
update: function(time){
$(this).data('timeago', { datetime: $t.parse(time) });
refresh.apply(this);
}
};
$.fn.timeago = function(action, options) {
var fn = action ? functions[action] : functions.init;
if(!fn){
throw new Error("Unknown function name '"+ action +"' for timeago");
}
// each over objects here and call the requested function
this.each(function(){
fn.call(this, options);
});
return this;
};
function refresh() {
var data = prepareData(this);
if (!isNaN(data.datetime)) {
$(this).text(inWords(data.datetime));
}
return this;
}
function prepareData(element) {
element = $(element);
if (!element.data("timeago")) {
element.data("timeago", { datetime: $t.datetime(element) });
var text = $.trim(element.text());
if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
element.attr("title", text);
}
}
return element.data("timeago");
}
function inWords(date) {
return $t.inWords(distance(date));
}
function distance(date) {
return (new Date().getTime() - date.getTime());
}
// fix for IE6 suckage
document.createElement("abbr");
document.createElement("time");
}));

View File

@ -0,0 +1,211 @@
function md5 (str) {
// http://kevin.vanzonneveld.net
// + original by: Webtoolkit.info (http://www.webtoolkit.info/)
// + namespaced by: Michael White (http://getsprink.com)
// + tweaked by: Jack
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: Brett Zamir (http://brett-zamir.me)
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// - depends on: utf8_encode
// * example 1: md5('Kevin van Zonneveld');
// * returns 1: '6e658d4bfcb59cc13f96c14450ac40b9'
var xl;
var rotateLeft = function (lValue, iShiftBits) {
return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
};
var addUnsigned = function (lX, lY) {
var lX4, lY4, lX8, lY8, lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
lY4 = (lY & 0x40000000);
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
if (lX4 & lY4) {
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
}
if (lX4 | lY4) {
if (lResult & 0x40000000) {
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
} else {
return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
}
} else {
return (lResult ^ lX8 ^ lY8);
}
};
var _F = function (x, y, z) {
return (x & y) | ((~x) & z);
};
var _G = function (x, y, z) {
return (x & z) | (y & (~z));
};
var _H = function (x, y, z) {
return (x ^ y ^ z);
};
var _I = function (x, y, z) {
return (y ^ (x | (~z)));
};
var _FF = function (a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(_F(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};
var _GG = function (a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(_G(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};
var _HH = function (a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(_H(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};
var _II = function (a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(_I(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
};
var convertToWordArray = function (str) {
var lWordCount;
var lMessageLength = str.length;
var lNumberOfWords_temp1 = lMessageLength + 8;
var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
var lWordArray = new Array(lNumberOfWords - 1);
var lBytePosition = 0;
var lByteCount = 0;
while (lByteCount < lMessageLength) {
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (str.charCodeAt(lByteCount) << lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
return lWordArray;
};
var wordToHex = function (lValue) {
var wordToHexValue = "",
wordToHexValue_temp = "",
lByte, lCount;
for (lCount = 0; lCount <= 3; lCount++) {
lByte = (lValue >>> (lCount * 8)) & 255;
wordToHexValue_temp = "0" + lByte.toString(16);
wordToHexValue = wordToHexValue + wordToHexValue_temp.substr(wordToHexValue_temp.length - 2, 2);
}
return wordToHexValue;
};
var x = [],
k, AA, BB, CC, DD, a, b, c, d, S11 = 7,
S12 = 12,
S13 = 17,
S14 = 22,
S21 = 5,
S22 = 9,
S23 = 14,
S24 = 20,
S31 = 4,
S32 = 11,
S33 = 16,
S34 = 23,
S41 = 6,
S42 = 10,
S43 = 15,
S44 = 21;
str = this.utf8_encode(str);
x = convertToWordArray(str);
a = 0x67452301;
b = 0xEFCDAB89;
c = 0x98BADCFE;
d = 0x10325476;
xl = x.length;
for (k = 0; k < xl; k += 16) {
AA = a;
BB = b;
CC = c;
DD = d;
a = _FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
d = _FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
c = _FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
b = _FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
a = _FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
d = _FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
c = _FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
b = _FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
a = _FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
d = _FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
c = _FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
b = _FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
a = _FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
d = _FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
c = _FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
b = _FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
a = _GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
d = _GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
c = _GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
b = _GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
a = _GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
d = _GG(d, a, b, c, x[k + 10], S22, 0x2441453);
c = _GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
b = _GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
a = _GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
d = _GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
c = _GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
b = _GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
a = _GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
d = _GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
c = _GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
b = _GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
a = _HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
d = _HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
c = _HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
b = _HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
a = _HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
d = _HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
c = _HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
b = _HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
a = _HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
d = _HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
c = _HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
b = _HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
a = _HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
d = _HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
c = _HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
b = _HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
a = _II(a, b, c, d, x[k + 0], S41, 0xF4292244);
d = _II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
c = _II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
b = _II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
a = _II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
d = _II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
c = _II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
b = _II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
a = _II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
d = _II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
c = _II(c, d, a, b, x[k + 6], S43, 0xA3014314);
b = _II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
a = _II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
d = _II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
c = _II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
b = _II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
a = addUnsigned(a, AA);
b = addUnsigned(b, BB);
c = addUnsigned(c, CC);
d = addUnsigned(d, DD);
}
var temp = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
return temp.toLowerCase();
}

View File

@ -0,0 +1,70 @@
function utf8_encode (argString) {
// http://kevin.vanzonneveld.net
// + original by: Webtoolkit.info (http://www.webtoolkit.info/)
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: sowberry
// + tweaked by: Jack
// + bugfixed by: Onno Marsman
// + improved by: Yves Sucaet
// + bugfixed by: Onno Marsman
// + bugfixed by: Ulrich
// + bugfixed by: Rafal Kukawski
// + improved by: kirilloid
// + bugfixed by: kirilloid
// * example 1: utf8_encode('Kevin van Zonneveld');
// * returns 1: 'Kevin van Zonneveld'
if (argString === null || typeof argString === "undefined") {
return "";
}
var string = (argString + ''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n");
var utftext = '',
start, end, stringl = 0;
start = end = 0;
stringl = string.length;
for (var n = 0; n < stringl; n++) {
var c1 = string.charCodeAt(n);
var enc = null;
if (c1 < 128) {
end++;
} else if (c1 > 127 && c1 < 2048) {
enc = String.fromCharCode(
(c1 >> 6) | 192,
( c1 & 63) | 128
);
} else if (c1 & 0xF800 != 0xD800) {
enc = String.fromCharCode(
(c1 >> 12) | 224,
((c1 >> 6) & 63) | 128,
( c1 & 63) | 128
);
} else { // surrogate pairs
if (c1 & 0xFC00 != 0xD800) { throw new RangeError("Unmatched trail surrogate at " + n); }
var c2 = string.charCodeAt(++n);
if (c2 & 0xFC00 != 0xDC00) { throw new RangeError("Unmatched lead surrogate at " + (n-1)); }
c1 = ((c1 & 0x3FF) << 10) + (c2 & 0x3FF) + 0x10000;
enc = String.fromCharCode(
(c1 >> 18) | 240,
((c1 >> 12) & 63) | 128,
((c1 >> 6) & 63) | 128,
( c1 & 63) | 128
);
}
if (enc !== null) {
if (end > start) {
utftext += string.slice(start, end);
}
utftext += enc;
start = end = n + 1;
}
}
if (end > start) {
utftext += string.slice(start, stringl);
}
return utftext;
}

View File

@ -7,6 +7,8 @@ window.slugify = (text) ->
window.ajaxGet = (url) ->
$.ajax({type: "GET", url: url, dataType: "script"})
window.showAndHide = (selector) ->
window.errorMessage = (message) ->
ehtml = $("<p>")
ehtml.addClass("error_message")
@ -32,10 +34,22 @@ window.disableButtonIfEmptyField = (field_selector, button_selector) ->
else
closest_submit.enable()
window.sanitize = (str) ->
return str.replace(/<(?:.|\n)*?>/gm, '')
window.linkify = (str) ->
exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig
return str.replace(exp,"<a href='$1'>$1</a>")
$ ->
# Click a .one_click_select field, select the contents
$(".one_click_select").on 'click', -> $(@).select()
# Click a .appear-link, appear-data fadeout
$(".appear-link").on 'click', ->
$('.appear-data').fadeIn()
# Initialize chosen selects
$('select.chosen').chosen()
@ -45,11 +59,17 @@ $ ->
# Bottom tooltip
$('.has_bottom_tooltip').tooltip(placement: 'bottom')
# Form submitter
$('.trigger-submit').on 'change', ->
$(@).parents('form').submit()
$("abbr.timeago").timeago()
# Flash
if (flash = $("#flash-container")).length > 0
flash.click -> $(@).slideUp("slow")
flash.slideDown "slow"
setTimeout (-> flash.slideUp("slow")), 3000
if (flash = $(".flash-container")).length > 0
flash.click -> $(@).fadeOut()
flash.show()
setTimeout (-> flash.fadeOut()), 3000
# Disable form buttons while a form is submitting
$('body').on 'ajax:complete, ajax:beforeSend, submit', 'form', (e) ->

View File

@ -27,11 +27,11 @@ class MergeRequest
this.$el.find(selector)
initMergeWidget: ->
this.showState( @opts.current_state )
this.showState( @opts.current_status )
if this.$('.automerge_widget').length and @opts.check_enable
$.get @opts.url_to_automerge_check, (data) =>
this.showState( data.state )
this.showState( data.merge_status )
, 'json'
if @opts.ci_enable

View File

@ -4,31 +4,15 @@ var NoteList = {
target_params: null,
target_id: 0,
target_type: null,
top_id: 0,
bottom_id: 0,
loading_more_disabled: false,
reversed: false,
init: function(tid, tt, path) {
NoteList.notes_path = path + ".js";
NoteList.target_id = tid;
NoteList.target_type = tt;
NoteList.reversed = $("#notes-list").is(".reversed");
NoteList.target_params = "target_type=" + NoteList.target_type + "&target_id=" + NoteList.target_id;
NoteList.setupMainTargetNoteForm();
if(NoteList.reversed) {
var form = $(".js-main-target-form");
form.find(".note-form-actions").hide();
var textarea = form.find(".js-note-text");
textarea.css("height", "40px");
textarea.on("focus", function(){
textarea.css("height", "80px");
form.find(".note-form-actions").show();
});
}
// get initial set of notes
NoteList.getContent();
@ -327,7 +311,7 @@ var NoteList = {
/**
* Gets an inital set of notes.
* Gets an initial set of notes.
*/
getContent: function() {
$.ajax({
@ -344,127 +328,10 @@ var NoteList = {
* Replaces the content of #notes-list with the given html.
*/
setContent: function(newNoteIds, html) {
NoteList.top_id = newNoteIds.first();
NoteList.bottom_id = newNoteIds.last();
$("#notes-list").html(html);
// for the wall
if (NoteList.reversed) {
// init infinite scrolling
NoteList.initLoadMore();
// init getting new notes
NoteList.initRefreshNew();
}
},
/**
* Handle loading more notes when scrolling to the bottom of the page.
* The id of the last note in the list is in NoteList.bottom_id.
*
* Set up refreshing only new notes after all notes have been loaded.
*/
/**
* Initializes loading more notes when scrolling to the bottom of the page.
*/
initLoadMore: function() {
$(document).endlessScroll({
bottomPixels: 400,
fireDelay: 1000,
fireOnce:true,
ceaseFire: function() {
return NoteList.loading_more_disabled;
},
callback: function(i) {
NoteList.getMore();
}
});
},
/**
* Gets an additional set of notes.
*/
getMore: function() {
// only load more notes if there are no "new" notes
$('.loading').show();
$.ajax({
url: NoteList.notes_path,
data: NoteList.target_params + "&loading_more=1&" + (NoteList.reversed ? "before_id" : "after_id") + "=" + NoteList.bottom_id,
complete: function(){ $('.js-notes-busy').removeClass("loading")},
beforeSend: function() { $('.js-notes-busy').addClass("loading") },
dataType: "script"
});
},
/**
* Called in response to getMore().
* Append notes to #notes-list.
*/
appendMoreNotes: function(newNoteIds, html) {
var lastNewNoteId = newNoteIds.last();
if(lastNewNoteId != NoteList.bottom_id) {
NoteList.bottom_id = lastNewNoteId;
$("#notes-list").append(html);
}
},
/**
* Called in response to getMore().
* Disables loading more notes when scrolling to the bottom of the page.
*/
finishedLoadingMore: function() {
NoteList.loading_more_disabled = true;
// make sure we are up to date
NoteList.updateVotes();
},
/**
* Handle refreshing and adding of new notes.
*
* New notes are all notes that are created after the site has been loaded.
* The "old" notes are in #notes-list the "new" ones will be in #new-notes-list.
* The id of the last "old" note is in NoteList.bottom_id.
*/
/**
* Initializes getting new notes every n seconds.
*
* Note: only used on wall.
*/
initRefreshNew: function() {
setInterval("NoteList.getNew()", 10000);
},
/**
* Gets the new set of notes.
*
* Note: only used on wall.
*/
getNew: function() {
$.ajax({
url: NoteList.notes_path,
data: NoteList.target_params + "&loading_new=1&after_id=" + (NoteList.reversed ? NoteList.top_id : NoteList.bottom_id),
dataType: "script"
});
},
/**
* Called in response to getNew().
* Replaces the content of #new-notes-list with the given html.
*
* Note: only used on wall.
*/
replaceNewNotes: function(newNoteIds, html) {
$("#new-notes-list").html(html);
NoteList.updateVotes();
},
/**
* Adds a single common note to #notes-list.
*/
@ -497,15 +364,6 @@ var NoteList = {
$.proxy(NoteList.removeDiscussionNoteForm, form).call();
},
/**
* Adds a single wall note to #new-notes-list.
*
* Note: only used on wall.
*/
appendNewWallNote: function(id, html) {
$("#new-notes-list").prepend(html);
},
/**
* Called in response the main target form has been successfully submitted.
*

View File

@ -15,6 +15,8 @@ $ ->
$(this).find('.update-failed').hide()
$('.update-username form').on 'ajax:complete', ->
$(this).find('.save-btn').removeAttr('disabled')
$(this).find('.save-btn').removeClass('disabled')
$(this).find('.btn-save').enableButton()
$(this).find('.loading-gif').hide()
$('.update-notifications').on 'ajax:complete', ->
$(this).find('.btn-save').enableButton()

View File

@ -18,3 +18,18 @@ $ ->
# Ref switcher
$('.project-refs-select').on 'change', ->
$(@).parents('form').submit()
$('#project_issues_enabled').change ->
if ($(this).is(':checked') == true)
$('#project_issues_tracker').removeAttr('disabled')
else
$('#project_issues_tracker').attr('disabled', 'disabled')
$('#project_issues_tracker').change()
$('#project_issues_tracker').change ->
if ($(this).val() == gon.default_issues_tracker || $(this).is(':disabled'))
$('#project_issues_tracker_id').attr('disabled', 'disabled')
else
$('#project_issues_tracker_id').removeAttr('disabled')

View File

@ -6,17 +6,12 @@ $ ->
$('span.log_loading:first').removeClass('hide')
$('#tree-slider .tree-item-file-name a, .breadcrumb li > a').live "click", ->
$("#tree-content-holder").hide("slide", { direction: "left" }, 150)
$("#tree-content-holder").hide("slide", { direction: "left" }, 400)
# Make the entire tree-item row clickable, but not if clicking another link (like a commit message)
$("#tree-slider .tree-item").live 'click', (e) ->
$('.tree-item-file-name a', this).trigger('click') if (e.target.nodeName != "A")
# Show/Hide the loading spinner
$('#tree-slider .tree-item-file-name a, .breadcrumb a, .project-refs-form').live
"ajax:beforeSend": -> $('.tree_progress').addClass("loading")
"ajax:complete": -> $('.tree_progress').removeClass("loading")
# Maintain forward/back history while browsing the file tree
((window) ->
History = window.History
@ -33,7 +28,12 @@ $ ->
History.Adapter.bind window, 'statechange', ->
state = History.getState()
window.ajaxGet(state.url)
$.ajax({
url: state.url,
dataType: 'script',
beforeSend: -> $('.tree_progress').addClass("loading"),
complete: -> $('.tree_progress').removeClass("loading")
})
)(window)
# See if there are lines selected

View File

@ -0,0 +1,36 @@
$ ->
userFormatResult = (user) ->
avatar = gon.gravatar_url
avatar = avatar.replace('%{hash}', md5(user.email))
avatar = avatar.replace('%{size}', '24')
markup = "<div class='user-result'>"
markup += "<div class='user-image'><img class='avatar s24' src='" + avatar + "'></div>"
markup += "<div class='user-name'>" + user.name + "</div>"
markup += "<div class='user-username'>" + user.username + "</div>"
markup += "</div>"
markup
userFormatSelection = (user) ->
user.name
$('.ajax-users-select').select2
placeholder: "Search for a user"
multiple: $('.ajax-users-select').hasClass('multiselect')
minimumInputLength: 0
query: (query) ->
Api.users query.term, (users) ->
data = { results: users }
query.callback(data)
initSelection: (element, callback) ->
id = $(element).val()
if id isnt ""
Api.user(id, callback)
formatResult: userFormatResult
formatSelection: userFormatSelection
dropdownCssClass: "ajax-users-dropdown"
escapeMarkup: (m) -> # we do not want to escape markup since we are displaying html in results
m

View File

@ -0,0 +1,83 @@
@Wall =
note_ids: []
project_id: null
init: (project_id) ->
Wall.project_id = project_id
Wall.getContent()
Wall.initRefresh()
Wall.initForm()
#
# Gets an initial set of notes.
#
getContent: ->
Api.notes Wall.project_id, (notes) ->
$.each notes, (i, note) ->
# render note if it not present in loaded list
# or skip if rendered
if $.inArray(note.id, Wall.note_ids) == -1
Wall.note_ids.push(note.id)
Wall.renderNote(note)
Wall.scrollDown()
$("abbr.timeago").timeago()
initRefresh: ->
setInterval("Wall.refresh()", 10000)
refresh: ->
Wall.getContent()
scrollDown: ->
notes = $('ul.notes')
$('body, html').scrollTop(notes.height())
initForm: ->
form = $('.wall-note-form')
form.find("#target_type").val('wall')
form.on 'ajax:success', ->
Wall.refresh()
form.find(".js-note-text").val("").trigger("input")
form.on 'ajax:complete', ->
form.find(".js-comment-button").removeAttr('disabled')
form.find(".js-comment-button").removeClass('disabled')
form.on "click", ".js-choose-note-attachment-button", ->
form.find(".js-note-attachment-input").click()
form.on "change", ".js-note-attachment-input", ->
filename = $(this).val().replace(/^.*[\\\/]/, '')
form.find(".js-attachment-filename").text(filename)
form.find('.note_text').keydown (e) ->
if e.ctrlKey && e.keyCode == 13
form.find('.js-comment-button').submit()
form.show()
renderNote: (note) ->
template = Wall.noteTemplate()
template = template.replace('{{author_name}}', note.author.name)
template = template.replace('{{created_at}}', note.created_at)
template = template.replace('{{text}}', linkify(sanitize(note.body)))
if note.attachment
file = '<i class="icon-paper-clip"/><a href="/files/note/' + note.id + '/' + note.attachment + '">' + note.attachment + '</a>'
else
file = ''
template = template.replace('{{file}}', file)
$('ul.notes').append(template)
noteTemplate: ->
return '<li>
<strong class="wall-author">{{author_name}}</strong>
<span class="wall-text">
{{text}}
<span class="wall-file">{{file}}</span>
</span>
<abbr class="timeago" title="{{created_at}}">{{created_at}}</abbr>
</li>'

View File

@ -5,6 +5,7 @@
*= require jquery.ui.gitlab
*= require jquery.atwho
*= require chosen
*= require select2
*= require_self
*/
@ -14,7 +15,7 @@
@import "gitlab_bootstrap.scss";
@import "common.scss";
@import "ref_select.scss";
@import "selects.scss";
@import "sections/header.scss";
@import "sections/nav.scss";
@ -33,9 +34,12 @@
@import "sections/login.scss";
@import "sections/editor.scss";
@import "sections/admin.scss";
@import "sections/wiki.scss";
@import "sections/wall.scss";
@import "highlight/white.scss";
@import "highlight/dark.scss";
@import "highlight/solarized_dark.scss";
/**
* UI themes:

View File

@ -67,27 +67,17 @@ table a code {
}
/** FLASH message **/
#flash-container {
height: 50px;
position: fixed;
z-index: 10001;
top: 0px;
width: 100%;
margin-bottom: 15px;
overflow: hidden;
background: white;
cursor: pointer;
border-bottom: 1px solid #ccc;
text-align: center;
.flash-container {
display: none;
.alert {
cursor: pointer;
margin: 0;
text-align: center;
border-radius: 0;
h4 {
color: #666;
font-size: 18px;
line-height: 38px;
padding-top: 5px;
margin: 2px;
font-weight: normal;
span {
font-size: 14px;
}
}
}
@ -183,17 +173,6 @@ ul.breadcrumb {
font-weight: bold;
font-size: 14px;
}
.arrow {
background: url("images.png") no-repeat -85px -77px;
width: 19px;
height: 16px;
float: left;
position: relative;
left: -10px;
padding: 0;
margin: 0;
}
}
input[type=text] {
@ -203,10 +182,6 @@ input[type=text] {
}
}
input.git_clone_url {
width: 325px;
}
.merge-request-form-holder {
select {
width: 300px;
@ -564,3 +539,19 @@ img.emoji {
vertical-align: middle;
width: 20px;
}
.appear-data {
display: none;
}
.label-branch {
@include border-radius(4px);
padding: 2px 4px;
border: none;
font-size: 14px;
background: #474D57;
color: #fff;
font-family: $monospace_font;
text-shadow: 0 1px 1px #111;
font-weight: normal;
}

View File

@ -20,6 +20,15 @@
background: #FFF;
}
&.ui-box-danger {
.title {
@include linear-gradient(#F26E5E, #bd362f);
color: #fff;
text-shadow: 0 1px 1px #900;
font-weight: bold;
}
}
img { max-width: 100%; }
pre {
@ -34,13 +43,6 @@
padding: 15px;
word-wrap: break-word;
pre {
background: none !important;
margin: 0;
border: none;
padding: 0;
}
.clearfix {
margin: 0;
}
@ -98,8 +100,9 @@
margin-top: 0;
}
.btn-tiny {
@include box-shadow(0 0px 0px 1px #f1f1f1);
.btn {
position: relative;
top: -2px;
}
.nav-pills {
@ -148,4 +151,23 @@
text-decoration: underline;
}
}
.form-holder {
padding-top: 20px;
form {
margin-bottom: 0;
legend {
text-indent: 10px;
}
.form-actions {
margin-bottom: 0;
}
}
}
}
.tab-pane {
.ui-box {
margin: 3px 3px 25px 3px;
}
}

View File

@ -2,6 +2,7 @@
.cgray { color:gray }
.cred { color:#D12F19 }
.cgreen { color:#4a2 }
.cblue { color:#29A }
.cblack { color:#111 }
.cdark { color:#444 }
.cwhite { color:#fff!important }
@ -20,6 +21,7 @@
.hint { font-style: italic; color: #999; }
.light { color: #888 }
.tiny { font-weight: normal }
.vtop { vertical-align: top; }
/** ALERT MESSAGES **/
@ -29,6 +31,8 @@
border-color: #DDD;
}
.well { padding: 15px; }
/** HELPERS **/
.nothing_here_message {
text-align: center;
@ -69,3 +73,7 @@ fieldset legend { font-size: 17px; }
border-bottom: 2px solid $style_color;
}
}
.tab-content {
overflow: visible;
}

View File

@ -162,6 +162,7 @@
color: #666;
padding: 10px 6px 10px 0;
text-align: right;
background: #EEE;
a {
color: #666;

View File

@ -1,7 +1,2 @@
@font-face{
font-family: Yanone;
src: font-url('YanoneKaffeesatz-Light.ttf');
}
/** Typo **/
$monospace_font: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono', 'lucida console', monospace;

View File

@ -24,6 +24,14 @@
background-image: -o-linear-gradient($from, $to);
}
@mixin transition($transition) {
-webkit-transition: $transition;
-moz-transition: $transition;
-ms-transition: $transition;
-o-transition: $transition;
transition: $transition;
}
/**
* Prefilled mixins
* Mixins with fixed values
@ -62,8 +70,19 @@
@mixin header-font {
color: $style_color;
text-shadow: 0 1px 1px #FFF;
font-family: 'Yanone', sans-serif;
font-size: 26px;
line-height: 42px;
font-size: 18px;
line-height: 40px;
font-weight: normal;
letter-spacing: -1px;
}
@mixin md-typography {
code { padding: 0 4px; }
p { font-size: 13px; }
h1 { font-size: 26px; line-height: 40px; margin: 10px 0;}
h2 { font-size: 22px; line-height: 40px; margin: 10px 0;}
h3 { font-size: 18px; line-height: 40px; margin: 10px 0;}
h4 { font-size: 16px; line-height: 20px; margin: 10px 0;}
h5 { font-size: 14px; line-height: 20px; margin: 10px 0;}
h6 { font-size: 12px; line-height: 20px; margin: 10px 0;}
}

View File

@ -11,6 +11,12 @@ table {
}
}
&.headless {
tr:first-child td{
border-top: 1px solid #CCC;
}
}
th {
font-weight: bold;
vertical-align: middle;

View File

@ -87,16 +87,15 @@ a:focus {
*
*/
.wiki {
font-size: 13px;
@include md-typography;
font-size: 13px;
line-height: 20px;
code { padding: 0 4px; }
p { font-size: 13px; }
h1 { font-size: 32px; line-height: 40px; margin: 10px 0;}
h2 { font-size: 26px; line-height: 40px; margin: 10px 0;}
h3 { font-size: 22px; line-height: 40px; margin: 10px 0;}
h4 { font-size: 18px; line-height: 20px; margin: 10px 0;}
h5 { font-size: 14px; line-height: 20px; margin: 10px 0;}
h6 { font-size: 12px; line-height: 20px; margin: 10px 0;}
.white .highlight pre { background: #f5f5f5; }
ul { margin: 0 0 9px 25px !important; }
}
.md {
@include md-typography;
}

View File

@ -1,8 +1,7 @@
.black .highlight {
background-color: #333;
pre {
background-color: #333;
color: #eee;
background: inherit;
}
.hll { display: block; background-color: darken($hover, 65%) }

View File

@ -0,0 +1,77 @@
.solarized-dark .highlight {
pre {
background-color: #002B36;
color: #eee;
}
.hll { background-color: #073642 }
.c { color: #586E75 } /* Comment */
.err { color: #93A1A1 } /* Error */
.g { color: #93A1A1 } /* Generic */
.k { color: #859900 } /* Keyword */
.l { color: #93A1A1 } /* Literal */
.n { color: #93A1A1 } /* Name */
.o { color: #859900 } /* Operator */
.x { color: #CB4B16 } /* Other */
.p { color: #93A1A1 } /* Punctuation */
.cm { color: #586E75 } /* Comment.Multiline */
.cp { color: #859900 } /* Comment.Preproc */
.c1 { color: #586E75 } /* Comment.Single */
.cs { color: #859900 } /* Comment.Special */
.gd { color: #2AA198 } /* Generic.Deleted */
.ge { color: #93A1A1; font-style: italic } /* Generic.Emph */
.gr { color: #DC322F } /* Generic.Error */
.gh { color: #CB4B16 } /* Generic.Heading */
.gi { color: #859900 } /* Generic.Inserted */
.go { color: #93A1A1 } /* Generic.Output */
.gp { color: #93A1A1 } /* Generic.Prompt */
.gs { color: #93A1A1; font-weight: bold } /* Generic.Strong */
.gu { color: #CB4B16 } /* Generic.Subheading */
.gt { color: #93A1A1 } /* Generic.Traceback */
.kc { color: #CB4B16 } /* Keyword.Constant */
.kd { color: #268BD2 } /* Keyword.Declaration */
.kn { color: #859900 } /* Keyword.Namespace */
.kp { color: #859900 } /* Keyword.Pseudo */
.kr { color: #268BD2 } /* Keyword.Reserved */
.kt { color: #DC322F } /* Keyword.Type */
.ld { color: #93A1A1 } /* Literal.Date */
.m { color: #2AA198 } /* Literal.Number */
.s { color: #2AA198 } /* Literal.String */
.na { color: #93A1A1 } /* Name.Attribute */
.nb { color: #B58900 } /* Name.Builtin */
.nc { color: #268BD2 } /* Name.Class */
.no { color: #CB4B16 } /* Name.Constant */
.nd { color: #268BD2 } /* Name.Decorator */
.ni { color: #CB4B16 } /* Name.Entity */
.ne { color: #CB4B16 } /* Name.Exception */
.nf { color: #268BD2 } /* Name.Function */
.nl { color: #93A1A1 } /* Name.Label */
.nn { color: #93A1A1 } /* Name.Namespace */
.nx { color: #93A1A1 } /* Name.Other */
.py { color: #93A1A1 } /* Name.Property */
.nt { color: #268BD2 } /* Name.Tag */
.nv { color: #268BD2 } /* Name.Variable */
.ow { color: #859900 } /* Operator.Word */
.w { color: #93A1A1 } /* Text.Whitespace */
.mf { color: #2AA198 } /* Literal.Number.Float */
.mh { color: #2AA198 } /* Literal.Number.Hex */
.mi { color: #2AA198 } /* Literal.Number.Integer */
.mo { color: #2AA198 } /* Literal.Number.Oct */
.sb { color: #586E75 } /* Literal.String.Backtick */
.sc { color: #2AA198 } /* Literal.String.Char */
.sd { color: #93A1A1 } /* Literal.String.Doc */
.s2 { color: #2AA198 } /* Literal.String.Double */
.se { color: #CB4B16 } /* Literal.String.Escape */
.sh { color: #93A1A1 } /* Literal.String.Heredoc */
.si { color: #2AA198 } /* Literal.String.Interpol */
.sx { color: #2AA198 } /* Literal.String.Other */
.sr { color: #DC322F } /* Literal.String.Regex */
.s1 { color: #2AA198 } /* Literal.String.Single */
.ss { color: #2AA198 } /* Literal.String.Symbol */
.bp { color: #268BD2 } /* Name.Builtin.Pseudo */
.vc { color: #268BD2 } /* Name.Variable.Class */
.vg { color: #268BD2 } /* Name.Variable.Global */
.vi { color: #268BD2 } /* Name.Variable.Instance */
.il { color: #2AA198 } /* Literal.Number.Integer.Long */
}

View File

@ -29,7 +29,7 @@
a{
color: $style_color;
}
> span {
font-family: $monospace_font;
font-size: 14px;
@ -100,8 +100,9 @@
}
}
.line_content {
display: block;
white-space: pre;
height: 14px;
height: 18px;
margin: 0px;
padding: 0px;
border: none;
@ -124,7 +125,7 @@
.wrap{
display: inline-block;
}
.frame {
display: inline-block;
background-color: #fff;
@ -149,7 +150,7 @@
.view.swipe{
position: relative;
.swipe-frame{
display: block;
margin: auto;
@ -228,7 +229,7 @@
bottom: 0px;
left: 50%;
margin-left: -150px;
.drag-track{
display: block;
position: absolute;
@ -237,7 +238,7 @@
width: 276px;
background: url('onion_skin_sprites.gif') -4px -20px repeat-x;
}
.dragger {
display: block;
position: absolute;
@ -248,7 +249,7 @@
background: url('onion_skin_sprites.gif') 0px -34px repeat-x;
cursor: pointer;
}
.transparent {
display: block;
position: absolute;
@ -258,7 +259,7 @@
width: 10px;
background: url('onion_skin_sprites.gif') -2px 0px no-repeat;
}
.opaque {
display: block;
position: absolute;
@ -275,19 +276,19 @@
padding: 10px;
text-align: center;
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf));
background-image: -webkit-linear-gradient(#eee 6.6%, #dfdfdf);
background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf);
background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf);
ul, li{
list-style: none;
margin: 0;
padding: 0;
display: inline-block;
}
li{
color: grey;
border-left: 1px solid #c1c1c1;
@ -322,12 +323,12 @@
}
.commit-author, .commit-committer{
display: block;
color: #999;
font-weight: normal;
color: #999;
font-weight: normal;
font-style: italic;
}
.commit-author strong, .commit-committer strong{
font-weight: bold;
font-weight: bold;
font-style: normal;
}
@ -337,7 +338,6 @@
*/
.commit {
.browse_code_link_holder {
@extend .span2;
float: right;
}
@ -413,3 +413,9 @@
padding: 4px;
background-color: #EEE;
}
.commit-description {
background: none;
border: none;
margin: 0;
}

View File

@ -48,17 +48,24 @@
color: #666;
}
.event-note {
padding-top: 5px;
padding-left: 5px;
display: inline-block;
color: #555;
margin-top: 5px;
margin-left: 40px;
.note-file-attach {
.note-image-attach {
margin-top: 4px;
margin-left: 0px;
max-width: 200px;
}
}
}
.event-note-icon {
color: #777;
float: left;
font-size: 16px;
line-height: 18px;
margin: 5px;
line-height: 16px;
margin-right: 5px;
}
}
.avatar {

View File

@ -12,7 +12,7 @@
.graph {
background: #f1f1f1;
cursor: move;
height: 70%;
height: 500px;
overflow: hidden;
}
}

View File

@ -5,15 +5,16 @@
header {
&.navbar-gitlab {
.navbar-inner {
height: 45px;
padding: 5px;
height: 40px;
padding: 3px;
background: #F1F1F1;
filter: none;
.nav > li > a {
color: $style_color;
text-shadow: 0 1px 0 #fff;
font-size: 18px;
padding: 12px;
font-size: 16px;
padding: 10px;
}
/** NAV block with links and profile **/
@ -25,7 +26,6 @@ header {
}
z-index: 10;
/*height: 60px;*/
/**
*
@ -34,7 +34,7 @@ header {
*/
.app_logo {
float: left;
margin-right: 15px;
margin-right: 9px;
position: relative;
top: -5px;
padding-top: 5px;
@ -42,10 +42,11 @@ header {
a {
float: left;
padding: 0px;
margin: 0 10px;
margin: 0 6px;
h1 {
background: url('logo_dark.png') no-repeat 0px 2px;
background: url('logo-black.png') no-repeat center 1px;
background-size: 38px;
float: left;
height: 40px;
width: 40px;
@ -67,19 +68,27 @@ header {
position: relative;
float: left;
margin: 0;
margin-left: 15px;
margin-left: 10px;
@include header-font;
}
.profile-pic {
position: relative;
top: -4px;
img {
width: 26px;
@include border-radius(4px);
}
}
/**
*
* Search box
*
*/
.search {
margin-right: 45px;
margin-right: 10px;
margin-left: 10px;
margin-top: 2px;
.search-input {
@extend .span2;
@ -91,121 +100,13 @@ header {
@include border-radius(3px);
border: 1px solid #c6c6c6;
box-shadow: none;
@include transition(all 0.15s ease-in 0s);
&:focus {
@extend .span3;
}
}
}
/**
*
* Account box
*
*/
.account-box {
position: absolute;
right: 0;
top: 6px;
z-index: 10000;
width: 128px;
font-size: 11px;
float: right;
display: block;
cursor: pointer;
img {
@include border-radius(3px);
right: 5px;
position: absolute;
width: 28px;
height: 28px;
display: block;
top: 1px;
&:after {
content: " ";
display: block;
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
float: right;
@include border-radius(5px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-bottom: 0;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255, 255, 255, 0.15)), to(rgba(0, 0, 0, 0.25))),
-webkit-gradient(linear, left top, right bottom, color-stop(0, rgba(255, 255, 255, 0)), color-stop(0.5, rgba(255, 255, 255, 0.1)), color-stop(0.501, rgba(255, 255, 255, 0)), color-stop(1, rgba(255, 255, 255, 0)));
background: -moz-linear-gradient(top, rgba(255, 255, 255, 0.15), rgba(0, 0, 0, 0.25)),
-moz-linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0));
background: linear-gradient(top, rgba(255, 255, 255, 0.15), rgba(0, 0, 0, 0.25)),
linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0));
-webkit-background-origin: border-box;
-moz-background-origin: border;
background-origin: border-box; } } }
.account-box {
&.hover {
height: 138px; }
&:hover > .account-links {
display: block; } }
.account-links {
@include border-radius(5px);
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
position: relative;
&:before {
content: ".";
width: 0;
height: 0;
position: absolute;
border: 5px solid transparent;
border-color: rgba(255, 255, 255, 0);
border-bottom-color: #555;
text-indent: -9999px;
top: -10px;
line-height: 0;
right: 10px;
z-index: 10; }
background: #555;
display: none;
z-index: 100000;
@include border-radius(4px);
width: 130px;
position: absolute;
right: 5px;
top: 38px;
margin-top: 0;
float: right;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
a {
color: #fff;
padding: 12px 15px;
display: block;
text-shadow: none;
border-bottom: 1px solid #666;
font-size: 12px;
&:hover {
color: #fff;
background: #333;
}
}
}
.account-box.hover .arrow-up {
top: 41px;
right: 6px;
position: absolute; }
.account-links a {
&:first-child {
@include border-radius(5px 5px 0 0);
}
&:last-child {
@include border-radius(0 0 5px 5px);
border-bottom: 0;
}
}
/*
* Dark header
@ -228,6 +129,7 @@ header {
.search-input {
background-color: #D2D5DA;
background-color: rgba(255, 255, 255, 0.5);
border: 1px solid #AAA;
&:focus {
background-color: white;
@ -240,13 +142,17 @@ header {
.app_logo {
a {
h1 {
background: url('logo_white.png') no-repeat center center;
background: url('logo-white.png') no-repeat center 1px;
background-size: 38px;
color: #fff;
text-shadow: 0 1px 1px #111;
}
}
}
.project_name {
a {
color: #FFF;
}
color: #fff;
text-shadow: 0 1px 1px #111;
}
@ -261,11 +167,11 @@ header {
.separator {
float: left;
height: 60px;
height: 46px;
width: 1px;
background: white;
border-left: 1px solid #DDD;
margin-top: -10px;
margin-top: -3px;
margin-left: 10px;
margin-right: 10px;
}

View File

@ -1,7 +1,7 @@
/* Login Page */
body.login-page{
padding-top: 10%;
background: #f1f1f1;
body.login-page{
background: #EEE;
.container .content { padding-top: 5%; }
}
.login-box{

View File

@ -70,16 +70,6 @@ li.merge_request {
@extend .append-bottom-10;
}
.label_branch {
@include border-radius(4px);
padding: 2px 4px;
border: none;
font-size: 14px;
background: #474D57;
color: #fff;
font-family: $monospace_font;
}
.mr_source_commit,
.mr_target_commit {
.commit {

View File

@ -1,68 +1,64 @@
/*
* Main Menu of Application
*
*/
ul.main_menu {
margin: auto;
.main-nav {
margin: 30px 0;
margin-top: 10px;
height: 38px;
position: relative;
overflow: hidden;
.count {
position: relative;
top: -1px;
display: inline-block;
height: 15px;
margin: 0 0 0 5px;
padding: 0 8px 1px 8px;
height: auto;
font-size: 0.82em;
line-height: 14px;
text-align: center;
color: #777;
}
.label {
background: $hover;
text-shadow: none;
color: $style_color;
}
li {
list-style-type: none;
margin: 0;
display: table-cell;
width: 1%;
border-bottom: 2px solid #EEE;
&.active {
border-bottom: 2px solid #474D57;
a {
color: $style_color;
}
}
border-bottom: 1px solid #E1E1E1;
&.home {
a {
i {
font-size: 20px;
position: relative;
top: 4px;
ul {
margin: auto;
height: 39px;
position: relative;
top: 3px;
overflow: hidden;
.count {
position: relative;
top: -1px;
display: inline-block;
height: 15px;
margin: 0 0 0 5px;
padding: 0 8px 1px 8px;
height: auto;
font-size: 0.82em;
line-height: 14px;
text-align: center;
color: #777;
}
.label {
background: $hover;
text-shadow: none;
color: $style_color;
}
li {
list-style-type: none;
margin: 0;
display: table-cell;
width: 1%;
&.active {
border-bottom: 3px solid #777;
a {
color: $style_color;
font-weight: bolder;
}
}
&.home {
a {
i {
font-size: 20px;
position: relative;
top: 4px;
}
}
}
}
}
a {
display: block;
text-align: center;
font-weight: normal;
height: 36px;
line-height: 36px;
color: #777;
text-shadow: 0 1px 1px white;
padding: 0 10px;
a {
display: block;
text-align: center;
font-weight: normal;
height: 36px;
line-height: 34px;
color: #777;
text-shadow: 0 1px 1px white;
padding: 0 10px;
}
}
}
/*
* End of Main Menu
*
*/

View File

@ -83,6 +83,7 @@ ul.notes {
margin-top: -20px;
}
.note-body {
@include md-typography;
margin-left: 45px;
}
.note-header {
@ -191,7 +192,7 @@ ul.notes {
}
}
// "show" the icon also if we just hover somwhere over the line
// "show" the icon also if we just hover somewhere over the line
&:hover > td {
background: $hover !important;
@ -273,15 +274,28 @@ ul.notes {
}
.common-note-form {
margin: 0;
height: 140px;
background: #F9F9F9;
padding: 3px;
padding-bottom: 25px;
border: 1px solid #DDD;
}
.note-form-actions {
background: #F9F9F9;
height: 45px;
padding: 0 5px;
.note-form-option {
margin-top: 8px;
margin-left: 15px;
margin-top: 10px;
margin-left: 30px;
@extend .pull-left;
@extend .span4;
}
.js-notify-commit-author {
float: left;
}
}

View File

@ -6,7 +6,8 @@
.side {
@extend .pull-right;
.projects_box {
.ui-box {
margin: 3px;
> .title {
padding: 2px 15px;
}
@ -80,6 +81,7 @@
border: 1px solid #BBB;
box-shadow: none;
margin-left: -1px;
background: #FFF;
}
}
@ -115,3 +117,20 @@ ul.nav.nav-projects-tabs {
}
}
}
.team_member_row form {
margin: 0px;
}
.public-projects {
li {
margin-top: 8px;
margin-bottom: 5px;
border-bottom: 1px solid #eee;
.description {
margin-left: 22px;
color: #aaa;
}
}
}

View File

@ -102,3 +102,7 @@
}
}
.tree-ref-holder {
float: left;
margin-top: 5px;
}

View File

@ -0,0 +1,55 @@
.wall-page {
.wall-note-form {
@extend .span12;
margin: 0;
height: 140px;
background: #F9F9F9;
position: fixed;
bottom: 0px;
padding: 3px;
padding-bottom: 25px;
border: 1px solid #DDD;
}
.notes {
margin-bottom: 160px;
background: #FFE;
border: 1px solid #EED;
> li {
@extend .clearfix;
border-bottom: 1px solid #EED;
padding: 10px;
}
.wall-author {
color: #666;
float: left;
font-size: 12px;
width: 120px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.wall-text {
border-left: 1px solid #CCC;
margin-left: 10px;
padding-left: 10px;
float: left;
width: 75%;
}
.wall-file {
margin-left: 8px;
background: #EEE;
}
abbr {
float: right;
color: #AAA;
border: none;
}
}
}

View File

@ -0,0 +1,6 @@
h3.page_title .edit-wiki-header {
width: 780px;
margin-left: auto;
margin-right: auto;
padding-right: 7px;
}

View File

@ -1,3 +1,18 @@
.ajax-users-select {
width: 400px;
}
.user-result {
.user-image {
float: left;
}
.user-name {
}
.user-username {
color: #999;
}
}
/** Branch/tag selector **/
.project-refs-form {
margin: 0;
@ -88,3 +103,26 @@
}
}
}
/** Select2 styling **/
.select2-container .select2-choice {
background: #f1f1f1;
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, whitesmoke), to(#e1e1e1));
background-image: -webkit-linear-gradient(whitesmoke 6.6%, #e1e1e1);
background-image: -moz-linear-gradient(whitesmoke 6.6%, #e1e1e1);
background-image: -o-linear-gradient(whitesmoke 6.6%, #e1e1e1);
}
.select2-container .select2-choice div {
border: none;
background: none;
}
.select2-drop {
padding-top: 8px;
}
.select2-no-results, .select2-searching {
padding: 7px;
color: #666;
}

View File

@ -8,66 +8,27 @@
*
*/
.ui_mars {
/*
* Application Header
*
*/
header {
@extend .header-dark;
&.navbar-gitlab {
.navbar-inner {
background: #474D57 url('bg-header.png') repeat-x bottom;
border-bottom: 1px solid #444;
.nav > li > a {
color: #eee;
text-shadow: 0 1px 0 #444;
background: #474D57;
border-bottom: 1px solid #373D47;
.app_logo {
&:hover {
background-color: #373D47;
}
}
}
}
.search {
float: right;
margin-right: 45px;
.search-input {
border: 1px solid rgba(0, 0, 0, 0.7);
background-color: #D2D5DA;
background-color: rgba(255, 255, 255, 0.5);
&:focus {
background-color: white;
}
}
}
.search-input::-webkit-input-placeholder {
color: #666;
}
.app_logo {
a {
h1 {
background: url('logo_white.png') no-repeat center center;
color: #eee;
text-shadow: 0 1px 1px #111;
}
}
&:hover {
background-color: #41464e;
}
}
.project_name {
color: #eee;
text-shadow: 0 1px 1px #111;
.separator {
background: #31363E;
border-left: 1px solid #666;
}
}
.separator {
background: #31363E;
border-left: 1px solid #666;
}
/*
* End of Application Header
*
*/
}

View File

@ -12,7 +12,6 @@ class CommitLoadContext < BaseContext
commit = project.repository.commit(params[:id])
if commit
commit = CommitDecorator.decorate(commit)
line_notes = project.notes.for_commit_id(commit.id).inline
result[:commit] = commit

View File

@ -7,12 +7,13 @@ class IssuesListContext < BaseContext
@issues = case params[:status]
when issues_filter[:all] then @project.issues
when issues_filter[:closed] then @project.issues.closed
when issues_filter[:to_me] then @project.issues.opened.assigned(current_user)
when issues_filter[:to_me] then @project.issues.assigned(current_user)
when issues_filter[:by_me] then @project.issues.authored(current_user)
else @project.issues.opened
end
@issues = @issues.tagged_with(params[:label_name]) if params[:label_name].present?
@issues = @issues.includes(:author, :project).order("updated_at")
@issues = @issues.includes(:author, :project)
# Filter by specific assignee_id (or lack thereof)?
if params[:assignee_id].present?

View File

@ -14,7 +14,7 @@ class MergeRequestsLoadContext < BaseContext
end
merge_requests = merge_requests.page(params[:page]).per(20)
merge_requests = merge_requests.includes(:author, :project).order("closed, created_at desc")
merge_requests = merge_requests.includes(:author, :project).order("created_at desc")
# Filter by specific assignee_id (or lack thereof)?
if params[:assignee_id].present?

View File

@ -3,8 +3,6 @@ module Notes
def execute
note = project.notes.new(params[:note])
note.author = current_user
note.notify = params[:notify].present?
note.notify_author = params[:notify_author].present?
note.save
note
end

View File

@ -3,8 +3,6 @@ module Notes
def execute
target_type = params[:target_type]
target_id = params[:target_id]
after_id = params[:after_id]
before_id = params[:before_id]
@notes = case target_type
@ -16,17 +14,6 @@ module Notes
project.merge_requests.find(target_id).mr_and_commit_notes.inc_author.fresh
when "snippet"
project.snippets.find(target_id).notes.fresh
when "wall"
# this is the only case, where the order is DESC
project.notes.common.inc_author_project.order("created_at DESC, id DESC").limit(50)
end
@notes = if after_id
@notes.where("id > ?", after_id)
elsif before_id
@notes.where("id < ?", before_id)
else
@notes
end
end
end

View File

@ -32,8 +32,24 @@ module Projects
@project.namespace_id = current_user.namespace_id
end
# Disable less important features by default
@project.wall_enabled = false
@project.snippets_enabled = false
@project.creator = current_user
# Import project from cloneable resource
if @project.valid? && @project.import_url.present?
shell = Gitlab::Shell.new
if shell.import_repository(@project.path_with_namespace, @project.import_url)
# We should create satellite for imported repo
@project.satellite.create unless @project.satellite.exists?
true
else
@project.errors.add(:import_url, 'cannot clone repo')
end
end
if @project.save
@project.users_projects.create(project_access: UsersProject::MASTER, user: current_user)
end

View File

@ -0,0 +1,27 @@
module Projects
class TransferContext < BaseContext
def execute(role = :default)
namespace_id = params[:project].delete(:namespace_id)
allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin
if allowed_transfer && namespace_id.present?
if namespace_id == Namespace.global_id
if project.namespace.present?
# Transfer to global namespace from anyone
project.transfer(nil)
end
elsif namespace_id.to_i != project.namespace_id
# Transfer to someone namespace
namespace = Namespace.find(namespace_id)
project.transfer(namespace)
end
end
rescue ProjectTransferService::TransferError => ex
project.reload
project.errors.add(:namespace_id, ex.message)
false
end
end
end

View File

@ -1,24 +1,8 @@
module Projects
class UpdateContext < BaseContext
def execute(role = :default)
namespace_id = params[:project].delete(:namespace_id)
params[:project].delete(:namespace_id)
params[:project].delete(:public) unless can?(current_user, :change_public_mode, project)
allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin
if allowed_transfer && namespace_id.present?
if namespace_id == Namespace.global_id
if project.namespace.present?
# Transfer to global namespace from anyone
project.transfer(nil)
end
elsif namespace_id.to_i != project.namespace_id
# Transfer to someone namespace
namespace = Namespace.find(namespace_id)
project.transfer(namespace)
end
end
project.update_attributes(params[:project], as: role)
end
end

View File

@ -1,8 +1,7 @@
class TestHookContext < BaseContext
def execute
hook = project.hooks.find(params[:id])
commits = project.repository.commits(project.default_branch, nil, 3)
data = project.post_receive_data(commits.last.id, commits.first.id, "refs/heads/#{project.default_branch}", current_user)
data = GitPushService.new.sample_data(project, current_user)
hook.execute(data)
end
end

View File

@ -19,36 +19,6 @@ class Admin::ProjectsController < Admin::ApplicationController
@users = @users.all
end
def edit
end
def team_update
@project.team.add_users_ids(params[:user_ids], params[:project_access])
redirect_to [:admin, @project], notice: 'Project was successfully updated.'
end
def update
project.creator = current_user unless project.creator
status = ::Projects::UpdateContext.new(project, current_user, params).execute(:admin)
if status
redirect_to [:admin, @project], notice: 'Project was successfully updated.'
else
render action: "edit"
end
end
def destroy
# Delete team first in order to prevent multiple gitolite calls
@project.team.truncate
@project.destroy
redirect_to admin_projects_path, notice: 'Project was successfully deleted.'
end
protected
def project

View File

@ -1,7 +1,7 @@
class Admin::Teams::MembersController < Admin::Teams::ApplicationController
def new
@users = User.potential_team_members(user_team)
@users = UserDecorator.decorate @users
@users = UserDecorator.decorate_collection @users
end
def create

View File

@ -9,8 +9,12 @@ class Admin::UsersController < Admin::ApplicationController
end
def show
@projects = Project.scoped
@projects = @projects.without_user(admin_user) if admin_user.authorized_projects.present?
# Projects user can be added to
@not_in_projects = Project.scoped
@not_in_projects = @not_in_projects.without_user(admin_user) if admin_user.authorized_projects.present?
# Projects he already own or joined
@projects = admin_user.authorized_projects.where('projects.id in (?)', admin_user.authorized_projects.map(&:id))
end
def team_update
@ -41,7 +45,7 @@ class Admin::UsersController < Admin::ApplicationController
end
def unblock
if admin_user.update_attribute(:blocked, false)
if admin_user.activate
redirect_to :back, alert: "Successfully unblocked"
else
redirect_to :back, alert: "Error occured. User was not unblocked"
@ -80,6 +84,8 @@ class Admin::UsersController < Admin::ApplicationController
format.html { redirect_to [:admin, admin_user], notice: 'User was successfully updated.' }
format.json { head :ok }
else
# restore username to keep form action url.
admin_user.username = params[:id]
format.html { render action: "edit" }
format.json { render json: admin_user.errors, status: :unprocessable_entity }
end

View File

@ -5,16 +5,12 @@ class ApplicationController < ActionController::Base
before_filter :add_abilities
before_filter :dev_tools if Rails.env == 'development'
before_filter :default_headers
before_filter :add_gon_variables
protect_from_forgery
helper_method :abilities, :can?
rescue_from Gitlab::Gitolite::AccessDenied do |exception|
log_exception(exception)
render "errors/gitolite", layout: "errors", status: 500
end
rescue_from Encoding::CompatibilityError do |exception|
log_exception(exception)
render "errors/encoding", layout: "errors", status: 500
@ -34,7 +30,7 @@ class ApplicationController < ActionController::Base
end
def reject_blocked!
if current_user && current_user.blocked
if current_user && current_user.blocked?
sign_out current_user
flash[:alert] = "Your account is blocked. Retry when an admin unblock it."
redirect_to new_user_session_path
@ -42,7 +38,7 @@ class ApplicationController < ActionController::Base
end
def after_sign_in_path_for resource
if resource.is_a?(User) && resource.respond_to?(:blocked) && resource.blocked
if resource.is_a?(User) && resource.respond_to?(:blocked?) && resource.blocked?
sign_out resource
flash[:alert] = "Your account is blocked. Retry when an admin unblock it."
new_user_session_path
@ -153,4 +149,11 @@ class ApplicationController < ActionController::Base
headers['X-Frame-Options'] = 'DENY'
headers['X-XSS-Protection'] = '1; mode=block'
end
def add_gon_variables
gon.default_issues_tracker = Project.issues_tracker.default_value
gon.api_version = Gitlab::API.version
gon.api_token = current_user.private_token if current_user
gon.gravatar_url = request.ssl? ? Gitlab.config.gravatar.ssl_url : Gitlab.config.gravatar.plain_url
end
end

View File

@ -7,10 +7,7 @@ class BlameController < ProjectResourceController
before_filter :authorize_code_access!
before_filter :require_non_empty_project
before_filter :assign_ref_vars
def show
@repo = @project.repo
@blame = Grit::Blob.blame(@repo, @commit.id, @path)
@blame = Gitlab::Git::Blame.new(project.repository, @commit.id, @path)
end
end

View File

@ -7,8 +7,6 @@ class BlobController < ProjectResourceController
before_filter :authorize_code_access!
before_filter :require_non_empty_project
before_filter :assign_ref_vars
def show
if @tree.is_blob?
send_data(

View File

@ -13,7 +13,6 @@ class CommitsController < ProjectResourceController
@limit, @offset = (params[:limit] || 40), (params[:offset] || 0)
@commits = @repo.commits(@ref, @path, @limit, @offset)
@commits = CommitDecorator.decorate(@commits)
respond_to do |format|
format.html # index.html.erb

View File

@ -8,15 +8,13 @@ class CompareController < ProjectResourceController
end
def show
result = Commit.compare(project, params[:from], params[:to])
compare = Gitlab::Git::Compare.new(project.repository, params[:from], params[:to])
@commits = result[:commits]
@commit = result[:commit]
@diffs = result[:diffs]
@refs_are_same = result[:same]
@commits = compare.commits
@commit = compare.commit
@diffs = compare.diffs
@refs_are_same = compare.same
@line_notes = []
@commits = CommitDecorator.decorate(@commits)
end
def create

View File

@ -5,7 +5,7 @@ class DashboardController < ApplicationController
before_filter :event_filter, only: :show
def show
@groups = current_user.authorized_groups
@groups = current_user.authorized_groups.sort_by(&:human_name)
@has_authorized_projects = @projects.count > 0
@teams = current_user.authorized_teams
@projects_count = @projects.count
@ -34,6 +34,7 @@ class DashboardController < ApplicationController
@projects
end
@projects = @projects.search(params[:search]) if params[:search].present?
@projects = @projects.page(params[:page]).per(30)
end

View File

@ -0,0 +1,47 @@
# Controller for edit a repository's file
class EditTreeController < ProjectResourceController
include ExtractsPath
# Authorize
before_filter :authorize_read_project!
before_filter :authorize_code_access!
before_filter :require_non_empty_project
before_filter :edit_requirements, only: [:edit, :update]
def show
@last_commit = @project.repository.last_commit_for(@ref, @path).sha
end
def update
edit_file_action = Gitlab::Satellite::EditFileAction.new(current_user, @project, @ref, @path)
updated_successfully = edit_file_action.commit!(
params[:content],
params[:commit_message],
params[:last_commit]
)
if updated_successfully
redirect_to project_tree_path(@project, @id), notice: "Your changes have been successfully commited"
else
flash[:notice] = "Your changes could not be commited, because the file has been changed"
render :edit
end
end
private
def edit_requirements
unless @tree.is_blob? && @tree.text?
redirect_to project_tree_path(@project, @id), notice: "You can only edit text files"
end
allowed = if project.protected_branch? @ref
can?(current_user, :push_code_to_protected_branches, project)
else
can?(current_user, :push_code, project)
end
return access_denied! unless allowed
end
end

View File

@ -1,5 +1,2 @@
class ErrorsController < ApplicationController
def githost
render "errors/gitolite"
end
end

View File

@ -0,0 +1,13 @@
class FilesController < ApplicationController
def download
note = Note.find(params[:id])
if can?(current_user, :read_project, note.project)
uploader = note.attachment
send_file uploader.file.path, disposition: 'attachment'
else
not_found!
end
end
end

View File

@ -1,5 +1,6 @@
class GraphController < ProjectResourceController
include ExtractsPath
include ApplicationHelper
# Authorize
before_filter :authorize_read_project!
@ -7,11 +8,21 @@ class GraphController < ProjectResourceController
before_filter :require_non_empty_project
def show
if params.has_key?(:q)
if params[:q].blank?
redirect_to project_graph_path(@project, params[:id])
return
end
@q = params[:q]
@commit = @project.repository.commit(@q) || @commit
end
respond_to do |format|
format.html
format.json do
graph = Gitlab::Graph::JsonBuilder.new(project, @ref)
render :json => graph.to_json
@graph = Network::Graph.new(project, @ref, @commit)
end
end
end

View File

@ -59,15 +59,6 @@ class GroupsController < ApplicationController
end
end
def search
result = SearchContext.new(project_ids, params).execute
@projects = result[:projects]
@merge_requests = result[:merge_requests]
@issues = result[:issues]
@wiki_pages = result[:wiki_pages]
end
def people
@project = group.projects.find(params[:project_id]) if params[:project_id]
@users = @project ? @project.users : group.users
@ -94,6 +85,7 @@ class GroupsController < ApplicationController
if owner_id
@group.owner = User.find(owner_id)
@group.save
end
if @group.update_attributes(group_params)

View File

@ -1,3 +1,5 @@
require 'gitlab/satellite/satellite'
class MergeRequestsController < ProjectResourceController
before_filter :module_enabled
before_filter :merge_request, only: [:edit, :update, :show, :commits, :diffs, :automerge, :automerge_check, :ci_status]
@ -73,14 +75,15 @@ class MergeRequestsController < ProjectResourceController
if @merge_request.unchecked?
@merge_request.check_if_can_be_merged
end
render json: {state: @merge_request.human_state}
render json: {merge_status: @merge_request.merge_status_name}
rescue Gitlab::SatelliteNotExistError
render json: {state: :no_satellite}
render json: {merge_status: :no_satellite}
end
def automerge
return access_denied! unless can?(current_user, :accept_mr, @project)
if @merge_request.open? && @merge_request.can_be_merged?
return access_denied! unless allowed_to_merge?
if @merge_request.opened? && @merge_request.can_be_merged?
@merge_request.should_remove_source_branch = params[:should_remove_source_branch]
@merge_request.automerge!(current_user)
@status = true
@ -91,12 +94,10 @@ class MergeRequestsController < ProjectResourceController
def branch_from
@commit = @repository.commit(params[:ref])
@commit = CommitDecorator.decorate(@commit)
end
def branch_to
@commit = @repository.commit(params[:ref])
@commit = CommitDecorator.decorate(@commit)
end
def ci_status
@ -125,12 +126,12 @@ class MergeRequestsController < ProjectResourceController
end
def validates_merge_request
# Show git not found page if target branch doesnt exist
return git_not_found! unless @project.repo.heads.map(&:name).include?(@merge_request.target_branch)
# Show git not found page if target branch doesn't exist
return invalid_mr unless @project.repository.branch_names.include?(@merge_request.target_branch)
# Show git not found page if source branch doesnt exist
# Show git not found page if source branch doesn't exist
# and there is no saved commits between source & target branch
return git_not_found! if !@project.repo.heads.map(&:name).include?(@merge_request.source_branch) && @merge_request.commits.blank?
return invalid_mr if !@project.repository.branch_names.include?(@merge_request.source_branch) && @merge_request.commits.blank?
end
def define_show_vars
@ -140,6 +141,23 @@ class MergeRequestsController < ProjectResourceController
# Get commits from repository
# or from cache if already merged
@commits = @merge_request.commits
@commits = CommitDecorator.decorate(@commits)
@allowed_to_merge = allowed_to_merge?
@show_merge_controls = @merge_request.opened? && @commits.any? && @allowed_to_merge
end
def allowed_to_merge?
action = if project.protected_branch?(@merge_request.target_branch)
:push_code_to_protected_branches
else
:push_code
end
can?(current_user, action, @project)
end
def invalid_mr
# Render special view for MR with removed source or target branch
render 'invalid'
end
end

View File

@ -12,7 +12,7 @@ class MilestonesController < ProjectResourceController
def index
@milestones = case params[:f]
when 'all'; @project.milestones.order("closed, due_date DESC")
when 'all'; @project.milestones.order("state, due_date DESC")
when 'closed'; @project.milestones.closed.order("due_date DESC")
else @project.milestones.active.order("due_date ASC")
end
@ -32,7 +32,7 @@ class MilestonesController < ProjectResourceController
def show
@issues = @milestone.issues
@users = UserDecorator.decorate(@milestone.participants)
@users = UserDecorator.decorate_collection(@milestone.participants)
@merge_requests = @milestone.merge_requests
respond_to do |format|

View File

@ -0,0 +1,13 @@
class NotificationsController < ApplicationController
layout 'profile'
def show
@notification = current_user.notification
@projects = current_user.authorized_projects
end
def update
current_user.notification_level = params[:notification_level]
@saved = current_user.save
end
end

View File

@ -1,4 +1,6 @@
class ProfilesController < ApplicationController
include ActionView::Helpers::SanitizeHelper
before_filter :user
layout 'profile'
@ -12,7 +14,7 @@ class ProfilesController < ApplicationController
end
def update
if @user.update_attributes(params[:user])
if @user.update_attributes(user_attributes)
flash[:notice] = "Profile was successfully updated"
else
flash[:alert] = "Failed to update profile"
@ -51,7 +53,9 @@ class ProfilesController < ApplicationController
end
def update_username
@user.update_attributes(username: params[:user][:username])
if @user.can_change_username?
@user.update_attributes(username: params[:user][:username])
end
respond_to do |format|
format.js
@ -63,4 +67,17 @@ class ProfilesController < ApplicationController
def user
@user = current_user
end
def user_attributes
user_attributes = params[:user]
# Sanitize user input because we dont have strict
# validation for this fields
%w(name skype linkedin twitter bio).each do |attr|
value = user_attributes[attr]
user_attributes[attr] = sanitize(value) if value.present?
end
user_attributes
end
end

View File

@ -4,7 +4,7 @@ class Projects::TeamsController < Projects::ApplicationController
@teams = current_user.is_admin? ? UserTeam.scoped : current_user.user_teams
@teams = @teams.without_project(project)
unless @teams.any?
redirect_to project_team_index_path(project), notice: "No avaliable teams for assigment."
redirect_to project_team_index_path(project), notice: "No available teams for assigment."
end
end

View File

@ -1,12 +1,10 @@
require Rails.root.join('lib', 'gitlab', 'graph', 'json_builder')
class ProjectsController < ProjectResourceController
skip_before_filter :project, only: [:new, :create]
skip_before_filter :repository, only: [:new, :create]
# Authorize
before_filter :authorize_read_project!, except: [:index, :new, :create]
before_filter :authorize_admin_project!, only: [:edit, :update, :destroy]
before_filter :authorize_admin_project!, only: [:edit, :update, :destroy, :transfer]
before_filter :require_non_empty_project, only: [:blob, :tree, :graph]
layout 'application', only: [:new, :create]
@ -47,10 +45,10 @@ class ProjectsController < ProjectResourceController
format.js
end
end
end
rescue Project::TransferError => ex
@error = ex
render :update_failed
def transfer
::Projects::TransferContext.new(project, current_user, params).execute
end
def show
@ -59,43 +57,21 @@ class ProjectsController < ProjectResourceController
respond_to do |format|
format.html do
if @project.repository && !@project.repository.empty?
if @project.empty_repo?
render "projects/empty"
else
@last_push = current_user.recent_push(@project.id)
render :show
else
render "projects/empty"
end
end
format.js
end
end
def files
@notes = @project.notes.where("attachment != 'NULL'").order("created_at DESC").limit(100)
end
#
# Wall
#
def wall
return render_404 unless @project.wall_enabled
@target_type = :wall
@target_id = nil
@note = @project.notes.new
respond_to do |format|
format.html
end
end
def destroy
return access_denied! unless can?(current_user, :remove_project, project)
# Delete team first in order to prevent multiple gitolite calls
project.team.truncate
project.destroy
respond_to do |format|

View File

@ -6,7 +6,7 @@ class Public::ProjectsController < ApplicationController
layout 'public'
def index
@projects = Project.public
@projects = Project.public_only
@projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20)
end
end

View File

@ -34,7 +34,6 @@ class RefsController < ProjectResourceController
@logs = contents.map do |content|
file = params[:path] ? File.join(params[:path], content.name) : content.name
last_commit = @repo.commits(@commit.id, file, 1).last
last_commit = CommitDecorator.decorate(last_commit)
{
file_name: content.name,
commit: last_commit
@ -49,9 +48,7 @@ class RefsController < ProjectResourceController
@repo = project.repository
@commit = @repo.commit(@ref)
@commit = CommitDecorator.decorate(@commit)
@tree = Tree.new(@commit.tree, @ref, params[:path])
@tree = TreeDecorator.new(@tree)
@hex_path = Digest::SHA1.hexdigest(params[:path] || "")
if params[:path]

View File

@ -1,9 +1,28 @@
class RegistrationsController < Devise::RegistrationsController
before_filter :signup_enabled?
def destroy
if current_user.owned_projects.count > 0
redirect_to account_profile_path, alert: "Remove projects and groups before removing account." and return
end
current_user.destroy
respond_to do |format|
format.html { redirect_to new_user_session_path, notice: "Account successfully removed." }
end
end
protected
def build_resource(hash=nil)
super
self.resource.projects_limit = Gitlab.config.gitlab.default_projects_limit
self.resource
end
private
def signup_enabled?
redirect_to new_user_session_path unless Gitlab.config.gitlab.signup_enabled
end
end
end

View File

@ -26,8 +26,7 @@ class ServicesController < ProjectResourceController
end
def test
commits = project.repository.commits(project.default_branch, nil, 3)
data = project.post_receive_data(commits.last.id, commits.first.id, "refs/heads/#{project.default_branch}", current_user)
data = GitPushService.new.sample_data(project, current_user)
@service = project.gitlab_ci_service
@service.execute(data)

View File

@ -1,4 +1,5 @@
class SnippetsController < ProjectResourceController
before_filter :module_enabled
before_filter :snippet, only: [:show, :edit, :destroy, :update, :raw]
# Allow read any snippet
@ -84,4 +85,8 @@ class SnippetsController < ProjectResourceController
def authorize_admin_snippet!
return render_404 unless can?(current_user, :admin_snippet, @snippet)
end
def module_enabled
return render_404 unless @project.snippets_enabled
end
end

View File

@ -4,12 +4,11 @@ class TeamMembersController < ProjectResourceController
before_filter :authorize_admin_project!, except: [:index, :show]
def index
@teams = UserTeam.scoped
end
@team = @project.users_projects.scoped
@team = @team.send(params[:type]) if %w(masters developers reporters guests).include?(params[:type])
@team = @team.sort_by(&:project_access).reverse.group_by(&:project_access)
def show
@user_project_relation = project.users_projects.find_by_user_id(member)
@events = member.recent_events.in_projects(project).limit(7)
@assigned_teams = @project.user_team_project_relationships
end
def new
@ -17,7 +16,7 @@ class TeamMembersController < ProjectResourceController
end
def create
users = User.where(id: params[:user_ids])
users = User.where(id: params[:user_ids].split(','))
@project.team << [users, params[:project_access]]

View File

@ -8,12 +8,12 @@ class Teams::MembersController < Teams::ApplicationController
def new
@users = User.potential_team_members(user_team)
@users = UserDecorator.decorate @users
@users = UserDecorator.decorate_collection @users
end
def create
unless params[:user_ids].blank?
user_ids = params[:user_ids]
user_ids = params[:user_ids].split(',')
access = params[:default_project_access]
is_admin = params[:group_admin]
user_team.add_members(user_ids, access, is_admin)
@ -27,7 +27,13 @@ class Teams::MembersController < Teams::ApplicationController
end
def update
options = {default_projects_access: params[:default_project_access], group_admin: params[:group_admin]}
member_params = params[:team_member]
options = {
default_projects_access: member_params[:permission],
group_admin: member_params[:group_admin]
}
if user_team.update_membership(team_member, options)
redirect_to team_members_path(user_team), notice: "Membership for #{team_member.name} was successfully updated in Team of users."
else
@ -45,5 +51,4 @@ class Teams::MembersController < Teams::ApplicationController
def team_member
@member ||= user_team.members.find_by_username(params[:id])
end
end

View File

@ -1,20 +1,4 @@
class Teams::ProjectsController < Teams::ApplicationController
skip_before_filter :authorize_manage_user_team!, only: [:index]
def index
@projects = user_team.projects
@avaliable_projects = current_user.admin? ? Project.without_team(user_team) : current_user.owned_projects.without_team(user_team)
end
def new
user_team
@avaliable_projects = current_user.owned_projects.scoped
@avaliable_projects = @avaliable_projects.without_team(user_team) if user_team.projects.any?
redirect_to team_projects_path(user_team), notice: "No avalible projects." unless @avaliable_projects.any?
end
def create
redirect_to :back if params[:project_ids].blank?
@ -28,7 +12,7 @@ class Teams::ProjectsController < Teams::ApplicationController
# Assign projects to team
user_team.assign_to_projects(project_ids, access)
redirect_to team_projects_path(user_team), notice: 'Team of users was successfully assigned to projects.'
redirect_to edit_team_path(user_team), notice: 'Team of users was successfully assigned to projects.'
end
def edit
@ -37,7 +21,7 @@ class Teams::ProjectsController < Teams::ApplicationController
def update
if user_team.update_project_access(team_project, params[:greatest_project_access])
redirect_to team_projects_path(user_team), notice: 'Access was successfully updated.'
redirect_to edit_team_path(user_team), notice: 'Access was successfully updated.'
else
render :edit
end
@ -53,5 +37,4 @@ class Teams::ProjectsController < Teams::ApplicationController
def team_project
@project ||= user_team.projects.find_with_namespace(params[:id])
end
end

View File

@ -9,13 +9,13 @@ class TeamsController < ApplicationController
layout 'user_team', except: [:new, :create]
def show
user_team
projects
@events = Event.in_projects(user_team.project_ids).limit(20).offset(params[:offset] || 0)
end
def edit
user_team
projects
@avaliable_projects = current_user.admin? ? Project.without_team(user_team) : current_user.owned_projects.without_team(user_team)
end
def update
@ -41,6 +41,9 @@ class TeamsController < ApplicationController
@team.path = @team.name.dup.parameterize if @team.name
if @team.save
# Add current user as Master to the team
@team.add_members([current_user.id], UsersProject::MASTER, true)
redirect_to team_path(@team)
else
render action: :new

View File

@ -7,9 +7,6 @@ class TreeController < ProjectResourceController
before_filter :authorize_code_access!
before_filter :require_non_empty_project
before_filter :assign_ref_vars
before_filter :edit_requirements, only: [:edit, :update]
def show
@hex_path = Digest::SHA1.hexdigest(@path)
@logs_path = logs_file_project_ref_path(@project, @ref, @path)
@ -20,40 +17,4 @@ class TreeController < ProjectResourceController
format.js { no_cache_headers }
end
end
def edit
@last_commit = @project.repository.last_commit_for(@ref, @path).sha
end
def update
edit_file_action = Gitlab::Satellite::EditFileAction.new(current_user, @project, @ref, @path)
updated_successfully = edit_file_action.commit!(
params[:content],
params[:commit_message],
params[:last_commit]
)
if updated_successfully
redirect_to project_tree_path(@project, @id), notice: "Your changes have been successfully commited"
else
flash[:notice] = "Your changes could not be commited, because the file has been changed"
render :edit
end
end
private
def edit_requirements
unless @tree.is_blob? && @tree.text?
redirect_to project_tree_path(@project, @id), notice: "You can only edit text files"
end
allowed = if project.protected_branch? @ref
can?(current_user, :push_code_to_protected_branches, project)
else
can?(current_user, :push_code, project)
end
return access_denied! unless allowed
end
end

Some files were not shown because too many files have changed in this diff Show More