Method and system for persistently cached, copy-on-write view of revision control trees
First Claim
1. A method comprising:
- receiving, from a version repository client, a first request for requested information stored in a repository of a revision control system, wherein the repository comprises a plurality of historical copies of information;
if the requested information is stored in local storage of the version repository client, providing the requested information from the local storage of the version repository client, wherein the local storage comprises a cache, a metadata cache, and non-cache storage, wherein the cache stores original file data received from the repository, and wherein the non-cache storage stores only modified copies of the file data stored in the cache; and
if the requested information is not stored in the local storage of the version repository client,transmitting, from the version repository client, a second request for the requested information to a remote repository server coupled to the repository,receiving the requested information from the remote repository server in response to the second request, andin response to said receiving the requested information, providing the requested information and storing the requested information in the local storage of the version repository client, wherein storing the requested information comprises adding an added node to an ordered tree data structure in the metadata cache, wherein adding the added node to the ordered tree data structure in the metadata cache comprises removing a node from the ordered tree data structure to prevent the ordered tree data structure from exceeding a certain number of nodes, wherein nodes in the ordered tree data structure are ordered based upon how recently each node was used, wherein files in the cache are subject to eviction to make room for new files in the cache, and wherein modified versions of files in the non-cached storage are not subject to eviction from the non-cached storage.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and system for efficient usage of revision control system resources by providing a client-based file system tree based on managed cache resources is provided. The managed cache resources include both a persistent, disk-based cache that maintains copies of requested file data from a repository server and an ordered tree data structure-based metadata cache for tracking file metadata across revisions. Embodiments of the present invention further maintain in the data cache data related only to specifically requested files. Embodiments of the present invention further track a range of versions of the file system tree for which particular file versions are applicable, so that unnecessary downloading to the client of unchanged files is avoided. Thus, file data and metadata are only requested from a repository server when needed and only a single version of a file is maintained until a modification to that file is made.
-
Citations
38 Claims
-
1. A method comprising:
-
receiving, from a version repository client, a first request for requested information stored in a repository of a revision control system, wherein the repository comprises a plurality of historical copies of information; if the requested information is stored in local storage of the version repository client, providing the requested information from the local storage of the version repository client, wherein the local storage comprises a cache, a metadata cache, and non-cache storage, wherein the cache stores original file data received from the repository, and wherein the non-cache storage stores only modified copies of the file data stored in the cache; and if the requested information is not stored in the local storage of the version repository client, transmitting, from the version repository client, a second request for the requested information to a remote repository server coupled to the repository, receiving the requested information from the remote repository server in response to the second request, and in response to said receiving the requested information, providing the requested information and storing the requested information in the local storage of the version repository client, wherein storing the requested information comprises adding an added node to an ordered tree data structure in the metadata cache, wherein adding the added node to the ordered tree data structure in the metadata cache comprises removing a node from the ordered tree data structure to prevent the ordered tree data structure from exceeding a certain number of nodes, wherein nodes in the ordered tree data structure are ordered based upon how recently each node was used, wherein files in the cache are subject to eviction to make room for new files in the cache, and wherein modified versions of files in the non-cached storage are not subject to eviction from the non-cached storage. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A system comprising:
-
a local storage configured to store information, wherein the local storage is a computer readable storage medium coupled to a version repository client, wherein the local storage comprises a cache, a metadata cache, and non-cache storage, wherein the cache stores original file data received from a repository of a revision control system, and wherein the non-cache storage stores only modified copies of the file data stored in the cache; a processing device configured to implement a cache manager for the version repository client, coupled to the local storage, the cache manager comprising a cache manager processor module coupled to an interface module and a query interface module, wherein the interface module is configured to receive a first request, from the version repository client, for requested information stored in the repository, wherein the repository comprises a plurality of historical copies of information, the cache manager processor module is configured to provide the requested information from the local storage if the requested information is stored in the local storage, and if the requested information is not stored in the local storage, transmit a second request, from the version repository client, for the requested information to a remote repository server, coupled to the repository, using the query interface module, receive the requested information from the remote repository server using the query interface module in response to the second request, and in response to said receiving the requested information, provide the requested information and store the requested information in the local storage, wherein storing the requested information comprises adding an added node to an ordered tree data structure in the metadata cache, wherein adding the added node to the ordered tree data structure in the metadata cache comprises removing a node from the ordered tree data structure to prevent the ordered tree data structure from exceeding a certain number of nodes, wherein nodes in the ordered tree data structure are ordered based upon how recently each node was used, wherein files in the cache are subject to eviction to make room for new files in the cache, and wherein modified versions of files in the non-cached storage are not subject to eviction from the non-cached storage, and the query interface module is configured to transmit the second request to the remote repository server and receive the requested information from the remote repository server. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. A non-transitory computer readable storage medium comprising:
-
a first set of instructions, executable by a processor, configured to receive, from a version repository client, a first request for requested information stored in a repository of a revision control system, wherein the repository comprises a plurality of historical copies of information; a second set of instructions, executable by the processor, configured to determine whether the requested information is stored in a local storage of the version repository client, wherein the local storage comprises a cache, a metadata cache, and non-cache storage, wherein the cache stores original file data received from the repository, and wherein the non-cache storage stores only modified copies of the file data stored in the cache; a third set of instructions, executable by the processor, responsive to determining that the requested information is stored in the local storage of the version repository client and configured to provide the requested information from the local storage of the version repository client; and a fourth set of instructions, executable by the processor, responsive to determining that the requested information is not stored in the local storage and configured to transmit, from the version repository client, a second request for the requested information to a remote repository server coupled to the repository, receive the requested information from the remote repository server in response to the second request, and, in response to said receiving the requested information, provide the requested information and store the requested information in the local storage of the version repository client, wherein storing the requested information comprises adding an added node to an ordered tree data structure in the metadata cache, wherein adding the added node to the ordered tree data structure in the metadata cache comprises removing a node from the ordered tree data structure to prevent the ordered tree data structure from exceeding a certain number of nodes, wherein nodes in the ordered tree data structure are ordered based upon how recently each node was used, wherein files in the cache are subject to eviction to make room for new files in the cache, and wherein modified versions of files in the non-cached storage are not subject to eviction from the non-cached storage. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38)
-
Specification