砂礫

2012-03-07 60 views
1

獲取斑點我用砂在我的Rails應用程序,我創建一個承諾,我知道作品:砂礫

 repo = Repo.new(full_path, {:is_bare => true}) 
     fname = "snippet" 
     File.open("#{full_path}/#{fname}", 'w') {|f| f.puts(data)} 
     Dir.chdir("#{full_path}") {repo.add(fname)} 
     if repo.commit_index('his amazing commit') 
      logger.info "commit succeeded" 
     else 
      logger.info "commit failed" 
     end 

然後,即時通訊試圖讓這正顯示出空了斑點:

  tree = Tree.construct(repo, 'master') 
      data = tree.blobs.map {|b| repo.blob(b.id).data} 
      logger.info "data.first = #{data.first}" 
      data.first 

我在做什麼錯在這裏?

回答

0

我猜你有在你的倉庫根級別沒有文件。

tree.blobs返回根級別的文件,tree.trees返回目錄。要獲取存儲庫中的所有文件,您需要遞歸遍歷樹。

我寫了一些例子:

require 'grit' 

def traverse(tree, basename) 
    tree.blobs.each do |blob| 
    puts "#{basename}/#{blob.basename}" 
    end 
    tree.trees.each do |subtree| 
    traverse(subtree, "#{basename}/#{subtree.basename}") 
    end 
end 

repo = Grit::Repo.new('.') 
root = Grit::Tree.construct(repo, 'master') 
traverse(root, '') 
+1

謝謝!仍然沒有運氣。我的目錄看起來像這樣:http://cl.ly/3S0Y0j0S40231b3J0z10所以我肯定在我的回購的根級別有一個文件,我仍然無法獲得任何東西,即使通過遞歸遍歷。 – LuxuryMode 2012-03-07 03:54:39

+0

對此有何想法? – LuxuryMode 2012-03-07 17:57:39