2012-06-29 37 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中的适当键结构中。