2012-06-29 35 views
6

如何對CouchDB的map/reduce函數進行版本控制?我希望能夠將它們檢入到git/github中,這樣我的隊友就可以輕鬆地將它們應用到他們的本地測試環境中。我知道那裏的CouchDB的複製功能,但我想保持數據庫視圖與項目的來源。版本控制couchdb map-reduce功能

+0

我不明白這個問題。是不是這種觀點是用某種高級語言,JavaScript或其他語言定義的?在這種情況下,你可以將它們存儲在一個常規的源文件中,並將它們作爲版本源代碼模塊進行版本化。唯一剩下的技巧是如何從文本文件源中將它們導入到CouchDB中。但是這也很簡單:假設它們是Javascript函數,如果你有一個Javascript引擎,你可以獲得函數的字符串表示,對它們進行JSON化,並用PUT動態地將它們加載到CouchDB中以適當的URL。 – Cheeso

+0

我正在走這條路,但它看起來比它需要的更復雜。理想情況下,我想從文件系統導入/導出視圖的JS,以便我可以提交給git。 –

回答

5

您需要的是(許多)couchapp工具之一。基本上它們都將各種結構中的一系列js文件映射到CouchDB使用的設計文檔佈局,並且通常會提供一些簡單的推/拉機制來獲取這些文件。

然後,您可以在主文件夾&中git init,確保您正在版本化您上傳的設計文檔。

有一個很好的解釋http://mindeavor.com/blog/the-anatomy-of-a-couchapp只是暫時忽略供應商/討論,它不是必需的。

如果你是一個JS /節點傢伙的更多嘗試https://github.com/mikeal/node.couchapp.js/或kanso http://kan.so/是真棒,但它做了很多;在進入之前你可能會發現你需要更多的Couch-fu。不過,您可以使用kanso push開始。

如果您只想開始使用,請使用couchapp http://github.com/couchapp/couchapp這是一個python工具,可能是最初的工具。

+0

感謝您的支持!不過,您的一些鏈接似乎已經死亡。 Kanso看起來應該現在訪問https://kanso.app.medicmobile.org/,解釋鏈接可能會轉到http://web.archive.org/web/20121024014059/http://mindeavor.com/ blog/the-anatomy-of-a-couchapp - 我在作者(@mindeavor)上發佈推文,詢問是否有更好的網址。 –

1

我們(以及我相信大多數團隊)會按照您所說的去做。我們在我們的源代碼樹中保留我們的觀點等,並承諾git。我們的應用程序是一個節點應用程序,所以它對於我們來說非常簡單,並且將它們保存到數據庫中,但這在任何語言中都相當簡單 - 只是提出一個命名方案,將JS文件存儲在特定放置並讀取文件,並將數據存儲在數據庫中相應的_design/document中的適當鍵結構中。