NPM的(節點包管理器)註冊表使用CouchDB在CouchDB實例上存儲元數據信息和包的壓縮包http://registry.npmjs.org/registry ..我使用以下複製文檔(CouchDB 1.1.0)複製註冊表的一個子集,以我公司的CouchDB:CouchDB過濾的複製:在第一次完整複製後修改doc_id
{ "_id": "fetch-npm-registry", "doc_ids": [ "coffee-script", "nodeunit" ], "source": "http://couchdb.mycompany.com:5984/registry", "target": "registry", }
[順便說一句,在CouchApp處理這是https://github.com/isaacs/npmjs.org(也有完整的安裝說明)。
如果我想添加另一個依賴項到我的包中,我的天真想法是我只是修改doc_ids
列表(比如說,到["coffee-script", "nodeunit", "npm"]
)並再次啓動複製。
This 但是不起作用:複製立即完成,我想添加到複製(在這種情況下爲"npm"
)的軟件包丟失。
[知道我的解決方法是刪除目標數據庫,再次複製和 - 因爲我也用這個本地註冊表出版我的專屬套餐 - 重新發布我的本地包。 嘆息]
修訂18.11.2011
這裏就是我想會發生什麼(不是全部CouchDB的內部專家,但也許有一定的道理吧):
第一次成功複製後,CouchDB中存儲了最後一個(最高?)序列在數據庫中一個隱藏文件中複製的最新文件的ID(我曾經知道如何訪問這些,指針歡迎)。然後,當我更改doc_ids
關於上次成功複製(序列ID)的緩存信息不會失效(或清除)。然後,當它告訴使用相同的數據庫再次複製它比較順序ID並決定一切都很好。
你有沒有[檢查衝突](http://guide.couchdb.org/draft/conflicts.html#working)? –
不,但不應該有。在此期間,我並沒有推出自己的npm版本(如'npm publish')。我有一些原始內容的包(我的專有包),其餘的應該從上游複製。這兩套軟件不相交。 – peritus
然後檢查權限。複製過程中的錯誤報告很弱......請檢查日誌。一些更多的信息將是有用的:CouchDB版本;編譯或打包;什麼OS? –