The Absolute Naming of Each Line
MD5delta + . + lineno-in-delta
Each line in the weave was contributed by some delta. That delta may have been responsible for a number of lines.
Here’s an annotated weave, with X:Y where X is the serial number, and Y is the line number starting at 1 of lines in the originating delta.
X:Y Weave
^AI 1 1:1 #include <stdio.h> 1:2 main() 1:3 { ^AD 2 1:4 printf("Hello World\n"); ^AE 2 ^AI 2 2:1 sub("Hello World\n"); ^AE 2 1:5 } ^AI 2 2:2 2:3 sub(char *s) 2:4 { 2:5 return (printf("%s", %s)); 2:6 } ^AE 2 ^AE 1
The output for serial 2 looks like (with serial replaced by md5key): 1:1 #include <stdio.h> 1:2 main() 1:3 { 2:1 sub("Hello World\n"); 1:5 } 2:2 2:3 sub(char *s) 2:4 { 2:5 return (printf("%s", %s)); 2:6 }
Interface
Command line: bk get -O (the old sequence number interface) Doesn’t work with -a formatted. Should it?
sccs_get() flags: GET_LINENAME - defined as the last bit in the GET_* flags. Question: do we want to use up the last bit for this?
Code
In getRegBody(): make a mdbm namddb: (serial → md5name) which is lazily filled by printing make lnum: s→nextserial size array of u32 that counts line numbers that could get big .. what are other options?