Version management system5806078Abstract A version management system for storing and retrieving changes to spreadsheet and word processor documents on a digital computer. The version management system is preferably integrated into the interface of existing spreadsheet or word processing software to permit a user to access a plurality of versions of spreadsheet or word processing documents. An original version of each document and all alternative versions are stored in a delta format, i.e., storing only the differences from a prior document version, in a common difference data file and version data file. A delta-formatted document will generally require less storage than an entire alternative version. Additionally, this delta formatting facilitates generating difference reports that emphasize the differences between multiple versions of a document. These difference reports are of particular value when applied to spreadsheet and word processing documents. Claims I claim: Description COPYRIGHT NOTICE
______________________________________
1.1.1
1.1.1.1.1
1.1.1.1.2
1.2.1
1.2.2
1.2.2.1.1
1.1.2
1.1.3
2
3
______________________________________
1.5 Version Naming At check-in, a version name and description will be requested from the user. If an accountant were to create a spreadsheet called Bookings in January and check it into the library, this would automatically be known as Version 1. The accountant could then use "January.sub.-- 93" for the version name. The comment could be "January 1993 Bookings & Cost". Version names will be limited to 25 characters. 1.6 Creating a New Spreadsheet and First-time Check-in A new spreadsheet will be created in the ordinary way of selecting File-New from the menu bar. As soon as data is entered, the user selects Version Save As . . . from the FileVersion menu. For an already-existing spreadsheet, that file is opened as any ordinary spreadsheet. The user selects FileVersion, Version Save As . . . to check the selection into the library. During check-in, the read-only attribute is set in the working directory, and the files will be accessible from the working directory, but cannot be changed until a version open is accomplished. 1.7 Project Groups Any number of files can be stored in one group. This group will be known as a project. Groups of related files and their offspring ("versions") will reside in a given project directory. This concept is illustrated in FIG. 6. 1.8 On-line Help On-line help will be available to the user by selecting help from the main menu. This will be accomplished using a separate help file in conjunction with the Microsoft Windows help engine. 2. User Interface Description 2.1 Program Menu A menu selection will be added to the spreadsheet menu bar. This will consist of the word FileVersion and it can be activated by a mouseclick, or by hitting the <ALT> key followed by the "l" key (standard Window's functionality). This menu modification will occur during host application initialization and will appear as shown in FIG. 7. The program execution associated with this menu selection process can be generally described by the block diagram shown in FIG. 8. 2.2 Version Open Dialogue The Version Open dialogue allows the user to perform library check-out functions. Selection is done by project, file (document), and version number/name. A checkbox appears for the latest version to be checked out by default. The user can change this by un-checking the latest version checkbox and selecting an alternate version. The version combo-box will be disabled by changing its color from black to gray when the latest version checkbox is checked. The Version Open dialogue appears as shown in FIG. 9. 2.3 Version Save Dialogue The Save dialogue allows the user to perform library check-in functions. If the document to be checked in does not yet have a baseline version (that is, the document does not yet exist in the selected project), then the Save as . . . dialogue automatically appears. The Save dialogue appears as shown in FIG. 10. 2.4 Save As . . . Dialogue The Save As . . . dialogue allows the user to perform library check-in functions for documents that did not previously exist in the library. The dialogue appears the same as the Save dialogue box except that the project name field is a combo-box and the file name field is an edit box, and version-related items are not present except for the version name. The Save As . . . dialogue appears as shown in FIG. 11. 2.5 Move/Copy Dialogue Box This feature allows a whole spreadsheet, i.e., all versions, to be copied or moved to another project group, or to be renamed within a project. The copy function is best used when the user wants different copies of the same thing for different purposes and the two copies of the spreadsheets are to be maintained independently. The Move/Copy dialogue box appears as shown in FIG. 12. 2.6 Delete Dialogue Box This feature will allow the user to delete all or part of a spreadsheet document from a project group. All document versions will be listed in the Version combo box. The user can select any number of versions, including all versions. However, if all versions are selected, an alert message will appear upon clicking on the OK button indicating that all but Version 1 will be deleted, and indicating that to delete Version 1, the user should select Delete all versions. This will happen even if there is only one version in the repository file, and Delete all versions is not checked. The Delete dialogue box is shown in FIG. 13. 2.7 File Version Compare Dialogue Box This feature is one of the more powerful features of this product. Comparisons are accomplished between differing versions of a given spreadsheet in a project. The version combo boxes show version numbers and version names to facilitate selection. The differences will be shown by creating a new spreadsheet file and writing the differences to it. Once created, the difference file will be in the same format as the original versions with changes highlighted according to settings accomplished with Compare setup. The File Version Compare dialogue box is shown in FIG. 14. 2.8 Version Compare Options allow the user to alternatively select a display of a first, e.g., old, version of a document with differences from a second, e.g., new, version indicated, a display of the second version of a document with differences from the first version indicated, or a delta report showing subtractive differences for numerical data. The report is generated on a selected spreadsheet with changes being shown according to user-selected format options. With reference to FIG. 15, there is shown a display of an "Old" version of a document according to its normal display format as determined by its internal data and the spreadsheet processor. Similarly, FIG. 16 shows a display of a "New" version of a document. In a first report format shown in FIG. 17A, data from the "Old" version of the document is displayed according to the normal display format for the "Old" version of the document. However, the normal display format is modified by italicizing the cells that are different in the "New" version of the document as well as italicizing labels that are different in the "New" version. Similarly in a second report shown in FIG. 17B, data from the "New" version of the document is displayed with italicizing of the cells and labels that are different in the "Old" version of the document. A third report format, as shown in FIG. 17C, shows subtractive differences of numerical data. In this figure, DELTA.XLS, shows the newer version of labels with the changed alphanumeric information and non-zero subtractive differences italicized. Numerical data is displayed by computing the difference on a cell-by-cell basis such that: DELTA=NEW-OLD Cells with unchanged data remain un-italicized and numerical data is set to 0. 2.9 Compare Setup Dialogue Compare setup operations, when performed, are written to an configuration file 58 (CCCFILE.INI) to retain setup options for later usage. Any combination of report options and highlight options may be selected. If no report options are selected, a Delta Report will be generated. Likewise, if no highlight options are selected, all changes will appear in italics. The Compare Setup dialogue box is shown in FIG. 18. 2.10 Project Create Dialogue A name for a new project is created in this dialogue as shown in FIG. 18. If a given project already exists, then the user is alerted accordingly and is requested to select another name. The project name uses a combo bar so the user can see what project names are already in use. 2.11 Project Delete Dialogue Creation information about an existing project will be shown as in FIG. 20 to facilitate the user's decision whether or not to delete a whole project. Since deleting a whole project database has major implications, the user will be asked to verify deletion once OK is selected. 2.12 General Setup Dialogue File path names are originally set during program installation, however, they can be changed by the user at any time using this dialog as shown in FIG. 21. The library path is the base directory for the currently-selected library. It is possible for a user to have more than one library. The Program Path is where the program software and help files reside. While the program path is not changed unless the software is moved, the option is provided to facilitate a user changing resident directories for this software. With reference now to FIGS. 22-53, there is shown a top level flow chart of the user interface to the previously described embodiment. There are found software listings of a presently preferred embodiment corresponding to these flow charts. FIGS. 54-64 provide a top level flowchart referencing the software. FIG. 22 shows a block diagram of top level implementation for a user interface. From Windows 200 Excel is invoked 202, run 204, and exited 206. Invoke Excel 202 includes initialization sequence 208. Run Excel 204 includes a menu 210. Exit Excel 206 includes exit sequence 212. FIG. 23 shows a block diagram of an initialization sequence for the user interface. Initialization sequence 220 includes initialize menu block 222 and read CCCFILE.INI file & initialize variables 224. FIG. 24 shows a block diagram for an initialization menu for a user interface. From initialize menu 230 get DLL name 232. Next, register menu functions 234. From register menu functions 234, for number of functions to be registered 236, register function 238. After register menu functions 234, test for an existence of menu 240. In testing for existence of menu 240, if menu item exists, no action 244, and if menu item does not exist, create menu 246. In creating menu 246, allocate memory for menu 248. For number of menu rows 250 do the following: For number of menu parameters 252, set storage to string type 254, store menu string 256, and increment pointer 258. Next, set menu record type to Multi 260, copy menu array to menu record 262, set number of menu rows 264, set number of menu columns 266, call Excel function to place menu 268, unlock and free menu handle 270, and initialize dialogue box database variables to zero and blank 280. After test for existence of menu 240, free DLL name 242. FIG. 25 shows a block diagram for a menu with selection and action blocks for a user interface. Menu 300 provides selection of: version open 302, version save 306, version save as 312, move/copy file 316, delete file 320, compare 324, compare set up 328, project create 332, project delete 336, CCC/file set up 340, and help 344. From version open 302, version open dialog 304 may be executed. From version save 306, version save dialog 308 may be executed or, alternatively, if not previously saved, version save as dialogue 310 may be executed. From version save as 312, version save as dialogue 314 may be executed. From move/copy file 316, move/copy file dialogue 318 may be executed. From delete file 320, delete file dialog 322 may be executed. From compare 324, compare dialog 326 may be executed. From compare setup 328, compare setup dialog 330 may be executed. From project create 332, project create dialog 334 may be executed. From project delete 336, project delete dialog 338 may be executed. From CCC/file set up 340, CCC/file set up dialog 342 may be executed. From help 344, Windows HELP engine 346, and display CCC/file help 348 may be executed. FIG. 26 shows a block diagram of an exit sequence for a user interface. Exit sequence 360 includes remove CCC/file menu 362, save CCCFILE.INI parameters 364, and return Excel menu to normal 366. FIG. 27 shows a block diagram for an open dialog for a user interface. Version open dialog 380 causes open dialog initialization 382 and display dialog 384. Display dialog 384 is connected with project list box 386, file list box 400, version number/name combo box drop down 404, check out latest version check box 410, file open type group 424, OK button 434, and cancel button 446. Project list box 386 includes select project 388 and get file list 390. File list box 400 includes select file 404. Version number/name combo box, drop down 404 includes get version list 406 and select version 408. Check out latest version checkbox 410 includes turn on checkbox 412 and turn off checkbox 418. Turn on checkbox 412 includes deactivate version list 414 and deactivate version list title 416. Turn off box 418 includes activate version list 420 and activate version list title 422. File open type group 424 includes read-write radio button (default) 426, which includes activate read/write button 428, and read-only radio button 430, which includes activate read-only button 432. OK button 434 includes end open dialog 436, store check out latest status 438, store read/write button status 440, store read-only button status 442, and check out processing 444. Cancel button 446 includes end open dialog 448. FIG. 28 shows a block diagram for an open dialog initialization for a user interface. Open dialog initialization 460 includes get project list 462, get file list 464, enable check out latest button 466, set read/write button to stored value 468, set read-only button to stored value 470, disable "version number/name" caption 472, and disable version number/name combo box 474. FIG. 29 shows a block diagram of a save dialog for a user interface. Version save dialog 480 includes version save dialog initialization 482 and display dialog 484. Display dialog 484 includes project name text 486, file name text 488, existing versions combo box 500, new version text 504, save type radio buttons 508, version name edit box 514, changed by name combo box 520, date text 526, time text 528, change comment 530, OK button 562, cancel button 564, and close box 566. Existing versions combo box 500 includes get version list 490 and update "new version" text 502. Save type radio buttons 508 includes "create new version" button 506, "override existing version" button 510, and "create branch from existing version" button 512. Version name edit box 514 includes test input length 516 and reject input if text length is at maximum 518. Changed by name combo box 520 includes test input length 522 and reject input if text length is at maximum 524. Change comment 530 includes test input length 532 and reject input if text length is at maximum 534. OK button 562 includes test for existence of changed by name 536, exit dialog 550, store version number 552, store "save type" status 554, store version name 556, store change comment 558, and check-in processing 560. Test for existence of changed-by name 536 includes if name is in list, store it 538, and if name is not in list, confirm addition 540, which includes if confirmed, store name in names list 542 and if not confirmed, cancel processing 546. If confirmed, store name in names list 542 includes store name in dialog box database 544. If not confirmed, cancel processing 546 includes return to dialog box 548. Cancel button 564 and close box 566 include exit dialog 568. FIG. 30 shows a block diagram of a save dialog initialization for a user interface. Save dialog initialization 580 includes set project name text to current project 582, set file name text to current file 584, set "existing versions" combo box to checked-out version 586, set new version text to new version 588, set save type to create new version 590, set version name to blank 592, set changed-by name to name person who did last save for this file 594, set date and time text to current date and time 596, and set change comment to blank 598. FIG. 31 shows a block diagram for a save as dialog for a user interface. Save as dialog 610 includes save as dialog initialization 612 and display dialog 614. Display dialog 614 includes project name combo box 616, file name edit box 620, created by name combo box 626, date text 632, time text 634, creation comment 636, OK button 668, cancel button 670, and close box 672. Project name combo box 616 includes select project 618. File name edit box 620 includes test string length 622 and reject input if string length is greater than maximum 624. Created by name combo box 626 includes test string length 628 and reject input if string length is greater than maximum 630. Creation comment 636 includes test string length 638 and reject input if string length is greater than maximum 640. OK button 668 includes test for existence of changed-by name 642, exit dialog 656, store version number as one 658, store version name 660, store creation comment 662, create delta files, data and version info 664, and check-in processing 666. Test for existence of changed-by name 642 includes if name is in list store it 664 and if name is not in list, confirm addition 646. If name is not in list, confirm addition 646 includes if confirmed, store name in names list 648, which includes store name in dialog box database 650, and if not confirmed, cancel processing 652, which includes return to dialog box 654. Cancel button 670 and close box 672 include end dialog 674. FIG. 32 shows a block diagram for a save as dialog initialization for a user interface. Save dialog initialization 680 includes get project list 682, set file name edit box to blank 684, set version name to blank 686, set "created by" name to stored name 688, set date and time to current date and time 690, and set creation comment to blank 692. FIG. 33 shows a block diagram for a move-copy dialog for a user interface. Move/copy dialog 700 includes move/copy dialog initialization 702 and display dialog 704. Display dialog 704 includes from project combo box 706, from file list box 710, to project list box 712, from file list box 716, move/copy file group 718, OK button 732, and cancel button 768, and close button 770. From project combo box 706 includes update "from" file combo box 708. To project list box 712 includes update "to" file combo box 714. Move/copy file group 718 includes move radio button (default) 720, copy radio button 724, and rename radio button 728. Move radio button (default) 720 includes activate all combo boxes 722. Copy radio button 724 includes activate all combo boxes 726. Rename radio button 728 includes deactivate "to" project combo box; activate all other combo boxes 730. OK button 732 includes end dialog 734, store move/copy/rename status 736, store "from" project 738, store "from" file name 740, store "to" project 746, store "to" file name 744, determine if overwrite of existing file will occur 746, and move/copy or rename file 752. Determine if overwrite of existing file will occur 746 includes if overwrite will occur, prompt user for new name 748, and if file does not exist, accept file name 750. Move, copy, or rename file 752 includes copy file to destination 754, which is followed by verify copy 756. Verify copy 756 includes determine if first or second non-verify 758 and determine if move is selected 768. Determine if first or second non-verify 758 includes re-copy if first nonverify 760 and alert user and end process if second non-verify 762. Determine if move is selected 768 includes if copy selected leave file in from project intact 764 and if move is selected delete file copy from project. FIG. 34 shows a block diagram for a move-copy dialog initialization for a user interface. Move/copy dialog initialization 780 includes set "from" project to blank 782, set "from" file to blank 784, set "to" project to blank 786, set "to" file to blank 788, and set operation button to "move" 790. FIG. 35 shows a block diagram of a delete ›file! dialog for a user interface. Delete ›file! dialog 800 includes delete ›file! dialog initialization 802 and display dialog 804. Display dialog 804 includes project combo box 806, file list box 810, version combo box 812, delete all versions check box 816, OK button 822, cancel button 834, and close box 836. Project combo box 806 includes update file list box 808. Version combo box 812 includes update version combo box 814. Delete all versions check box 816 includes if selected, deactivate version combo box 818 and if not selected, activate version combo box 820. OK button 822 includes end dialog 824, store project 826, store delete all versions check box status 828, store version identifier 830, and perform harvest delete 832. Cancel button 834 and close box 836 include end dialog 838. FIG. 36 shows a block diagram for a delete dialog initialization for a user interface. Delete dialog initialization 850 includes get project list 852, get file list 854, and set "delete all versions" to unchecked 856. FIG. 37 shows a block diagram of a compare dialog for a user interface. Compare dialog 860 includes compare dialog initialization 862 and display dialog 864. Display dialog 864 includes project combo box 866, file combo box 880, compare between version/old version combo box 882, compare between version/new version combo box 884, OK button 886, cancel button 900, and close box 902. Project combo box 866 includes test string length 868, reject input if string length is greater than maximum 870, and update file combo box 872. File combo box 880 includes test string length 874, reject input of string length is greater than maximum 876, and update both version combo boxes with same data 878. OK button 886 includes end dialog 888, store project name 890, store file name 892, store "old" version 894, store "new" version 896, and spreadsheet comparison report 898. Cancel button 900 and close box 902 include end dialog 904. FIG. 38 shows a block diagram of a compare dialog initialization for a user interface. Compare dialog initialization 910 includes get project list 912, get file list 914, get version list 916, and initialize combo boxes to acquired data lists 918. Note: Version lists are acquired now as the user will be expected to always provide that information. FIG. 39 shows a block diagram of a compare setup dialog for a user interface. Compare set up dialog 930 includes compare set up dialog initialization 932 and display dialog 934. Display dialog 934 includes report options group 936, highlight options group 962, OK button 982, cancel button 996, and close box 1000. Report options group 936 includes show delta amount only 938, show new/highlight changed 946, and show old/highlight changed 954. Show delta amount only 938 includes turn on delta button 940, turn off highlight button 942, and turn off old/highlight button 944. Show new/highlight changed 946 includes turn on delta button 948, turn off new/highlight button 950, and turn off old/highlight button 952. Show old/highlight changed 954 includes turn on delta button 956, turn off new/highlight button 958, and turn off old/highlight button 960. Highlight options group 962 includes italics button 964, bold button 970, and change color to red button 960. Italics button 964 includes turn on italics button 966 and turn off italics button 968. Bold button 970 includes turn on bold button 972 and turn off bold button 974. Change color to red button 976 includes turn on red button 978 and turn off red button 980. OK button 982 includes store delta button status 984, store new/highlight button status 986, store old/highlight button status 988, store italics button status 990, store bold button status 992, and store red button status 994. Cancel button 996 and close box 1000 include end dialog 998. FIG. 40 shows a block diagram for a compare setup dialog initialization for a user interface. Compare set up dialog initialization 1010 includes set delta amount option to stored value 1012, set new report option to stored value 1014, set old report option to stored value 1016, set italics attribute to stored value 1018, set bold attribute to stored value 1020, and set "change color to red" attribute to stored value 1022. FIG. 41 shows a block diagram of a project create dialog for a user interface. Project create dialog 1030 includes project create dialog initialization 1032 and display dialog 1034. Display dialog 1034 includes project name 1036, OK button 1042, cancel button 1058, and close box 1060. Project name 1036 includes test string length 1038 and reject input if string length is greater than maximum 1040. OK button 1042 includes check project names 1044, which includes alert user 1046 and create new project 1050. A new project is created only if project name does not exist. Create new project 1050 includes end dialog 1052, create project directory 1054, and create project database 1056. Cancel button 1058 and close box 1060 include end dialog 1062. FIG. 42 shows a block diagram of a project create dialog initialization for a user interface. Project create dialog initialization 1070 includes get project list 1072 and initialize project name combo box 1074. FIG. 43 shows a block diagram of a project delete dialog for a user interface. Project delete dialog 1080 includes project delete dialog initialization 1082 and display dialog 1084. Display dialog 1084 includes project name combo box 1086, project create date text 1094, project create time text 1096, OK button 1098, cancel button 1108, and close box 1110. Project name combo box 1086 includes select project 1088, retrieve project create date and time 1090, and modify project create date and time text 1092. OK button 1098 includes end dialog 1100 and alert and query user for deletion 1102. Delete is performed only with authorization. Alert and query user for deletion 1102 includes cancel processing 1104 and delete database, files and project directories 1106. Cancel button 1108 and close box 1110 include end dialog 1112. FIG. 44 shows a block diagram for a project delete dialog initialization for a user interface. Project delete dialog initialization 1120 includes get project list 1122 and set project list combo box to current list 1124. FIG. 45 shows a block diagram of check out processing. Check out processing 1130 includes set working file copy to R/W if there is one 1132 and form harvest delta engine check out 1134. FIG. 46 shows a block diagram for a check-in processing. Check-in processing 1140 includes send check-in parameters to harvest delta engine for check out 1142 and set "working" file to r/o 1144. FIG. 47 shows a block diagram of project-file-version lists. Get project list 1150 includes get directory listing from disk 1152, retrieve project names from directory name mappings 1154, and get project selection 1156. Get project selection 1156 includes highlight stored project selection 1158 and, if no project is selected, highlight first project selection 1160. FIG. 48 shows a block diagram for project-file-version lists. Get file list 1170 includes get file list from selected project directory on disk 1172, display file list 1174, and get file selection 1176. Get file selection 1176 includes highlight stored file selection 1178 and highlight first file selection 1180. FIG. 49 shows a block diagram of project-file-version lists. Get version list 1190 includes retrieve version numbers through harvest delta engine 1192, display version list 1194, and get version selection 1196. Get version selection 1196 includes highlight stored version selection 1198 and highlight latest version 1200. FIG. 50 shows a block diagram for an initialization dialog box database. Initialize dialog box database variables to zero and blank 1202 includes open dialog database init 1204, save dialog database init 1214, save as dialog database init 1216, move/copy dialog database init 1218, delete file dialog database init 1220, compare dialog database init 1222, compare set up dialog database init 1224, project create dialog database init 1226, project delete dialog database init 1228, and CCC/file set up database init 1230. Open dialog database init 1204 includes initialize project name, file name, version number, and version name fields 1206, initialize read/write button to on 1208, initialize read-only button to off 1210, and initialize check out latest button to on 1212. FIG. 51 shows a block diagram for a spreadsheet comparison report. Spreadsheet comparison report 1240 includes perform R/O check out of new and old versions 1242, for each report type selected (delta old, or new) 1244, copy data file to a new spreadsheet file 1246, copy data portion of spreadsheet to buffer 1252, run harvest compare engine 1258, change format for every effected cell in report file 1260, if delta report, compute differences for numerical records 1262, write changes to report file 1264, and close all files 1266. Copy data file to a new spreadsheet file 1246 includes if delta or new data report, copy "new" version 1246 and if old data report, copy "old" version 1250. Copy data portion of spreadsheet to buffer 1252 includes find file position of first numerical, label, or formula record 1254 and write file position address to line buffer 1256. Spreadsheet file 1280 includes data offset address and data records 1282. The cell data records is the data structure on which differences are calculated. At the beginning of a spreadsheet file contains records pertaining to specific format types that are referenced in the cell records themselves. FIG. 52 shows a block diagram for a CCC-file setup dialog for a user interface. CCC/file set up dialog 1300 includes CCC/file set up initialization 1302 and display dialog box 1304. Display dialog box 1304 includes CCC/file library path edit box 1306, OK button 1308, cancel button 1314, and close box 1316. OK button 1308 includes end dialog 1310 and store CCC/file library path 1310. Cancel button 1314 and close box 1316 include end dialog 1318. FIG. 53 shows a block diagram for a CCC-file setup dialog initialization for a user interface. Set up dialog initialization 1330 includes copy path name to dialog box 1332. FIG. 54 shows a block diagram of a module name: Diff2items. Diff2item 13.1 operates on item 1 and item 2. Diff2item 13.1 is coupled into set up results buffer 13.2, discard confusing lines 13.3, building change script 13.5, and free up non-used resources 13.12. Discard confusing lines 13.3 is coupled into allocate result and working buffer 13.6, mark lines that match no line of the other item 13.7, strip out discarded lines and set undiscarded lines 13.8, and free up working buffer 13.9. Execute algorithm 13.4, which is coupled to diff2item 13.1, is coupled to compare contiguous subsequence of two items 13.10, and adjust insert and delete blend lines 13.11. From execute algorithm 13.4 is a connection to result of changes buffer. Undiscarded line buffer is coupled to execute algorithm 13.4, real index of lines buffer is also coupled to execute algorithm 13.4. Result of changes buffer is coupled to building change script 13.5. Building change script 13.5 is coupled to change script based on real line number. Mark lines that match no line of the other item 13.7 is coupled for input and output to equiv.sub.-- count buffer, discarded lines buffer, and classified line buffer. Discarded lines buffer is coupled to strip out discarded lines and set undiscarded lines 13.8, which is coupled into real index of lines buffer and discarded line buffer. FIG. 55 shows a block diagram of module name: Generate delta. Generate delta, update to version info and data files 12.2 receives input from changes script buffer, check-in new child version, and parent version description. Generate delta, update to version info and data files 12.1 is coupled to open version info file for update through vinfo name, to open data file for append through data name, to set up description of new child version 12.5, to update description of parent version to link to new child 12.4, to append description of new child version 12.6, to append delta information 12.7, to free up unused resources 12.14, and to close vinfo file and data file 12.15. Open version info file for update 12.2 is coupled into vinfo file. Open data file for append 12.3 is coupled into data file. Set up description of new child version 12.5 receives input from changes script buffer and outputs to child version description. Update description of parent version to link to new child is coupled into vinfo file. Append description of new child version 12.6 is coupled into vinfo file. Child version description is coupled into append description of new child version 12.6. Append delta information 12.7 receives input from changes script buffer. Append delta information 12.7 is coupled into process insert delta 12.9 and process delta data 12.8. Process insert data 12.9 is coupled into append data of inserted lines 12.13, append description of inserted lines 12.12, and append change description 12.10. Append data of inserted lines 12.13 is coupled into data file. Append description of inserted lines 12.12 is coupled into vinfo file. Append change description 12.10 is coupled into vinfo file. Process delta data 12.8 is coupled into append change description 12.10. FIG. 56 shows a block diagram of module name: Build line vector of desired version. Version id is input into build line vector of desired version 11.1. Build line vector of desired version 11.1 is coupled through vinfo name into open version info file 11.2, read version info file 11.3, create line vector of first version 11.4, build line vector of next version 11.6, free up unused resources 11.13, and close version info file 11.14. Read version info file 11.3 receives input from vinfo file and outputs to vinfo buffer. Create line vector of first version 11.4 is coupled into build line vector based on changes. Build line vector based on changes 11.5 receives input from vinfo buffer and outputs to parent line vector. Build line vector of next version 11.6 is coupled into verify if version ID of parent match target ID 11.7, and get child version description 11.8, allocate line vector for child version 11.10, copy unchanged lines, add new inserted line to child line vector 11.11, and free current parent line vector, set child to be new parent 11.12. Get child version description 11.8 is coupled into skip sibling branch if child branch not match, and vinfo buffer is coupled into skip to sibling branch if child branch not match 11.9 and into get child version description 11.8. Copy unchanged lines, add new inserted line to child vector 11.11 receives input from vinfo buffer, and parent line vector and outputs to child line vector. Build line vector of next version 11.6 has a loop onto itself. FIG. 57 shows a block diagram of module name: deMergeitem. deMergeitem 7.1 receives parameters. deMergeitem 7.1 is coupled into get parameters and resources 7.2, build line vector of each version and data connection 7.4, first diff2item 7.5, build edit script diff1 7.6, second diff2items 7.7, build edit script diff2 7.8, build output of merged item 7.10, through conflict found to send the merged output through data transmission module to client 7.11, through no conflict to if opt. no.sub.-- edit.sub.-- needed invoke deCheckinItem as new version 7.12. Build line vector of each version and data connection 7.4 is coupled into line vector of base version data connected, line vector of 11 version data connected, and line vector of 12 version data connected. First diff2item 7.5 receives input from line vector of base version data connected and line vector of 11 version data connected and outputs to change script buffer. Build edit script diff1 7.6 receives input from change script buffer and outputs to diff1 buffer. Second diff2item 7.7 receives input from line vector 11 version data connected and line vector 12 version data connected and outputs to change script buffer. Build edit script diff 2 7.8 receives input from change script buffer and outputs to diff2 buffer. Build output of merged item 7.10 receives input from diff3 results buffer and outputs to merged output buffer. Send the merged output through data transmission module to client 7.11 receives input from merged output buffer. If opt. no.sub.-- edit.sub.-- needed invoke deCheckinItem as new version 7.12 receives input from merged output buffer. FIG. 58 shows a block diagram of module name: deListchangeItem. deListchangeItem 6.1 receives client's request and parameters. deListchangeItem 6.1 is coupled into get parameters and resources 6.2, open and read content of vinfo file 6.4, open and read content of data file 6.5, through version range to build line vector of item from version.sub.-- begin to version.sub.-- end 6.6, to sending the result through data transmission module to client 6.10, to free up unused buffer 6.11, and to close data file and vinfo file 6.12. Open and read content of vinfo file 6.4 receives data from vinfo file and outputs to vinfo buffer. Open and read content of data file 6.5 receives input from data file and outputs to data buffer. Build line vector of item from version.sub.-- begin to version.sub.-- end outputs to build line vector of version item 6.7, data connection 6.8, through (opt) only change info or changes annotated to write change information included actual data 6.9. Build line vector of a version of item 6.7 receives input from vinfo buffer and outputs to item line vector buffer. Data connection 6.8 receives input from and outputs to item line vector buffer and receives input from data buffer. Write change information included actual data 6.9 receives input from item line vector buffer and vinfo buffer and outputs to results buffer. Sending the result through data transmission module to client 6.10 receives input from results buffer. FIG. 59 shows a block diagram of module name: deListdiffitem. deListdiffitem 5.1 receives client's request and parameters. deListdiffItem 5.1 is coupled into get parameters and resources 5.2, build item1 5.5, build item2 5.4, invoke diff2items 5.10, and send the change report through data transmission module to client 5.11. Get parameters and resources 5.2 is coupled into validate parameters and resources 5.3. Build item2 5.4 is coupled through item into build line vector of version id no data connection 5.6 and through item2 data connection 5.7 and through client's file into build line vector from client's file. Build line vector of version id no data connection 5.6 receives input from vinfo file and receives input from and is coupled into vinfo buffer and is coupled into line vector of item buffer. Data connection 5.7 receives input from and is coupled into line vector of item buffer, receives input from data file, and outputs to data buffer. Data connection 5.7 receives input from build iteml 5.5 and build item2 5.4. Build line vector from client's file 5.8 receives input from build line item2 5.4, build item1 5.5, and client's file buffer and outputs to invoke data transmission module to get data from client 5.9 and client's file line vector with connected data. Invoke diff2items 5.10 receives input from client's file line vector with connected data and line vector of item with connected data and outputs to change script buffer. Sent the change report through data transmission module to client 5.11 receives input from change script buffer. FIG. 60 shows a block diagram of module name: deDeleteChangeItem. deDeleteChangeItem 4.1 receives input client request and parameters and outputs to get parameters and resources 4.2, open and read content of vinfo file 4.4, walk through version description to mark delete 4.5, through non-record to update new version description info file 4.6, through reorg to build new vinfo and data file 4.7, close or set up (new) vinfo and data file 4.8, and free up unused buffer 4.9. Get parameters and resources 4.2 is coupled into validate parameters and resources 4.3. Open and read content of vinfo file 4.4 receives input from vinfo file and outputs to vinfo buffer. Walk through version description to mark delete 4.5 is coupled into vinfo buffer and receives info from vinfo buffer. Update new version description vinfo file 4.6 is coupled into vinfo file and receives input from vinfo buffer. Build new vinfo and data file 4.7 receives input from vinfo buffer and data file and outputs to new data file and vinfo file. FIG. 61 shows a block diagram of module name: deScantextItem. deScantextItem 3.1 receives input client request with parameters. deScantextItem 3.1 is coupled into open and read content of data file 3.2, scan data file save offset which locate matching string 3.3, open and read content of vinfo file 3.4, through a version or a version range into build line vector of each version and scan offset 3.5, sending the result through data transmission module to client 3.8, free up unused buffer 3.9, and close data file and vinfo file 3.10. Open and read content of data file 3.2 receives input from data file and outputs to data buffer. Scan data file save offset which locate matched string 3.3 receives input from data buffer and outputs to saved offset buffer. Open and read content of vinfo file 3.4 receives input from vinfo file and outputs to vinfo buffer. Build line vector of each version and scan offset 3.5, outputs to build line vector of version of item 3.6, and through (opt) abort.sub.-- when.sub.-- found to scan offset of each line in line vector of the item 3.7. Build line vector of version of item 3.6 receives input from vinfo buffer and outputs to line vector without data connection. Line vector without data connection is input into scan offset of each inline vector of the item 3.7, which also receives input from saved offset buffer and outputs to connected data only lines string was found 3.11. Connected data only lines string was found 3.11 outputs to buffer for a result of scanning, which inputs to sending the result through data transmission module to client 3.8. FIG. 62 shows a block diagram of module name: deCheckoutitem. deCheckout Item 2.1 receives client request and parameters and outputs to get parameter and resources 2.2, build line vector of item from repository 2.4, invoke data transmission module to send out the data 2.7, and free up unused buffer 2.8. Get parameter and resources 2.2 outputs to validate parameter and resources 2.3. Build line vector of item from repository 2.4 is coupled through version id into invoke build line vector of version id no data connection 2.5, and data connection 2.6. Invoke build line vector of version id no data connection 2.5 receives input from vinfo file and vinfo buffer and outputs to vinfo buffer and item line vector buffer. Data connection 2.6 receives input from and outputs to line item vector buffer and receives input from data file and outputs to data buffer. Invoke data transmission module to send out the data 2.7 receives input from data buffer and item line vector with connected data. FIG. 63 shows a block diagram of module name: deCheckinitem. deCheckin Item 1.1 receives parameters and is coupled to get parameter and resources 2.1, if item exists build line vector from repository 1.4, build line vector from source 1.5, diff2items 1.9, if item doesn't exist initial version 1.10, generate delta update to version info and data file 1.11, and free up unused buffer 1.12. Get parameter and resources 1.2 is coupled into validate existing of source. If item exists build line vector from repository 1.4 is coupled into invoke build line vector of version id no data connection 1.6 through version id and to data connection 1.7. Invoke build line vector of version id no data connection 1.6 receives input from vinfo file and vinfo buffer and is coupled into line item vector buffer. Data connection 1.7 receives input from data file and item line vector buffer and outputs to data buffer. Build line vector from source 1.5 is coupled into invoke data transmission module to get data from client 1.8, which is coupled into source buffer, and into source line vector with connected data. Build in line vector from source 1.5 receives data from source buffer. Diff2items 1.9 receives input from source line vector with connected data and item line vector with connected data and outputs to change script buffer. If item doesn't exist initial version 1.10 receives input from source line vector buffer and outputs to vinfo file and data file. Generate delta update to version info and data file 1.11 outputs to vinfo file and data file and receives input from change script buffer. FIG. 64 shows a block diagram of module name: Delta Engine Component. deServer and RDB connection 8 is coupled into deCheckin Item 1, deCheckout Item 2, deScantext Item 3, deDeletechange Item 4, deListdiff Item 5, deListchange Item 6, and deMerge Item 7. Although the present invention has been described in detail with reference only to the presently-preferred embodiments, those of ordinary skill in the art will appreciate that various modifications can be made without departing from the invention. Accordingly, the invention is defined by the following claims.
|
Same subclass Same class Consider this |
||||||||||
