It only shows the revision history of the current document. Open each
conflict document by revision id using the revs_info=true options to
see it's full history.
-Damien
On Oct 29, 2009, at 12:39 PM, Brian Candler wrote:
I am a bit confused about the intended semantics of ?revs_info=true,
since
it does not show conflicting revs. Example:
---------------- script ---------------
HOST=http://127.0.0.1:5984
DB="$HOST/conflict_test"
EP="$DB/_bulk_docs"
curl -s "$HOST"
curl -sX DELETE "$DB"
curl -sX PUT "$DB"
resp=$(curl -sX POST -d @- $EP <<JSON)
{"all_or_nothing":true,"docs":[{
"_id":"mydoc",
"type":"test"
}]}
JSON
rev0=`expr "$resp" : '.*"rev":"\([^"]*\)"'`
echo $rev0
resp=$(curl -sX POST -d @- $EP <<JSON)
{"all_or_nothing":true,"docs":[{
"_id":"mydoc",
"_rev":"$rev0",
"type":"test",
"data":"foo"
}]}
JSON
rev1=`expr "$resp" : '.*"rev":"\([^"]*\)"'`
echo $rev1
resp=$(curl -sX POST -d @- $EP <<JSON)
{"all_or_nothing":true,"docs":[{
"_id":"mydoc",
"_rev":"$rev0",
"type":"wibble",
"data":"bar"
}]}
JSON
rev2=`expr "$resp" : '.*"rev":"\([^"]*\)"'`
echo $rev2
# Now we have two conflicting versions.
echo
echo "Getting the auto-selected version:"
curl -s "$DB/mydoc"
echo
echo "Getting the auto-selected version with 'conflicts':"
curl -s "$DB/mydoc?conflicts=true"
echo
echo "Getting the auto-selected version with 'revs':"
curl -s "$DB/mydoc?revs=true"
echo
echo "Getting the auto-selected version with 'revs_info':"
curl -s "$DB/mydoc?revs_info=true"
---------------- output -----------------
{"couchdb":"Welcome","version":"0.11.0bc7e681a3-git"}
{"ok":true}
{"ok":true}
1-3b717529ff0f515c2c5d8aa52a2c03ab
2-7170cc59f0d73ecf7bf60f3818fda4be
2-161b6901565fe9ffdc937da206b09e53
Getting the auto-selected version:
{"_id
":"mydoc
","_rev
":"2-7170cc59f0d73ecf7bf60f3818fda4be","type":"test","data":"foo"}
Getting the auto-selected version with 'conflicts':
{"_id
":"mydoc
","_rev
":"2
-7170cc59f0d73ecf7bf60f3818fda4be
","type":"test","data":"foo","_conflicts":
["2-161b6901565fe9ffdc937da206b09e53"]}
Getting the auto-selected version with 'revs':
{"_id
":"mydoc
","_rev
":"2
-7170cc59f0d73ecf7bf60f3818fda4be
","type":"test","data":"foo","_revisions":{"start":2,"ids":
["7170cc59f0d73ecf7bf60f3818fda4be
","3b717529ff0f515c2c5d8aa52a2c03ab"]}}
Getting the auto-selected version with 'revs_info':
{"_id
":"mydoc
","_rev
":"2
-7170cc59f0d73ecf7bf60f3818fda4be
","type":"test","data":"foo","_revs_info":
[{"rev":"2-7170cc59f0d73ecf7bf60f3818fda4be","status":"available"},
{"rev":"1-3b717529ff0f515c2c5d8aa52a2c03ab","status":"available"}]}
So:
* the current version has _rev 2-717
* "conflicts" tells us about _conflicts 2-161
* "revs" tells us about _revisions 717 and 3b7. It says "start":2 but
actually the 3b7 is 1-3b7, so this doesn't seem to be useful in
practice.
* "revs_info" tells us about 2-717 and 1-3b7 (but not 2-161)
You *can* apply both conflicts=true and revs_info=true. Is that what
you're
supposed to do? Is revs_info only supposed to give the revs back
along one
particular history branch?
Thanks,
Brian.