On 15 May 2009, at 16:54, Damien Katz wrote:


On May 13, 2009, at 9:39 PM, Jan Lehnardt wrote:


On 14 May 2009, at 03:17, Damien Katz wrote:

We have to both block and merge commits? It seems like we should only need to do one or the other, but not both.

We need block or merge a commit for any stable branch
(currently 0.9.x), depending on wether we like to have it
in the stable branch or not.

I don't understand why. By default, fixes DO NOT go into the stable branch, unless they fix an critical bug of that branch.

Instead of blocking patches, we should only merge patches that we need in the branch.


We could just not merge it, but explicitly blocking it makes
working with SVN and keeping track of unmerged and
unblocked commits easier. I.e. we can differentiate between
commits that have been considered to not be backported and
commits that have not been considered at all.

I don't see how that makes it easier, unless we decided at some point to merge everything from one branch over to another, but with some exceptions. But that's not how the stable branches should work, the exceptions should be the patches themselves, each one committed must be considered necessary.

Otherwise, we have to do all this extra work it seems, and I don't see the point.


  $ svn mergeinfo trunk branches/0.9.x --show-revs eligible

gives us a list of all commits to trunk that have not yet been merged or blocked for branches/0.9.x. The idea is to use this as a mechanism to make sure no patches fall between cracks that should go into a branch. We can only do this
if we explicitly block commits.

This makes separating the roles of committer and release manager possible and
the RM's live a bit easier.

I think two additional svn commands are not that much of "extra work". We could
make nice aliases that would give you this workflow:

  $ svn commit -m 'new feature' path/to/file
  Committed revision r123456
  $ couchsvn block r123456 branches/0.9.x
  r123456 blocked for branches/0.9.x

or

  $ svn commit -m 'bugfix' path/to/file
  Committed revision r123456
  $ couchsvn merge r123456 branches/0.9.x
  r123456 merged into branches/0.9.x

Would that work?

I'm not too pressed about this procedure, but I think it is useful and only a small
burden.

Cheers
Jan
---













-Damien


Cheers
Jan
--
Or a more geeky answer: A commit can be in one of three
states (for any given branch): Merged, blocked, and unprocessed.
A binary flag is not sufficient to record three states :)



-Damien

On May 13, 2009, at 8:54 PM, Jan Lehnardt wrote:

Hi Damien,

Can you take care of blocking / merging commits from / to
branches/0.9.x or should somebody else look after it? I'd
volunteer.

Cheers
Jan
--



On 13 May 2009, at 20:27, [email protected] wrote:

Author: damien
Date: Wed May 13 18:27:11 2009
New Revision: 774474

URL: http://svn.apache.org/viewvc?rev=774474&view=rev
Log:
Adding testing for GET /_changes?continuous=true by adding a GET /_sleep?time=Msecs call, which allows the browser to process the waiting data on the other async XHR request.

Modified:
couchdb/trunk/etc/couchdb/default.ini.tpl.in
couchdb/trunk/share/www/script/test/changes.js
couchdb/trunk/src/couchdb/couch_httpd_misc_handlers.erl
couchdb/trunk/src/couchdb/couch_query_servers.erl

Modified: couchdb/trunk/etc/couchdb/default.ini.tpl.in
URL: 
http://svn.apache.org/viewvc/couchdb/trunk/etc/couchdb/default.ini.tpl.in?rev=774474&r1=774473&r2=774474&view=diff
= = = = = = = = = = = = ==================================================================
--- couchdb/trunk/etc/couchdb/default.ini.tpl.in (original)
+++ couchdb/trunk/etc/couchdb/default.ini.tpl.in Wed May 13 18:27:11 2009
@@ -60,6 +60,7 @@
_restart = {couch_httpd_misc_handlers, handle_restart_req}
_stats = {couch_httpd_stats_handlers, handle_stats_req}
_log = {couch_httpd_misc_handlers, handle_log_req}
+_sleep = {couch_httpd_misc_handlers, handle_sleep_req}

[httpd_db_handlers]
_compact = {couch_httpd_db, handle_compact_req}

Modified: couchdb/trunk/share/www/script/test/changes.js
URL: 
http://svn.apache.org/viewvc/couchdb/trunk/share/www/script/test/changes.js?rev=774474&r1=774473&r2=774474&view=diff
= = = = = = = = = = = = ==================================================================
--- couchdb/trunk/share/www/script/test/changes.js (original)
+++ couchdb/trunk/share/www/script/test/changes.js Wed May 13 18:27:11 2009
@@ -10,29 +10,85 @@
// License for the specific language governing permissions and limitations under
// the License.

+
couchTests.changes = function(debug) {
var db = new CouchDB("test_suite_db");
db.deleteDb();
db.createDb();
if (debug) debugger;

-
-  var req = CouchDB.newXhr();
-
-  req.open("GET", "/test_suite_db/_changes", false);
-  req.send("");
+  var req = CouchDB.request("GET", "/test_suite_db/_changes");
var resp = JSON.parse(req.responseText);

T(resp.results.length == 0 && resp.last_seq==0)

-  var doc = {_id:"foo", bar:1};
-  db.save(doc);
+  var docFoo = {_id:"foo", bar:1};
+  db.save(docFoo);

-  req.open("GET", "/test_suite_db/_changes", false);
-  req.send("");
+  req = CouchDB.request("GET", "/test_suite_db/_changes");
var resp = JSON.parse(req.responseText);

T(resp.results.length == 1 && resp.last_seq==1)
-  T(resp.results[0].changes[0].rev == doc._rev)
+  T(resp.results[0].changes[0].rev == docFoo._rev)
+
+  var xhr;
+
+  try {
+    xhr = CouchDB.newXhr();
+  } catch (err) {
+  }
+
+  if (xhr) {
+ // Only test the continuous stuff if we have a real XHR object
+    // with real async support.
+
+    var sleep = function(msecs) {
+ // by making a slow sync request, weallows the waiting XHR request data
+      // to be received.
+      var req = CouchDB.request("GET", "/_sleep?time=" + msecs);
+      T(JSON.parse(req.responseText).ok == true);
+    }
+
+    var parse_changes_line = function(line) {
+      if (line.charAt(line.length-1) == ",") {
+        line = line.substring(0, line.length-1);
+      }
+      return JSON.parse(line);
+    }
+
+ xhr.open("GET", "/test_suite_db/_changes?continuous=true", true);
+    xhr.send("");
+
+    var docBar = {_id:"bar", bar:1};
+    db.save(docBar);
+
+    sleep(100);
+    var lines = xhr.responseText.split("\n");
+
+    T(lines[0]='{"results":[');
+
+    var change = parse_changes_line(lines[1]);
+
+    T(change.seq == 1)
+    T(change.id == "foo")
+
+    change = parse_changes_line(lines[2]);
+
+    T(change.seq == 2)
+    T(change.id == "bar")
+    T(change.changes[0].rev == docBar._rev)
+
+    var docBaz = {_id:"baz", baz:1};
+    db.save(docBaz);
+
+    sleep(100);
+    var lines = xhr.responseText.split("\n");
+
+    change = parse_changes_line(lines[3]);
+
+    T(change.seq == 3);
+    T(change.id == "baz");
+    T(change.changes[0].rev == docBaz._rev);

+  }
};

Modified: couchdb/trunk/src/couchdb/couch_httpd_misc_handlers.erl
URL: 
http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_httpd_misc_handlers.erl?rev=774474&r1=774473&r2=774474&view=diff
= = = = = = = = = = = = ================================================================== --- couchdb/trunk/src/couchdb/couch_httpd_misc_handlers.erl (original) +++ couchdb/trunk/src/couchdb/couch_httpd_misc_handlers.erl Wed May 13 18:27:11 2009
@@ -15,7 +15,7 @@
-export([handle_welcome_req/2,handle_favicon_req/ 2,handle_utils_dir_req/2,
handle_all_dbs_req/1,handle_replicate_req/1,handle_restart_req/1,
handle_uuids_req/1,handle_config_req/1,handle_log_req/1,
-    handle_task_status_req/1]).
+    handle_task_status_req/1,handle_sleep_req/1]).

-export([increment_update_seq_req/2]).

@@ -56,6 +56,12 @@
handle_utils_dir_req(Req, _) ->
send_method_not_allowed(Req, "GET,HEAD").

+handle_sleep_req(#httpd{method='GET'}=Req) ->
+    Time = list_to_integer(couch_httpd:qs_value(Req, "time")),
+    receive snicklefart -> ok after Time -> ok end,
+    send_json(Req, {[{ok, true}]});
+handle_sleep_req(Req) ->
+    send_method_not_allowed(Req, "GET,HEAD").

handle_all_dbs_req(#httpd{method='GET'}=Req) ->
{ok, DbNames} = couch_server:all_databases(),

Modified: couchdb/trunk/src/couchdb/couch_query_servers.erl
URL: 
http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_query_servers.erl?rev=774474&r1=774473&r2=774474&view=diff
= = = = = = = = = = = = ==================================================================
--- couchdb/trunk/src/couchdb/couch_query_servers.erl (original)
+++ couchdb/trunk/src/couchdb/couch_query_servers.erl Wed May 13 18:27:11 2009
@@ -278,7 +278,7 @@
[{Pid, Lang}] ->
   case Status of
   normal -> ok;
- _ -> ?LOG_DEBUG("Linked process died abnromally: ~p (reason: ~p)", [Pid, Status]) + _ -> ?LOG_DEBUG("Linked process died abnormally: ~p (reason: ~p)", [Pid, Status])
   end,
   {ok, {
       Langs,










Reply via email to