#monotone 2010-04-23

Logs Channels Help Search ←Prev date Next date→ Help


TimeNickMessage
00:13 zwol left
00:18 _4get left
03:13 _4get joined
03:27 zwol joined
04:19 MichaelRaskin joined
04:47 _4get left
04:49 _4get joined
05:25 zwol left
05:45 MichaelRaskin left
05:45 MichaelRaskin joined
06:23 tommyd joined
06:30 Guest976 joined
06:31 _4get left
08:28 MichaelRaskin left
08:28 MichaelRaskin joined
08:29 thm tommyd: births and marks could be exposed, (and marks are alreay via get_content_changed), but node ids probably should not, because they are strictly local
08:56 tommyd thm: I played around with it yesterday and splitted get_manifest_of in get_current_manifest which has the same output format like the current manifest and works only in a workspace
08:57 tommyd ...and a get_manifest function which needs an existing db revision and which has the "extended" format with all the marks and ids
08:57 tommyd I did this because get_roster tends to crash when used in workspace mode f.e. if you have new, uncomitted files
08:58 tommyd but another option could be of course to fix get_roster so it does not crash and use the same format for both functions
08:59 tommyd the nice thing about that is that we then have a consistent API, i.e. get_current_{manifest,revision} and get_{manifest,revision}
08:59 thm yep.
08:59 tommyd I agree that node ids should not be part of the output
08:59 thm and I'm undecided whether sizes should be part of the manifest
09:00 thm it would be really nice information to have
09:00 tommyd well, sizes should be part of the roster
09:00 thm not necessarily
09:00 tommyd and since a manifest is basically a "masked" roster nowadays...
09:00 tommyd where would you put them?
09:01 thm sizes could be stored in a separate table
09:01 tommyd but I'd still love to get them with all the other information, i.e. marks
09:02 tommyd it hurts performance if you need to iterate over a list of files just to get a single piece of information
09:03 tommyd we could still then have some get_file_size FILE_ID function to _just_ get the file size of a particular file
09:03 thm and how would you implement that?
09:04 tommyd I haven't looked at the regnerate_rosters code yet, but I hope one would get the hands on the file blob there and would do a strlen() there
09:04 tommyd this could be optimized of course by only touching those files which actually changed their content
09:05 thm no, I mean for fetching the size of a single file, you have to create its blob then
09:05 tommyd naturally the size of a file item could belong to a roster entry, just as its name and attributes
09:06 thm no, that's wrong, because the size is directly coupled to the content hash
09:06 tommyd right, I'd have to create the blob
09:06 thm whereas name and attributes can change
09:07 tommyd sorry, telephone, brb
09:07 thm but of course presentation and implementation are different things. I agree that we want to see files sizes as part of the manifest.
09:13 tommyd its correct, the size is coupled to the content hash - so you'd propose a new fileid - size relation table?
09:13 tommyd to store these data normalized?
09:13 thm that's what I thought about, yes.
09:14 tommyd I mean I'd probably just repeat the same size for each file entry over and over again for each roster
09:14 tommyd but isn't that what we do for birth marks as well?
09:14 thm which wouldn't hurt, because we store roster deltas
09:14 tommyd its a cache after all
09:15 thm it's a question of use cases, and maybe manifest-with-file-sizes is more often used than a query filesize(content_id)
09:16 tommyd I'd think so
09:17 thm so, expanding the roster for this field is probably the way to go.
09:18 tommyd but I have to admit that I haven't looked at all yet into the implementation - if its easier to have a separate table and to build a custom "manifest" format for automate usage based on the roster and the data from this table...
09:19 Guest976 left
09:20 tommyd but anyways, I'll have a closer look at this at first
09:20 tommyd for my indefero interface I'm about halfway through and now stuck in their getTree() implementation
09:21 tommyd to return all their wanted data currently I'd need to call get_manifest_of once and then for each node get_content_changed and certs (cached, of course)
09:21 tommyd and the worst thing - to get the file size, I'd need to call get_file_of and calculate the file size myself
09:22 tommyd this would get all too much time consuming and slow
09:27 thm this is exactly what I'm doing in the trac backend
09:27 thm and yes, it is slow ;)
09:28 tommyd its always good when one technology pushes another
09:28 tommyd if I wouldn't have started with indefero, I'd probably not keen to touch the roster code at all
09:29 thm btw, what I don't like about the marks is that, if you are on a marked rev, you have to query the parents for their marks
09:32 tommyd I have to admit that I don't quite understand some parts of that yet - one is in which cases a file can have two content marks
09:33 tommyd I guess this happens in merge revisions, right?
09:36 _4get joined
09:36 tommyd i.e. starting from a merge revision there could be one mark iff the file did't change in a previous fork or two marks if it changed in either branch of the fork
09:39 thm er, can we really have more than one content mark?
09:40 thm wouldn't that lead to a content conflict which has to be solved somehow and leads to the merged revision being marked itself?
09:44 tommyd thm: I wondered that myself as well - but the marker structure defines the content mark as set of revision_ids
09:45 tommyd but while I ack'ed through the code I could only see single insertions in this set
09:45 tommyd but the get_content_changed command is supposed to return more than one content_mark
09:47 thm as far as I understand that, this can never happen
09:47 thm maybe I need to grep through the database...
09:47 tommyd while we're at it - under which circumstances can it happen again that there are no content marks for a file id?
09:48 tommyd (shouldn't there normally also not at least the birth revision be displayed?)
09:48 thm shouldn't happen either...
09:49 tommyd I guess we surely have an understanding problem here
09:49 thm did you see such a case?
09:50 tommyd I remember I had a weird error case once in guitone where no content_mark was returned - let me check again
09:50 thm mtn get_roster 276264b0b3f1e70fc1835a700e6e61bdbe4c3f2f shows identical birth and mark entries
09:52 tommyd ok, no, I was wrong, I hadn't such a case - I actually have an invariant there that at least one revision is returned from get_content_changed
09:53 tommyd I'll ask that on the list
09:53 thm so, <1 shouldn't happen. >1 shouldn't happen either, but could once we have 'dormant' files.
09:55 thm remember we were discussing problems of letting diediedie die? in that case we would have to deal with files with unresolved conflicts being resurrected, and the roster entries for these files could have more than one content mark
09:55 tommyd the last dev which picked up the topic was Stephe and he didn't finished it back in the day
09:56 tommyd I doubt we'll ever get rid of die-die-die
09:56 thm actually I'm thinking about it once in while.
09:56 tommyd but when did you commit your last code again...? ;)
09:57 thm yeah, hit me with a stick.
09:57 tommyd nah, at least you're still around :)
09:57 tommyd and you still do packaging, user support and all - thats fine
09:59 thm ;)
10:34 riz left
10:48 tommyd left
10:49 tommyd joined
11:41 MichaelRaskin left
12:26 stefan left
13:03 stefan joined
15:05 tommyd left
15:23 zwol joined
15:59 tommyd joined
16:14 _4get left
16:18 _4get joined
16:32 CIA-9 me@thomaskeller.biz net.venge.monotone * raa335ab466a3cfdd502eea287817466402d42b6c /monotone.texi: * monotone.texi (get_content_changed): describe under which circumstances no, one and multiple content marks are returned for get_content_changed
16:32 CIA-9 tero.koskinen@iki.fi net.venge.monotone.tkoskine.purge * rbc9d17b3d81877fe226c376646c89ebc96540ca9 /cmd_ws_commit.cc:
16:32 CIA-9 Add a new "clean" command.
16:32 CIA-9 Also known as "purge".
16:32 CIA-9 tero.koskinen@iki.fi net.venge.monotone.tkoskine.disapprove-multirev * r7312b0fad95671e6d3ecd4d13b56bec0bfa2827b /cmd_ws_commit.cc: Initial bits of multirevision disapprove.
16:32 CIA-9 tero.koskinen@iki.fi net.venge.monotone.tkoskine.disapprove-multirev * rf2d63bb0611f666d19453d4a8f9ac1bafc1d5d44 /tests/ (14 files in 2 dirs): Add two tests for the multirevision disapprove.
16:55 tommyd left
17:16 tommyd joined
17:27 riz joined
17:30 tommyd left
18:29 gizmo1 left
18:55 tommyd joined
19:07 tommyd left
19:15 stefan left
19:17 stefan joined
19:31 tommyd joined
19:33 thm tommyd: ah, I forgot the accidental clean merge
19:34 MichaelRaskin joined
19:36 tommyd I thought of it actually, but in the wrong way
19:37 tommyd I edited a single file two times equally, but I forgot that other (unrelated) files needed to be edited as well which leads to different rev ids
19:37 tommyd anyways, its now in the docs, so if we forget it again... ;)
19:38 thm good.
19:57 stefan left
19:59 tommyd left
20:09 gizmo1 joined
20:09 gizmo1 is now known as Guest1033
20:10 Guest1033 is now known as gizmo1
20:21 gizmo1 left
20:24 gizmo1 joined
20:24 gizmo1 is now known as Guest1036
20:25 Guest1036 is now known as gizmo1
20:55 stefan joined
21:12 tommyd joined
21:22 zwol left
21:31 zwol joined
23:10 zwol left
23:10 zwol joined

Logs Channels Help Search ←Prev date Next date→ Help