=== marienz_ is now known as marienz [00:32] Hi, gang! I'm in the process of learning / trying Bazaar. My background is Git, so I'm trying to reformulate my Git habits with Bazaar. One thing I miss is, having many branches over a shared repository, seeing them all at once (a bit like I do with gitk). Any hint or idea? [00:33] bazaar explorer can do that [00:33] which is the GUI written in qt4 [00:33] I start it at the level of the shared repository? [00:34] are you using it right now? [00:34] Yes. But I'm pretty new to all this, so you might have to take me by the hand a bit :-). [00:34] so you just go to "open exisiting location" [00:34] and open up the shared repo [00:34] and it should list all the branches that are under it [00:35] (I have to find the equivalent translation for the terms you use. Maybe I'll restart explorer with the English locale. A minute! :-)) [00:37] Do I open the top-level .bzr? [00:37] http://i.imgur.com/uMX4l.png [00:37] that button [00:37] in bazaar explorer [00:37] no you just open the folder that "is" the repositiory [00:37] (that has the .bzr folder ) [00:38] You're quick! :-) [00:38] I then get a list of branches. [00:38] yeah [00:39] there might be a way to do it via the command line too [00:39] But now, I would like the common DAG. [00:39] I mean, the graph from with which I could see all branches. [00:39] All DAGs of all branches combined into a single DAG. [00:40] That would allow me to visually have an idea of how the branches are inter-related, the amount of commonality between them. [00:40] DAG? [00:41] (Directed Acyclic Graph) I mean, the drawing full of circles (one per commit) and the lines showing the parental relationship between them. [00:41] This is at least shown with "bzr viz" and "bzr qlog". [00:41] http://i.imgur.com/3jZfM.png [00:41] you mean that? [00:42] Yes, exactly. Currently, I can only see one branch at a time. [00:42] well i think you only see stuff related to that branch [00:42] like in the screenshot [00:42] thats just one branch (the main one) [00:42] but you can see other branches were split off and were eventually merged back into it [00:42] I would like to see all branches at once, and where various branches fit in that dag. Like with gitk. [00:42] (if you know it) [00:43] so it only shows the other branches if it got merged back into [00:43] the branch you are looking at [00:43] but i dont think there is something like what you are talking about, which i think is the github like view [00:43] which is a shame cause it would be awesome to have :< [00:44] Hmph! I thought about merging branches randomly before examining them, but that's not negligible overhead, both human and machine. [00:44] but yeah, unlike github (and i guess whatever else) it doesn't show the other branches if they haven't been merged back [00:45] If I have many branches, and do not know how they relate to one another, there would be a lot of exploratory work and comparison to get the overall picture. So I wondered if there is any (easy) tool for that. [00:45] https://github.com/a-musing-moose/morph/network [00:45] is that what you mean? [00:45] what you want at least [00:45] Because one needs the overall picture *before* merging. [00:47] but is that what you are wanting ^ like the github network grapbhs [00:47] Yes, that GitHub graph shows it in some way, yet the graphics is not as clever as gitk, and the tips are a bit randomly selected (GitHub explains somewhere its algorithm). [00:47] i dont think there is a tool that does that currently [00:47] bzr viz does it nicely (more nicely than GitHub in my opinion), but a single branch at a time. [00:48] but it would be really nice to have one. is there an paper on how they do that? cause it would be an interesting feature to work [00:48] in [00:48] on* [00:48] OK. I just wanted to ask here. [00:48] qlog can show multiple branches at once... [00:48] can it? [00:48] I studied Git a bit deeply, years ago, it is quite simple internally. I do not know the internals of bzr structure. Do you know if there is a document about it? [00:49] i have no idea, but i probably should ask since i'm messing around in the code haha [00:49] Git is simple enough that I understand how it is possible to merge all branches in a single place. Bazaar, I do not know. [00:49] I'm slower than you. Let my try qlog. [00:50] Oh, before going further, "bzr explorer" does not show graphs, does it? [00:50] graphs? [00:51] The circles and lines, like you showed me in one of your (blazing fast) screenshots. [00:51] Hey hey! "bzr qlog" does it, if I start it above branches! :-) :-) [00:52] yeah [00:52] bazaar explorer has a "log" button [00:52] and that starts qlog [00:52] Oh, thanks for this bit of info! Nice. [00:52] and oh crap it does. nice work whoever makes bazaar explorer hehe [00:53] Another question, which may look like a criticism, but I do not mean it that way. [00:53] A lot of what Explorer does is just launch other q-commands. [00:55] and yeah, it works with multiple branches. i think this is what you want: http://i.imgur.com/8vgwm.png [00:55] I compared "bzr viz" and "bzr qlog" a bit. Both are slow, but in a different way. "viz" preconditions its work, and is reasonable afterwards. "qlog" starts faster, but crawls more and more if I keep opening branch expansions. I guess it abuses the graphical toolkit. (Maybe both do). Is there any trick to know to regain more speed, with either of them? [00:55] probably not. its probably just the code being a bit rough i guess [00:55] dunno about 'viz' but qlog uses qt4, which is in c++ so qt4 isn't slow [00:55] Exactly what I want. It allows me to get an overall idea of the interrelation between branches. [00:56] Well, if *all* tens of thousands of commits are drawn all at once, even a C++ program would crawl. Normally, the drawing shold open lazily around the visible part of it. [00:56] viz is gtk [00:57] gtk, qt4, are likely both C or C++. Oh, you mean, with a Python wrapper or not? [00:57] * fullermd doesn't know that he'd classify qt4 as 'not slow' :p [00:58] bzr viz opened up in like a few seconds and drew the graph in 5 seconds [00:58] which is pretty good considering the number of revisions... [00:58] For small graphs, it likely does not matter. The repositories I'm playing with have many tens of thousands commits. [00:59] I guess there is not much to do, but I do not know that much about Bazaar, so I thought that I might ignore some tricks :-). [00:59] the bazaar trunk branch has 37,890 revisions soo [01:00] AuroraBorealis: Amusing nick! :-) [01:00] so i feel thats a fair number =P [01:00] amusing D: [01:00] and bzr viz is kinda crappy, you can't resize the columns so they dissapear to where you can't see them... [01:01] You say, 5 seconds for 30000 commits? Nice indeed. I got the impression that qlog quickly gets slow (hmph, pun not intended) if I keep expanding merges. [01:02] Thanks a lot for helping me on these things, and not bashing me over my newbeeness! [01:03] hehe [01:03] i mean im playing with the qlog graph [01:03] and i see that some expansions are slow but its not unusable [01:03] i mean, if it takes half a second to expand then...thats fine xD [01:04] I should confess I've been rotten by Git, which is instantaneous in most circumstances. [01:04] lol [01:04] But then, after the expansion (which is fast) the scrolling crawls. [01:04] i mean every program can always be faster [01:04] its usable for me, but then again i have a pretty good video card so i dunno =P [01:05] The machine I use, while not being so slow, has a few years already. It could also be part of the problem. [01:06] So far, Bazaar has been reasonably fast. I was expecting worse (because of what I read). One thing which surprised me is that Bazaar repository compression is as good as Git. [01:06] yay! [01:07] How does garbage collection go in Bazaar? [01:07] garbage collection? [01:08] Suppose I have a share repositoy, and in one branch, I "bzr add" many movies :-). Then I scrap the branch. How does the space taken by the movies, in the respository, gets reclaimed? [01:08] i am not sure. [01:08] icule: are you suggesting they should be removed from the history? [01:08] someone more knowledgeable then me will have to ask hehe [01:09] well if he just deleted the branch [01:09] is what i think he means [01:09] Kamping_Kaiser: Should it not? [01:10] In my understanding, if there is no branch, and no tag, reaching a set of commits, there is no need to retain the space they describe. [01:10] i've not worked with shared repositories, so don't know how they behave [01:11] Kamping_Kaiser: You never work on more than one branch at a time? [01:11] Is there a formal bzr command to get rid of a branch? [01:11] correct. on the rare occasion i have multiple branches i simply branch again [01:12] I tried this exactly, a few hours ago, and the repository seems to be automatically shared. [01:13] (Given you used init-repo to start with. This is the natural thing to do if you intend to branch many times, so I think.) [01:13] here seems to be [01:13] http://doc.bazaar.canonical.com/bzr.2.4/en/user-reference/remove-branch-help.html [01:13] remove-branch [01:14] AuroraBorealis: Thanks! You're the king of the screenshot, my friend! :-) [01:14] I should learn to imitate you. Should get a bit more speedy on the mouse, I guess :-). [01:15] hm, remove-branch. guess i have used shared repos then, in some sense (the sense that i removed a lot :p) [01:15] well thats the actual documentation page hehe [01:16] brb~ [01:16] I tried "bzr branch" on unrelated places. There is first the stream of commits, and in a second phase, the building of the file tree. If I "bzr branch" in a neighbouring directory in the same "init-repo", the stream of commits is nearly instantaneous, it immediately switches to the tree extraction. [01:16] brb~ ?? [01:17] May I ask another question. If you reply, you encourage me to ask more. That's your fault! [01:18] just ask, if he/she/it can reply (or someone else can reply), they will [01:19] Suppose we have a "master" repository and we branch out of it. When we merge back, the version numbers get a bit more complicated, and this is later reflected in other branchers. Now, let's presume we *loose* the master repository. We restore it from one of the copies. Is there a way to "renumber" or "simplify" the version numbers then? Or do they get forever dirty? [01:20] (OK, dirty is a bit strong. Let me say "compound without reason".) [01:20] Numbers are dependent on the head. If the head is the same, the numbers are the same. [01:21] fullermd: Maybe my fear is unjustified. I'll have to experiment more to get a more firm idea. It's more intuition than knowledge right now. [01:22] http://wiki.bazaar.canonical.com/MatthewFuller/SpotDocs/RevNumbering [01:23] fullermd: Thanks for the link. I read a lot of pages today, but I do not remember having seen this one. [01:23] OK, thanks again everybody. It was a pleasure to meet you. Have a good end of day! [01:24] The other stuff under http://wiki.bazaar.canonical.com/MatthewFuller/SpotDocs may also be useful to you. In particular, PiecesInBrief talks about terminological usage, which differs somewhat among different VCSen. === marienz_ is now known as marienz [02:07] When using "bzr git-apply ../00*", all patches that have multiple lines in the message, when afterwards shown in bzr log, end up missing two newlines between the first (subject) line and the rest (body). [02:08] I'm on Debian stable, bzr 2.1.2. Has this been fixed, or is my interpretation wrong? [02:13] Ah well, and it doesn't apply the changes at all. [02:13] ive never used git-apply o.o [02:21] So, this alternative actually almost worked: bzr fast-export-from-git foogit/.git exportfile && mkdir foobzr && cd foobzr && bzr init && bzr fast-import ../exportfile [02:22] what are you trying to do [02:22] The only thing is it uses the git committer time for patch times, and looses the git author times. [02:22] I've previously converted a bzr repo to git, worked on it, now trying to bring my work back into bzr. [02:23] i dont think you are meant to use fast import/export repeatedly :3 [02:23] well, the bzr history has been kept identical. [02:24] Only thing that bothers me a bit is that my author times are lost. [02:24] might be a bug with the git things [02:24] i dont use git with bazaar so i cant say [02:25] I'm pretty sure bzr doesn't have multiple timestamps... [02:26] I'd like to have a flag to tell it "use my author times, not committer timestamps as bzr timestamps" [02:27] Are bzr timestamps changing if you rebase or cherry-pick (well that's git terminology..) patches? [02:27] i thought bzr really isn't meant for..cherry picking [02:27] They're set when a revision is created, and fixed afterward. [02:28] Whether rebase copies over the timestamps to the new revs, I dunno. For rebase-ish operations, I think I'd guess no... [02:28] But that's implementation detail, not fixed. [02:29] Can you create a patch file with everything and apply it afterwards? (like git format-patch and git am) [02:29] with everything in a commit [02:29] That sounds like the territory of merge proposals and bundles. === medberry is now known as med_out [05:59] Is there a way to specify excluded files/paths without specifying -x infront of each of them? === Quintasan_ is now known as Quintasan [06:00] put them in .bzrignore? [06:12] nah.. can't you just specify them with one -x??? [06:12] comma separated? [06:12] something? [06:12] im not sure [06:12] never used that before [06:14] And .bzrignore is unrelated to [ci] -x. [06:26] hi all ! [06:26] poolie: ping ? [06:26] hi vila [06:26] \o/ [06:27] I'd like to discuss about library_state [06:28] the scope is unclear to me at the moment as is the intended use, [06:29] do we intend to support threads ? Recursive calls ? [06:30] Which kind of global do we expect to add ? (Apart from the comment saying none should be added) [06:32] "Accessing the current BzrLibraryState through this variable is not encouraged: it is better to pass it around as part of the context" puzzles me, [06:32] oh hi [06:33] sure i'd be happy to discuss that [06:33] passing the state around ? Do we want to add such a parameter everywhere (almost) ? Rely only on a few strategic objects to propagate it (branch, repo, wt) ? [06:33] the simple end of it is: there is a bunch of global state [06:34] for instance, the ui factory, hooks, etc [06:34] this needs to be initialized when a program using bzrlib starts [06:34] (and possibly closed off) [06:34] also, it is typically reset when running tests [06:34] at the moment, this is done ad-hoc for different types of state [06:35] encodings and i18n also comes to mind [06:36] right, so you describe indeed a simpler scenario: initialize the state once [06:36] but nothing about threads or possibly calling bzrlib with a new state while preserving the current one [06:39] right [06:39] perhaps eventually you'd want to have multiple threads each with separate state [06:39] that would be perhaps a clean way to allow multiple completely independent threads more safely [06:39] (each running a ui, for instance) [06:39] but that's not really on my radar at the moment [06:39] yes, i18n and encoding are good examples [06:40] similarly i don't see much urgency to do recursion except for the particular case of testing [06:40] now as far as propagating it [06:40] to start with, having just one global (the state) that points to every other bit of global state is in itself an advance [06:40] at least it's easy to switch just that and know you've reset it [06:41] obviously that wouldn't scale to threading, but as i said that's not urgent [06:41] so [06:41] by 'pass it around' [06:41] you wouldn't want to pass it to every function [06:41] we might manage to put it into eg the bzrdir, then pass that down in to objects opened off there [06:42] this tends to run in to trouble when we pass through a non-method function [06:42] yeah, that's what I meant with "strategic" objects but it's blurry at best [06:42] yeah [06:44] anyhow [06:44] ok, so, that means the "various bits of global state that are slowly being eliminated" really means the aim is to centralize first and may be, in the long term, eliminate it, but nothing I can nor should worry about right ? [06:44] right [06:44] haaaa [06:45] so, your specific thing is reading configs just once ,right? [06:45] hmm, not a haaa of surprise but of relief :) [06:45] nope [06:45] not yet [06:45] the specific bit is about bug #491196 [06:45] Launchpad bug 491196 in Bazaar "want a way to set configuration options from the command line" [High,In progress] https://launchpad.net/bugs/491196 [06:45] and how this should be shared with all stacks [06:45] so not the config files yet but kind of the same issue [06:46] there is only one instance of some dict holding the overridden options and it should be used by all stacks [06:46] short path: a new global [06:47] preferred (?) path: use library_state, but AFAICS it's not even supported by the test suite today [06:48] chicken-and-egg [06:50] oh ok [06:50] i'd so much love to see that added [06:50] should we start by filing a bug asking for library_state to be used by the test suite ? (Note that we can now debug code where stdin/stdout are redirected which should help a lot !) [06:51] so i do think that belongs in the library state [06:51] perhaps not exactly a specific concept of 'command line options' (though that would be ok) [06:51] overrides ! not options [06:51] but rather 'low priority config stacks' and 'overriding config stacks' or something [06:51] yup [06:53] so [06:53] but you realize that using a specific state for tests is a recursive use case (simpler than a general case but recursive nevertheless) [06:53] yes i do [06:53] good [06:53] similarly i don't see much urgency to do recursion except for the particular case of testing [06:53] :) [06:53] oh, sorry :D [06:53] np :) [06:54] so, i think it would not be much harder to put it in the library state than in a global [06:54] * vila nods [06:54] even-if the test integration doesn't promise to save and restore the whole state, and it only does the specific config stuff [06:54] but, perhaps it will turn out that just an overrideAttr on the library state is enough to make it work [06:55] hehe, right I always miss those shortcuts :) [06:57] hmm, I'd feel better with a bug about library_state so we can focus on some minimal stuff there without mixing that with other aspects, I'll do that unless you object [06:59] what would that bug say? [06:59] library_state cannot be used [07:00] :/ [07:00] yes it can :) [07:00] actually [07:00] by the test suite mainly, but even by code as the recommended usages are unclear [07:00] i think we can get there one step at a time by adding new stuff to it, or migrating [07:00] and since we're adding something new [07:01] i think it will be no harder than adding a global, and it may make stuff easier [07:01] so i'd like you to try it [07:01] if it turns out to cause byzantine failures, let me know [07:01] * vila scratches head [07:02] oh, you mean I should overrideAttr for tests... but only for the part I care about ? [07:02] well, i think that would still be incrementally better [07:02] than just having a global [07:02] ok, I think I see :) [07:04] thanks for the teddy bear'ing [07:04] * vila switches to make tea, lp rollout planned at 0830 UTC [07:05] * fullermd wonders what vila is adding to the tea to cope with that :p [07:05] caffeine [07:06] and other substances I'm not allowed to speak about publicly [07:06] no, I didn't even write that [07:07] stinky cheese :) [07:07] bit early for that though [07:07] my daughter was doing that when she was young ;) [07:08] Roquefort was her favorite... [07:14] vila, i'm going to go out in a bit [07:15] hi jam [07:15] poolie: it's ok, I have enough feedback [07:15] oh, did you understand my terse comment about lazr.restful? [07:15] i fixed a bug in it to do with indexerror [07:15] we would need to either release and deploy it, or run from a checkout [07:15] i could look into it next week [07:15] oh yes, I knew about that, what I don't know is how and when it will be deployed though [07:15] it will probably help the existing backoff stuff work quite a lot better [07:16] me either :) [07:16] * vila nods [07:16] but those are the main choices [07:16] 1- run from a checkout [07:16] 2- make a release, build it, backport it, cat-rebuild it, get that installed [07:16] I commented about that: 'make tea' is a catch-all, it doesn't mean we shouldn't fix every case where we can [07:16] morning poolie [07:17] poolie: I prefer 2 despite 1 giving better control [07:17] hi vila [07:17] jam: _o/ [07:18] poolie: the aim should still be to be able to control the imports without ssh access, so the less specific bits we maintain ourselves, the better [07:19] poolie: and I deal with my own contradictions on the topic ;) [07:20] vila, ok so then the next step is for someone to make a tarball release [07:20] either you or i, or we moan at someone from #launchpad to do it [07:20] since this is only the first step of a bunch of changes perhaps it's easier to just do it [07:21] that package has so much weird stuff for its size i don't anticipate the release being trivial but perhaps it will be [07:22] poolie: please do :) [07:36] http://egbg.home.xs4all.nl/counterscript.html ftw ! Just got a telemarketer hang up *during* the 2nd question ! [08:51] make tea experiment failed (due a minor bug, I have a fix): the circuit_breaker failed to access the db [08:53] ~100 failures will be retried shortly [08:54] the first failure was unknown: bzrlib.errors.UnknownErrorFromSmartServer: Server sent an unexpected error: ('error', 'xmlrpclib.Fault', '') [08:54] I've added it to the known transient ones [08:55] two more imports failed with the same error [08:55] the following ones were lazr.restfulclient.errors.HTTPError: HTTP Error 500: Internal Server Error so covered by the next lazr deployment (poolie you confirm?) [09:05] ha, poolie is gone, nm [09:11] I'll monitor again during next rollout currently planned next Tuesday 0830 UTC [09:28] all transient failures has now been re-processed, so we recovered in one hour only, with some manual prodding, still better than the several hours previously needed (less failures though) [09:33] testing my fix right now (found a way to trigger the faulty code path without shutting down launchpad ;) [09:41] test successful, ready for next rollout [10:34] is there any way to tell if a plugin is being run from the smart server rather than the bzr client? [11:09] briandealwis: how do you mean? [11:30] jelmer, briandealwis: I think he means something like bzr-email. Is there a way to tell that the server-side hook is running and causing the email to be sent, rather than the client. [11:31] I don't know of any sort of generic way. [11:31] You could always disable the client plugin with "BZR_DISABLE_PLUGINS=pluginname" [11:37] jam: I actually have a plugin (just polishing and will then announce) and wanted to alter the plugin's behaviour if it's running within the server [11:38] briandealwis: so you mean can you tell from-within-the-server [11:38] you could tell based on the URL you are working on [11:38] whether it is a local or remote one. [11:38] though it would be local if bzr client was working on local branch too, right? [11:38] briandealwis: yes [11:39] though I wouldn't be surprised if you wanted that [11:39] depending on what you are doing, you could just check hostname [11:39] "socket.gethostname()" [11:39] I don't know how specific this is to your system. [11:46] jam: I'm polishing up a "reflog" plugin for bzr. I want to record the action that changed the tip though (e.g., pull, commit, uncommit), but that info isn't available from the post_change_branch_tip hook. So I'm currently hooking the other branch hooks, but those aren't sent on the smart server. [11:47] Maybe I should just change the bzr source to provide a reason the ChangeBranchTipParams [11:47] briandealwis: That would make more sense, though the layering might make it a bit tricky. As noted, though, it does sound like you want that to run for clients as well as on the server. [11:47] Since probably 90% of the time the server side is "pushed" :) [11:48] exactly [11:49] a separate question: how do I specify an encoding when requesting or writing a file through a transport? [12:05] nm, I didn't realize I needed to encode and decode lines explicitly [12:14] briandealwis: yeah, content is binary [12:14] get_bytes/put_bytes [12:14] thanks === med_out is now known as medberry [13:35] jam: hi [13:35] hey [13:36] jam: thanks for that review. In general, I was going for minimal impact with that foreign-branch-tests-pt-6 branch. [13:37] jam: You're probably right that we should do some refactoring [13:37] jam: I think a .is_initializable() would make sense; do you know if there's any particular reason assertInitializeEx doesn't just raise TestNotApplicable itself? [13:38] jelmer: assertInitialize ? [13:39] jelmer: found it [13:39] I think it should just raise TestNotApplicable [13:39] it would clean up a lot of other code, too [13:39] I'm guessing it was before we had NotApplicable [13:39] where there was a debate between SKIP being used for a test that is missing a dependency [13:39] (a test you could make pass somehow) [13:39] and NotApplicable meaning never-will-happen [13:40] jam: ah, fair enough [13:40] vs just passing the test because it wasn't something you could fix [13:40] ever [13:40] jelmer: if you look at the code, all the code paths have "if control is None: return" [13:40] and you can get rid of all that boilerplate by raising the exception. [13:41] jam: Well, that's what I thought. But I also figured whoever wrote it probably was doing that for a good reason :) [13:41] I think I forgot there was a time when we didn't have TestNotApplicable [13:44] jelmer: yeah, that was quite a while ago :) [13:45] jam: Thanks, I'll have a look at raising TestNotApplicable and introducing .is_initializable() [13:45] jelmer: of course, all of those lines were recently copied by you, so it is a bit hard to see how old they are :) [15:27] I'm honestly surprised nobody's registered bzrhub.com yet [15:42] * vila runs [15:47] * jelmer counts further down.. 28 failures left :) [16:04] jelmer: \o/ === beuno is now known as beuno-lunch === beuno-lunch is now known as beuno [19:39] yo what's up, http://codepad.org/bU40nmSJ [19:40] hi exarkun [19:40] exarkun: you need a newer version of bzr-fastimport that matches your bzr [19:41] How do I know what version of bzr goes with what version of bzr-fastimport? [19:42] exarkun: generally speaking, newer versions of bzr-fastimport will work with bzr >= 2.0 [19:44] r313 of lp:bzr-fastimport fixes this particular issue [19:46] Thanks, I think that worked [19:48] I think I did my fast-import-filter wrong though [19:48] How do I remove one directory from history? [19:49] I have /master/ and /support-master/ and I want to get rid of /support-master/ [19:49] I tried -i master/ but that dumps all of master/ into / [19:50] exarkun: perhaps -x ? [19:50] though I should note I don't have much experience using fast-import-filter [19:51] oh right, I should have re-read the docs after upgrading. [19:52] yea, -x works just right. thanks.