summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2017-03-09 13:40:57 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2017-03-09 13:40:57 +0200
commit5b52adcedb78287c4599ead8ffc1d00f84dc4e55 (patch)
tree86d0c6338877f856761a9274e47b23a5d1a10f7b
parent26f28f9654a2f1a49364733e11da2ac9db56645c (diff)
downloadgitlab-ce-5b52adcedb78287c4599ead8ffc1d00f84dc4e55.tar.gz
Fix group members method for project import/export
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-rw-r--r--lib/gitlab/import_export/project_tree_saver.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/gitlab/import_export/project_tree_saver.rb b/lib/gitlab/import_export/project_tree_saver.rb
index b79be62245b..3473b466936 100644
--- a/lib/gitlab/import_export/project_tree_saver.rb
+++ b/lib/gitlab/import_export/project_tree_saver.rb
@@ -47,7 +47,13 @@ module Gitlab
def group_members
return [] unless @current_user.can?(:admin_group, @project.group)
- MembersFinder.new(@project.project_members, @project.group).execute(@current_user)
+ # We need `.where.not(user_id: nil)` here otherwise when a group has an
+ # invitee, it would make the following query return 0 rows since a NULL
+ # user_id would be present in the subquery
+ # See http://stackoverflow.com/questions/129077/not-in-clause-and-null-values
+ non_null_user_ids = @project.project_members.where.not(user_id: nil).select(:user_id)
+
+ GroupMembersFinder.new(@project.group).execute.where.not(user_id: non_null_user_ids)
end
end
end