Seeded project repositories are empty (undefined method `sha' for nil:NilClass)
Hi, I'm trying to install the gitlab-development-kit, and running into trouble.
When I run the rake dev:setup
, I get an error when it tries to run the seed file 10_merge_requests.rb
:
== Seed from /Users/jrochkind/code/gitlab-development-kit/gitlab/db/fixtures/development/10_merge_requests.rb
rake aborted!
NoMethodError: undefined method `sha' for nil:NilClass
/Users/jrochkind/.gem/ruby/2.1.6/gems/seed-fu-2.3.5/lib/seed-fu/runner.rb:46:in `eval'
/Users/jrochkind/code/gitlab-development-kit/gitlab/app/models/merge_request_diff.rb:87:in `unmerged_commits'
/Users/jrochkind/code/gitlab-development-kit/gitlab/app/models/merge_request_diff.rb:101:in `reload_commits'
/Users/jrochkind/code/gitlab-development-kit/gitlab/app/models/merge_request_diff.rb:42:in `reload_content'
# [...]
/Users/jrochkind/.gem/ruby/2.1.6/gems/seed-fu-2.3.5/lib/seed-fu/runner.rb:25:in `each'
/Users/jrochkind/.gem/ruby/2.1.6/gems/seed-fu-2.3.5/lib/seed-fu/runner.rb:25:in `run'
/Users/jrochkind/.gem/ruby/2.1.6/gems/seed-fu-2.3.5/lib/seed-fu.rb:29:in `seed'
/Users/jrochkind/.gem/ruby/2.1.6/gems/seed-fu-2.3.5/lib/tasks/seed_fu.rake:36:in `block (2 levels) in <top (required)>'
/Users/jrochkind/code/gitlab-development-kit/gitlab/lib/tasks/gitlab/setup.rake:19:in `setup_db'
/Users/jrochkind/code/gitlab-development-kit/gitlab/lib/tasks/gitlab/setup.rake:4:in `block (2 levels) in <top (required)>'
/Users/jrochkind/code/gitlab-development-kit/gitlab/lib/tasks/dev.rake:7:in `block (2 levels) in <top (required)>'
Here's what I've found debugging:
First, to get a complete stack trace, I edited the eval in seed-fu's runner.rb:46 to be eval(chunked_ruby, binding, __FILE__, __LINE__)
(this might be a good PR to seed-fu?).
The exception is actually coming from gitlab/app/models/merge_request_diff.rb:166: source_sha = merge_request.source_project.commit(source_branch).sha
debugging further, merge_request
there is:
#<MergeRequest id: 1, target_branch: "master", source_branch: "feature", source_project_id: 5, author_id: 1, assignee_id: nil, title: "Can be automatically merged", created_at: "2015-10-03 22:42:08", updated_at: "2015-10-03 22:42:08", milestone_id: nil, state: "opened", merge_status: "unchecked", target_project_id: 5, iid: 1, description: nil, position: 0, locked_at: nil, updated_by_id: nil, merge_error: nil>
And source_branch
is the String "feature"
.
merge_request.source_project.commit(source_branch)
is indeed nil.
Why? Because while merge_request.source_project.repository
is non-nil merge_request.source_project.repository.raw_repository
is nil.
And when Repository#raw_repository
is nil, lots of Repository
methods don't work, often returning NoMethodError.
Why is raw_repository
nil? Because the Repository initializer tries to set it @raw_repository = Gitlab::Git::Repository.new(path_to_repo)
, but that line throws an exception -- which the initializer rescues and ignores. (Is it a good idea for the initializer to be swallowing this exception, when a Repository without @raw_repository
set has such problems functioning?)
Why does it throw? path_to_repo
at that point for the problematic Repository is gitlab-development-kit/repositories/gitlab-org/gitlab-test.git
. That directory is present in my gitlab-development-kit setup, but is entirely empty, it does not in fact contain a git repo.
Is the bug that the development kit setup process should have actually filled that directory with a repo by this point in the setup process? Or is it expected to be empty, and the bug is that the seed process wasn't written in a way to handle it? Or elsewhere? Or no bug at all, and I've made some mistake somehow in following the setup script?
Experimentally, I made some efforts at manually filling that directory with the appropriate git file system for gitlab-org/gitlab-test.git
, but wasn't succesful; I may not know enough about git to do that right, or this entire line of debugging may have been a red herring, and the problem has nothing to do with this.
I am new to gitlab, and this is about my limit for debugging this. Can anyone provide any advice as to the nature of the problem and/or bug, and how I can proceed?