# HG changeset patch # User Toshi MARUYAMA # Date 1360424689 -32400 # Node ID 51b62b97f3a44b0e656e472ef52469904690fab9 # Parent 43cc519d58798f653d3e71eb30df73bcfde36802 qnew * * * qnew diff --git a/test/unit/repository_git_test.rb b/test/unit/repository_git_test.rb --- a/test/unit/repository_git_test.rb +++ b/test/unit/repository_git_test.rb @@ -334,14 +334,22 @@ class RepositoryGitTest < ActiveSupport: assert_equal [], @repository.heads_from_branches_hash h = {} h["branches"] = {} - h["branches"]["test1"] = {} - h["branches"]["test1"]["last_scmid"] = "1234abcd" - h["branches"]["test2"] = {} - h["branches"]["test2"]["last_scmid"] = "abcd1234" + h["branches"]["master"] = {} + h["branches"]["master"]["last_scmid"] = "7234cb2750b63f47bff735edc50a1c0a433c2518" + h["branches"]["master-20120212"] = {} + h["branches"]["master-20120212"]["last_scmid"] = "899a15dba03a3b350b89c3f537e4bbe02a03cdc9" + h["branches"]["test_branch"] = {} + h["branches"]["test_branch"]["last_scmid"] = "899a15dba03a3b350b89c3f537e4bbe02a03cdc9" + h["branches"]["deleted_branch"] = {} + h["branches"]["deleted_branch"]["last_scmid"] = "0123abcd" @repository.merge_extra_info(h) @repository.save @project.reload - assert_equal ["1234abcd", "abcd1234"], @repository.heads_from_branches_hash.sort + assert_equal ["0123abcd", + "7234cb2750b63f47bff735edc50a1c0a433c2518", + "899a15dba03a3b350b89c3f537e4bbe02a03cdc9", + "899a15dba03a3b350b89c3f537e4bbe02a03cdc9"], + @repository.heads_from_branches_hash.sort end def test_latest_changesets # HG changeset patch # User Toshi MARUYAMA # Date 1360425496 -32400 # Node ID 4c45fbba968c348fcadd5aacd22c94ca5d2a0f24 # Parent 51b62b97f3a44b0e656e472ef52469904690fab9 qnew * * * [mq]: 1.diff diff --git a/app/models/repository/git.rb b/app/models/repository/git.rb --- a/app/models/repository/git.rb +++ b/app/models/repository/git.rb @@ -137,7 +137,7 @@ class Repository::Git < Repository h["heads"] ||= [] prev_db_heads = h["heads"].dup if prev_db_heads.empty? - prev_db_heads += heads_from_branches_hash + prev_db_heads += heads_from_branches_hash(scm_brs) end return if prev_db_heads.sort == repo_heads.sort @@ -235,11 +235,16 @@ class Repository::Git < Repository end private :save_revision - def heads_from_branches_hash + def heads_from_branches_hash(git_branches) + br_names = git_branches.map{|br| br.to_s} h1 = extra_info || {} h = h1.dup + heads = [] h["branches"] ||= {} - h['branches'].map{|br, hs| hs['last_scmid']} + h['branches'].each do |br, hs| + heads << hs['last_scmid'] if br_names.include?(br) + end + heads end def latest_changesets(path,rev,limit=10) diff --git a/test/unit/repository_git_test.rb b/test/unit/repository_git_test.rb --- a/test/unit/repository_git_test.rb +++ b/test/unit/repository_git_test.rb @@ -329,9 +329,10 @@ class RepositoryGitTest < ActiveSupport: end def test_heads_from_branches_hash + brs = @repository.branches assert_nil @repository.extra_info assert_equal 0, @repository.changesets.count - assert_equal [], @repository.heads_from_branches_hash + assert_equal [], @repository.heads_from_branches_hash(brs) h = {} h["branches"] = {} h["branches"]["master"] = {} @@ -345,11 +346,10 @@ class RepositoryGitTest < ActiveSupport: @repository.merge_extra_info(h) @repository.save @project.reload - assert_equal ["0123abcd", - "7234cb2750b63f47bff735edc50a1c0a433c2518", + assert_equal ["7234cb2750b63f47bff735edc50a1c0a433c2518", "899a15dba03a3b350b89c3f537e4bbe02a03cdc9", "899a15dba03a3b350b89c3f537e4bbe02a03cdc9"], - @repository.heads_from_branches_hash.sort + @repository.heads_from_branches_hash(brs).sort end def test_latest_changesets