[01:10] Hiya. We've got a buildbot which is using bzr, while our main repository is still SVN. The buildbot wants to build svn revisions. svn:revno almost does what we want, except it demands a level of precision we can't necessarily provide: [01:10] To wit, when we have a revision number that is in a branch, but we try to check it out on trunk, we don't get the "highest without going over" behavior that "svn checkout" would produce. [01:11] Is there a way to get that behavior without lots of hacking of 'bzr log' and its output? [01:14] possibly [01:14] uhm [01:14] before:svn:xxx [01:14] or after:svn:xxx [01:15] or you could write a plugin for svn-approx:xxxx [01:15] which would do whatever you need [01:15] revision resolving plugins are pretty simple [01:16] lifeless: interesting [01:17] lifeless: that doesn't seem to work though. [01:17] bzr: ERROR: Unsupported protocol for url "after:svn:34810" [01:20] after might be science fiction [01:20] I suspect you need a small resolver [01:21] bzr help revisionspec will give you the current ones [01:21] you can look at e.g. bzr-svn to see how svn: is implemented and registered [01:23] lifeless: OK. Probably don't need it, but that's good to keep in mind. I did write a bunch of shortcut plugins for my own personal use :) [01:23] no revision plugins though. [01:28] revspec plugins are pretty straightforward. [01:28] glyph: I suspect a plugin is what you need, that or a patch to the svn revspec to be fuzzy [04:11] bzr: ERROR: Requested revision: u'svn:35497' does not exist in branch: BzrBranch7('http://svn.twistedmatrix.com/bzr/Twisted/trunk/') [04:12] ^--- does this indicate an out-of-date version bzr/bzr-svn? === _thumper_ is now known as thumper [04:28] tomprince: is the bzr-svn plugin loaded? (does it appear in 'bzr plugins' ?)| [04:28] Or possibly it means that bzr mirror of the svn trunk is out of date? [04:44] I don't have access to the host. It could be that the bzr-svn plugin is loaded. [04:45] http://buildbot.twistedmatrix.com/builders/rhel6-32bit-py2.6/builds/984/steps/bzr/logs/stdio [04:45] spiv: ^--- is the output I get. [04:47] I'm trying to diagnose the problem remotely, so I can provide instructions to the person who has access to the machine. [04:57] I guess ideally the 'bzr' step of that buildslave config would capture the .bzr.log and put it somewhere visible. [04:57] Or perhaps run bzr with -Derror or something [05:01] Well, 'bzr log -r-1 -v --long --show-ids http://svn.twistedmatrix.com/bzr/Twisted/trunk/' shows its currently at svn's r35499 [05:02] So that error does suggest that there's something wrong with bzr-svn on that slave. [08:07] morning [08:51] pom [08:55] tomprince: hi [08:55] tomprince: did that revision touch that particular branch? [11:10] *awesome* [11:10] $ bzr di [11:10] === modified file 'sourcedeps.conf' [11:10] bzr: ERROR: Could not understand response from smart server: ['x\x9c\xa5\x92\xcb\x0e\x820\x10E\xd7\xf2\x15\xee\r\xad\xa0\x10\x1f\xf1cJ[\xa1\x81>\x9c\xb6$\xb2\xf0\xdb\x85\x80Q0\x01\x13\x17\x93Lf\xe6\xde\x93\xde\x14a!\x8d\x06\x17Z'] [11:10] hm... new in the last few days I take it? [11:11] mgz: new today for me [11:11] lightweight checkout [11:11] we upgraded launchpad to bzr 2.5.1 which has some new fancy for doing some operations over the smart server that weren't before [11:11] so, please file a bug with as much info as possible. [11:12] ok. [11:13] obvious work around is have a local trunk branch that you branch from, so diffs from lwc use that [11:13] yeah, I'm doing that right now [11:13] thanks jml. [11:13] huh, apparently a lock has been taken [11:13] ...you might need to manuall break it [11:13] also worth putting in the bug report [11:14] ah... launchpad might be unhappy right now? [11:18] mgz: https://bugs.launchpad.net/bzr/+bug/1046265 [11:18] Ubuntu bug 1046265 in Bazaar ""Could not understand response from smart server" when diffing lightweight checkout of LP branch" [Undecided,New] [11:18] is it repoducable, I neglected to ask? [11:19] mgz: yes, although I haven't tried from a fresh light-weight checkout, only one that already existed. [11:45] mgz, jelmer: any success with the python-defaults stuff? [11:47] jml: what were you using a lightweight checkout for that you were running diff? (the only specific common one I know of is the download-cache, but diff is pretty useless for tarballs) [11:48] jam: a branch that contains only a config-manager configuration file, sourcedeps.conf [11:48] jml: can you file a bug about this issue? [11:49] jelmer: is https://bugs.launchpad.net/bzr/+bug/1046265 somehow insufficient? [11:49] Ubuntu bug 1046265 in Bazaar ""Could not understand response from smart server" when diffing lightweight checkout of LP branch" [High,Confirmed] [11:49] jelmer: he did file #1046265 was there another one? [11:49] jml: worked on landing use-bzr-policy-open earlier, and am going to upload a new python-defaults soon [11:49] jml: No, that's great - thanks [11:49] jelmer: np. [11:49] I didn't see that [11:50] jelmer: use-bzr-policy-open? [11:50] an lp branch [11:50] jam: yep, to get launchpad to use the bzr code for safely opening branches [12:08] see also $ bzr ci [12:08] Committing to: bzr+ssh://bazaar.launchpad.net/~canonical-ca-hackers/ca-configs/txpkgme-configmanager/ [12:08] modified sourcedeps.conf [12:08] bzr: ERROR: bzrlib.errors.TooManyConcurrentRequests: The medium 'SmartSSHClientMedium(bzr+ssh://jml@bazaar.launchpad.net/)' has reached its concurrent request limit. Be sure to finish_writing and finish_reading on the currently open request. [12:08] Traceback (most recent call last): [12:08] File "/usr/lib/python2.7/dist-packages/bzrlib/commands.py", line 930, in exception_to_return_code [12:08] return the_callable(*args, **kwargs) [12:08] File "/usr/lib/python2.7/dist-packages/bzrlib/commands.py", line 1141, in run_bzr [12:08] ret = run(*run_argv) [12:08] File "/usr/lib/python2.7/dist-packages/bzrlib/commands.py", line 673, in run_argv_aliases [12:08] return self.run(**all_cmd_args) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/commands.py", line 697, in run [12:09] return self._operation.run_simple(*args, **kwargs) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/cleanup.py", line 136, in run_simple [12:09] self.cleanups, self.func, *args, **kwargs) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/cleanup.py", line 166, in _do_with_cleanups [12:09] result = func(*args, **kwargs) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/builtins.py", line 3688, in run [12:09] lossy=lossy) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/decorators.py", line 218, in write_locked [12:09] result = unbound(self, *args, **kwargs) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/workingtree_4.py", line 218, in commit [12:09] result = WorkingTree.commit(self, message, revprops, *args, **kwargs) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/decorators.py", line 218, in write_locked [12:09] result = unbound(self, *args, **kwargs) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/mutabletree.py", line 211, in commit [12:09] *args, **kwargs) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/commit.py", line 290, in commit [12:09] lossy=lossy) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/cleanup.py", line 132, in run [12:09] self.cleanups, self.func, self, *args, **kwargs) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/cleanup.py", line 166, in _do_with_cleanups [12:09] result = func(*args, **kwargs) [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/commit.py", line 452, in _commit [12:09] self.builder.abort() [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/vf_repository.py", line 217, in abort [12:09] self.repository.abort_write_group() [12:09] File "/usr/lib/python2.7/dist-packages/bzrlib/remote.py", line 1212, in abort_write_group [12:09] suppress_errors=suppress_errors) [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/repository.py", line 282, in abort_write_group [12:10] self._abort_write_group() [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/repofmt/pack_repo.py", line 1708, in _abort_write_group [12:10] self._pack_collection._abort_write_group() [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/repofmt/pack_repo.py", line 1565, in _abort_write_group [12:10] operation.run_simple() [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/cleanup.py", line 136, in run_simple [12:10] self.cleanups, self.func, *args, **kwargs) [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/cleanup.py", line 166, in _do_with_cleanups [12:10] result = func(*args, **kwargs) [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/repofmt/pack_repo.py", line 436, in abort [12:10] self.upload_transport.delete(self.random_name) [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/transport/remote.py", line 313, in delete [12:10] resp = self._call2('delete', self._remote_path(relpath)) [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/transport/remote.py", line 181, in _call2 [12:10] return self._client.call(method, *args) [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/smart/client.py", line 59, in call [12:10] result, protocol = self.call_expecting_body(method, *args) [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/smart/client.py", line 72, in call_expecting_body [12:10] method, args, expect_response_body=True) [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/smart/client.py", line 55, in _call_and_read_response [12:10] return request.call_and_read_response() [12:10] jml: pastebin is your friend :) [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/smart/client.py", line 157, in call_and_read_response [12:10] return self._call(protocol_version) [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/smart/client.py", line 189, in _call [12:10] response_handler = self._send(protocol_version) [12:10] File "/usr/lib/python2.7/dist-packages/bzrlib/smart/client.py", line 265, in _send [12:10] encoder, response_handler = self._construct_protocol(protocol_version) [12:11] File "/usr/lib/python2.7/dist-packages/bzrlib/smart/client.py", line 241, in _construct_protocol [12:11] request = self.client._medium.get_request() [12:11] File "/usr/lib/python2.7/dist-packages/bzrlib/smart/medium.py", line 884, in get_request [12:11] return SmartClientStreamMediumRequest(self) [12:11] also, at least with a trivial branch here, I don't see the failure when creating a new lightweight checkout of a single-file single-commit branch and modifying it and committing. [12:11] File "/usr/lib/python2.7/dist-packages/bzrlib/smart/medium.py", line 1167, in __init__ [12:11] raise errors.TooManyConcurrentRequests(self._medium) [12:11] TooManyConcurrentRequests: The medium 'SmartSSHClientMedium(bzr+ssh://jml@bazaar.launchpad.net/)' has reached its concurrent request limit. Be sure to finish_writing and finish_reading on the currently open request. [12:11] bzr 2.6.0dev3 on python 2.7.3 (Linux-3.5.0-10-generic-x86_64-with- [12:11] Ubuntu-12.10-quantal) [12:11] arguments: ['/usr/bin/bzr', 'ci'] [12:11] plugins: bash_completion[2.6.0dev3], branchdashboard[unknown], [12:11] bzrtools[2.5.0], changelog_merge[2.6.0dev3], damage[unknown], [12:11] difftodo[unknown], grep[0.5.0dev], launchpad[2.6.0dev3], [12:11] netrc_credential_store[2.6.0dev3], news_merge[2.6.0dev3], [12:11] jml: so if this is a public thing, can you tar up your local checkout, and put it somewhere for us to test? [12:11] po_merge[2.6.0dev3], pqm[1.4.0dev], stats[0.2.0dev], svn[1.2.3dev], [12:11] weave_fmt[2.6.0dev3] [12:11] encoding: 'utf-8', fsenc: 'UTF-8', lang: 'en_GB.UTF-8' [12:11] *** Bazaar has encountered an internal error. This probably indicates a [12:11] bug in Bazaar. You can help us fix it by filing a bug report at [12:11] https://bugs.launchpad.net/bzr/+filebug [12:11] including this traceback and a description of the problem. [12:11] oops [12:11] sorry. [12:11] you know that thing where hitting Ctrl-C doesn't always copy because something in Ubuntu is slower than I am? that. [12:11] I had meant https://bugs.launchpad.net/bzr/+bug/1046284 [12:11] Ubuntu bug 1046284 in Bazaar "TooManyConcurrentRequests when committing to lightweight checkout" [Undecided,New] [12:11] no it's not [12:12] jam: this is a different branch (I think) [12:12] jam: chinstrap:~jml/txpkgme-configmanager.tar.gz [12:13] jml: and this is using Q with the packaged bzr? or bzr.dev? or ? [12:14] jam: packaged Q. (should I have included more information in the bug report?) [12:15] jml: I think it has enough info there, but sometimes it is easier to just ask [12:15] :) [12:16] jml: bzr status says: bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/~canonical-ca-hackers/ca-configs/txpkgme-configmanager/". [12:16] jam: oh. well. it is a branch. [12:16] jml: https://code.launchpad.net/~canonical-ca-hackers/ca-configs [12:17] are you sure it isn't private? [12:17] jam: oh yeah, it's private. [12:17] so... I can't see it then :) [12:17] jam: but not for any good reason that I know of [12:17] jml: you are welcome to make it public, or add me for analysis purposes. [12:17] jam: ah, right. you still work for Canonical, right? :P [12:17] (and then kick me out later so I don't get bug spam) [12:17] jml: I got paid last month, so I'm pretty sure I do [12:21] jam: I've subscribed you to txpkgme-configmanager. Let me know if you need more access. [12:22] jml: I can see it, and I can confirm that 'bzr diff' gives me a failure [12:25] cool. [12:42] jml: ok, I think I've figured out the bug [12:42] I'm not sure why the ordering is this way [12:43] but essentially, the _iter_files_bytes code yields a 'call this function to get the content of the file' [12:43] however, the outer code is never calling that function. [12:43] which means the bytes of the file are still in the stream [12:43] so the next iteration goes through and says "is there another record here" and gets the file content instead of the tail of the stream. [12:49] jml, jelmer: I see why now, should be a simple-ish fix [12:50] jam: Thanks for debugging that [12:50] jam: Are you submitting a fix? [12:50] jelmer: yeah, the specific issue is that WT4 is doing list(iter_files_bytes())[0] [12:50] however, that consumes the iterator [12:50] *before* it consumes the content. [12:50] ah [12:51] so we just have to turn it into a for loop, etc. [12:51] and then think about if we have a test hole. [12:52] iter_files_bytes wasn't being used according to its spec, so one implementation did it differently (remoterepo vs local repo) [12:52] but it wasn't detected because local repo caches the contents and returns a trivial function [12:54] jelmer: interestingly, it looks like i'm the one to blame. [12:54] back in rev 4204 [12:55] well, that's nice. [12:55] jam: to be fair, we never had that behaviour until recently [12:55] jelmer,mgz: yeah it worked because we didn't actually implement iter_files_bytes as an RPC [12:56] I wrote get_file_text back in bzr-1.14.. wow. [12:56] but iters that happen to always be listiter then usage breaking when that changes kind of thing isn't uncommon [12:56] mgz: yeah, the issue is that you have to consume the callable returned as you iterate [12:56] which I think has bit us once before, but it is pretty uncommon. [12:56] ...I think those words would make sense if I'd put them together in the right order [13:00] mgz: well, I know the code and the problem, so it made enough sense to me :) [13:09] jelmer, mgz: it has been a while since I dug into the hard bits. How would you set up a test for a lightweight checkout of a remote repository? [13:10] jam: it depends a bit; for what you're hitting now I guess a blackbox test might be most appropriate? [13:10] jelmer: I'd like to do a per-wt test sort of thing. [13:11] jam: There are no tests verifying wt against a specific remote branch I think [13:11] jelmer: yeah, which I think is part of the testing hole I mentioned earlier. [13:11] jam: perhaps just add a test in bzrlib/tests/per_workingtree/ that sets up some remote branch and gets the wt to use that, if they are compatible? [13:12] jam: probably subclass TestCaseWithTransport then parametrise against classes in bt.test_server [13:14] ReadonlySmartTCPServer_for_testing should do, can then operate on branch locally the check it out, and make some tree changes, and diff [13:15] mgz: well, I only need to call 'wt.get_file_text()' with a backing of a remote repo, so 'dif' isn't necessary [13:15] (it is also why commit fails, etc.) [13:15] doesn't seem like per_workingtree has any remote tests [13:15] well, I'm guessing, I didn't try to commit to a branch that isn't mine :) [13:15] right [13:32] so there's `bzr deleted` and `bzr renames`; is there anything like `bzr modified`? [13:33] I'm looking for something nicer than bzr status -S | horrible-shell-hacking-here [13:34] idnar: what would be calling that? [13:35] I want to open all modified (and added, for that matter) files in my editor; so something like gvim -p $(bzr blahblah) would be my usage [13:35] it's not too important, I was just wondering if I missed something easy [13:46] hm, so writing shell is probably no worse than using the python bzrlib api or a plugin [13:47] ls is more the interface intended for that. [13:49] odd, ls seems to be showing me ignored files by default [13:50] and lots of files that are not in fact modified... [13:50] Hm, I thought ls had --modified and --deleted and such. But the help doesn't list them. [13:51] idnar: so, that's probably what you want, you might just need to submit some patches to fix it first :) [14:42] bzr: ERROR: zlib.error: Error -3 while decompressing: incorrect header check trying to branch a local git repo to bzr [15:12] What are pros and cons of creating bzr repo in non root user space [15:14] hariom: I don't know exactly what you mean, but I can't think of any reason you'd want to do it. [15:15] micahg: is that a bug report or an observation? [15:15] mgz: it's an observation, I'm happy to file a bug report if appropriate :) [15:15] google was not forthcoming with a matching bug report [15:16] without traceback context (see .bzr.log) it's hard to suggest anything [15:17] mgz: http://paste.ubuntu.com/1187398/ [15:18] generally errors from zlib mean a data file has been corrupted, but branching from git (which doesn't use the same mechanisms) might mean it's a dulwich bug or something [15:21] * micahg wishes he knew the equivalent of bzr check for git [15:22] right, was going to suggest that, but also don't know it [15:24] could set BZR_PDB=1, repeat the operation, step up the stack trace a bit and see if the packfile looks sane [15:35] micahg: either way, a bug report against dulwich would not hurt [15:37] would the bzr check equivalent be git fsck, maybe with --full and/or --strict? [15:39] gmarkall: ooh, thanks === abentley is now known as abentley-lunch [16:31] mgz: consistency check finished, checkout still failed, I guess a dulwich bug it is then === abentley-lunch is now known as abentley [18:24] oh, pants [18:24] how do I cancel a pqm run... [18:27] sudo make me a sandwhich [18:27] I fear that won't work. [18:27] sandwich then [18:27] and it's past the merge step to renaming the branch from under it is no good. [18:28] ...I don't have rights to uncommit from bzr.dev so can't fixup afterwards either [18:29] land the reverse patch. [18:29] uncommit on public branches is evil anyhow. [18:29] how much will webops hate me if I ask them to kill the process on whatever machine bzr's pqm runs on these days? [18:29] well, thats what I meant by sudo :P [18:29] the merge will work, it's just targetted at the wrong branch, so will confuse the history [18:29] its a fairly routine request - is it mid test run ? [18:30] yup, [18:32] thanks lifeless. I really must let launchpad load the diff before sending these routine things to land. === deryck is now known as deryck[afk] [18:57] http://doc.bazaar.canonical.com/beta/en/admin-guide/simple-setups.html#using-a-restricted-ssh-account-to-host-multiple-users-and-repositories [18:58] so my coworker decided to use that link to restrict access to our dev server so... "outsource workers"? could work on a project with us, but I can't even do a simple "bzr whoami" [19:09] shnarf [19:11] chinoto: why would you want to run `bzr whoami` on the dev server? [19:12] and what exactly is the problem you're having? [19:16] well I wanted to run "bzr update", but it didn't work so I decided to try a simpler command and saw whoami [19:20] we have lines like this in '.ssh/authorized_keys' [19:20] command="bzr serve --inet --allow-writes --directory=/home/bzr/repo",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...= XYZ [19:20] and I tried to do 'ssh bzr@dev.ffusa.net "bzr whoami"', but it just blinked at me... [19:29] chinoto: you misunderstand how that ssh authorized keys stuff works - it means you cannot run commands on the server, so of course ssh host command does not work [19:33] perhaps it isn't misunderstanding, but not understanding in the first place :3 [19:42] so I'm guessing this means I can only interact with the server through local bzr commands (eg 'bzr log --line :parent'). in order to update the server's working tree I would have to ssh in as a different user and do 'sudo -u bzr bzr update'? [19:43] if you have a working tree [19:43] servers generally don't [19:43] well we do [19:43] you may want bzr-upload for publishing a website, for instance. === deryck[afk] is now known as deryck === mwhudson_ is now known as mwhudson