/srv/irclogs.ubuntu.com/2011/05/09/#bzr.txt

=== AuroraBorealis is now known as aurora|shower
=== spiv changed the topic of #bzr to: Bazaar version control <http://bazaar.canonical.com> | try https://answers.launchpad.net/bzr for more help | http://irclogs.ubuntu.com/ | Patch pilot: spiv
pooliehi all06:16
pooliehi spiv06:16
aurora|showeri figured out my problem if its reveleant06:23
aurora|showerturns out it was using a ssh.exe using my PATH on windows, which was one that was used by git (irony?) and for some reason git's copy didnt work with it, so i uninstalled git and it works ifne06:23
vilahelllo !07:36
=== gthorslund_ is now known as gthorslund
=== hunger_ is now known as hunger
jelmerhi jam, vila10:19
jamhi jelmer10:19
jelmerjam: is there an easy way to trigger regenerating a particular index?10:33
* jelmer is looking at bug 41343010:33
ubot5Launchpad bug 413430 in Bazaar "ShortReadvError on index file" [High,Confirmed] https://launchpad.net/bugs/41343010:33
jamjelmer: no10:34
vilahey jelmer !10:34
jamindexes can contain data that is not stored in the .pack file10:34
jamsuch as the file_id, revision_id associated with the content10:34
vilajelmer: I use a script that deletes a .pack and its indices here10:35
vilajelmer: there are complications in same cases though (especially if you have uncommitted changes)10:36
jelmerjam: ah10:36
vilajelmer, jam: We should fix that in the next format...10:37
jamvila: we looked into it with the last format, but it bloated the size of .pack by about 10-15%10:37
jamfile_ids and revision_ids are not very compressible10:38
jamso if we could shrink the indexes by ~ as much as we bloat the .packs then maybe10:38
vilajelmer: lp:~vila/bzr/697815-repair-repo was my last attempt10:38
vilajelmer: may be out-of-date as a proposal but I think the script is still the same as the one I use10:39
=== jdobrien is now known as webm0nk3y
=== mbp_ is now known as poolie
jamvila, jelmer: I need to get some feedback about WT and TreeReference implementations13:18
jelmerjam: Hi13:18
jamjelmer: so the source of the issues13:18
jam1) I wanted to change the tree.iter_changes() code13:19
jamso that revert would do wt.iter_changes(wt.basis_tree()) instead of wt.basis_tree().iter_changes(wt)13:19
jamthat turned out to reveal a bug wrt TreeReference13:19
jamspecifically, WT.iter_changes(wt.basis_tree()) (used by 'bzr status') auto-detects when a file becomes a TreeReference13:20
jamsorry, when a *directory*13:20
jambecomes a TreeReference13:20
jamhowever, WT.inventory does not13:20
jamso WT.inventory.iter_changes(WT.basis_tree().inventory) was failing on tests about TreeReference13:20
jam2) I did a simple fix, to change WT._generate_inventory()13:20
jamso that it would see new TreeReferences13:20
jam3) There was some fallout for code paths that assumed this didn't happen13:21
jammostly around the split code13:21
jamFor example, WT.extract() was grabbing self.inventory[subdir_id] and passing that into a the new Inventory for the created subtree13:21
vilajam: well, AIUI, TreeReference implementation has never been completed, so I'm not surprised there are bugs there13:22
jamI can fairly easily move the Inventory creation logic before the new subtree is created13:22
jamvila: sure, I'm just trying to figure out how to fix it enough13:22
jamto land my revert improvements13:22
vilaok13:22
jamwithout leaving things as horribly kludges when I'm done13:22
jam(horribly kludged or horrible kludges, take your pick :)13:23
vilajam: target less horrible kludges ;)13:23
jamWhat is happening now13:23
jamis that I create the new subtree inventory ok13:23
jamI create a parent tree that doesn't have the subdir in it anymore (which suprised me, but ok)13:23
jam(it was how the code did it)13:23
jamBut when it goes to update the working inventory it breaks13:23
jamthis is because the dirstate blocks themselves still have the old directory *and its children* recorded13:24
jamWT._generate_inventory just skips subdir blocks that didn't have a parent *directory* read13:24
jamand TreeReference isn't a directory13:24
jamso that mostly worked13:24
jamI think now I have to go back and when I see a directory become a TreeReference (in _generate_inventory), I have to update the dirstate to let it know13:24
jamI'm hesitant, because it loses track of child identities13:25
jambut I think that is what 'bzr status' does today13:25
vilahmm13:25
vilaI'd start by adding tests myself :-/13:25
jamvila: except you can't really add a test if you don't know the *desired* behavior13:26
vilaTo at least demonstrate your diagnosis is correct (the added benefit will be to quickly get failing tests when you start changing the behavior)13:26
vilajam: I meant, starting from a pristine bzr trunk, add tests about the cases you're unclear about13:26
jelmerjam: what do you mean with "it loses child identities" ?13:27
jamjelmer: A TreeReference has no .children attribute13:27
jamso the recursive subtree that used to be versioned under the Directory all disappears13:27
jelmerjam: Ah, I see.13:27
jamconsider Tree/A/B/C13:27
jamif A becomes a subtree13:27
jamB and C were versioned, but now are missing13:27
jamso "bzr init A; bzr status; rm -rf A/.bzr/; bzr status"13:28
jamwhat *should* that do?13:28
jamat the moment, it actually treats the final 'bzr status' as not modified13:30
jambecause while it detects a TreeReference, that is never written back to disk13:31
vilafirst status says nothing, second one says unknown for A ?13:31
vilahmm, no13:31
jamvila: bzr init A says "unknown: a/.bzr/"13:31
jamsecond says nothing13:31
jamneither talk about A/B or A/B/C13:31
jamI'm pretty sure it is a bit borked13:32
jambut as I said, I don't want to fix all of TreeReference today13:32
jelmeryeah, that seems wrong13:32
jamjust get my revert landed13:32
vilaright, first says A unknown (while more or less realizing it's a TR not a dir), second one... should also says unkown, realizing A is a dir13:32
jamjelmer: so in the Extract case, it deletes the "A" from the parent inventory, and then calls self._write_inventory(new_inv)13:32
jamwhich then tries to build a TreeDelta13:33
jamwhich then sees that we now have a TreeReference there (it calls _generate_inventory again)13:33
jamand builds an inventory delta saying "delete the tree-reference at A"13:33
vilajam: you don't have to fix all the TR bugs, but landing a change in their behaviour withoutknowing whether or not you introduce new bugs.... >-/13:33
jamhowever, the dirstate file says, ok, I'll delete A, but not all of its children, because it doesn't have any13:33
jamand then "oops, you asked to delete a directory but not its children"13:34
jamvila: I don't really care13:34
jamwe don't support them now13:34
jammy changes won't make them any more supported than the existing tests13:34
vilabut they could make them less supported, that's the point13:34
jamI don't have to make things better for TR, and I feel comfortable making it slightly worse13:34
jampeople are welcome to file bugs which we can respond to with regular priority13:35
jelmerWe're not sure the way tree references work in working trees are necessarily the right way, are we?13:35
jam*right now* it has taken me 3+weeks to land a simple "bzr revert" takes 5s instead of 5min13:35
jamjelmer: *I'm* certainly not thinking the current behaviour is "right"13:35
jamvila: my original fix is *quite simply* a 1 line I' know it is correct change13:36
jamchange basis_tree.iter_changes(tree) to13:36
jamtree.iter_changes(basis_tree)13:36
jamand swap the parameters in the next lines13:36
jelmerjam: me neither - I certainly don't think the working tree support for nested trees is complete enough13:36
jamvery straightforward, with *tons* of fallout13:36
jamvila: if there is that much fallout from just this, TreeReferences are just plain broken13:37
jamso I don't mind a little regression there13:37
vilajam: my point is that you're at least in a position to write expected failures or file bugs, if you don't that knowledge is wasted13:37
jamvila: anyone who is serious about implementing TreeReference is going to run into everything I've run into quite quickly13:38
jamand will be at a point to make decisions on it13:38
jamIMO13:38
jamfiling a "this is broken" is not a helpful bug13:38
jelmerjam: how much treereference-specific code is actually in working trees? I wonder if rather than having the current level of support it makes sense to just rip it out for the moment rather than having something known broken in there.13:38
jamjelmer: there is about 30+ occurences of "tree-reference" in workingtree* dirstate*13:40
jamit isn't particularly trivial13:40
jelmerah, hmm13:40
jamhmm.. maybe one change is to revert my change to WT.inventory13:41
jamand instead make Inventory.iter_changes(Inventory) (the generic logic) try to do the lookups13:41
jamthen at least WT.inventory would be a direct match for WT.dirstate._dirblocks13:41
jamthat's probably better13:41
pooliehi jam, vila13:45
jamhi poolie13:46
vilapoolie: hey13:46
poolievila, jam, you should join us in #ubuntu-uds-arany14:05
=== deryck is now known as deryck[lunch]
=== deryck[lunch] is now known as deryck
=== Noldorin_ is now known as Noldorin
=== Ursinha-afk is now known as Ursinha
ovnicrafthello i merge with a branch my repo was updated but i need keep the commiter name in my tree20:35
ovnicrafthow can i keep this ?20:35
ovnicrafthow commit and keep the user in my tree?20:37
maxbovnicraft: I'm afraid you're not making much sense. Can you try to describe what you want more clearly?21:09
lifelessjelmer: hi21:45
lifelessbu21:46
lifelessh21:46
=== medberry is now known as med_out
=== JasonO_ is now known as JasonO
ovnicraftmaxb, i merge my branch with another22:27
ovnicraftwhen i commit i cant see the changes with user who did it22:28
ovnicraftthey are applied with my user22:28
jdobrienovnicraft, with bzr merge?22:30
ovnicraftyes22:30
ovnicrafti use 2.3.122:30
maxbYou should look at "bzr log -n0"22:32
maxbIt is quite correct that the merge revision is attributed to you - you did it22:32
=== rvba_ is now known as rvba-afk
=== Ursinha is now known as Ursinha-afk

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!