System and method for distributed revision control
US-10209979-B2 · Feb 19, 2019 · US
US10545988B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10545988-B2 |
| Application number | US-201514633018-A |
| Country | US |
| Kind code | B2 |
| Filing date | Feb 26, 2015 |
| Priority date | Feb 26, 2015 |
| Publication date | Jan 28, 2020 |
| Grant date | Jan 28, 2020 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A system and method for data synchronization using revision control includes receiving, by a synchronization module being executed by one or more processors of a server, inbound edits to a shared document from a client, retrieving a first version of the shared document associated with the client from a revision history, updating the first version based on the inbound edits to create a second, adding the second version to the revision history when the second version is not included among a plurality of stored versions of the shared document in the revision history, and incrementing a reference counter that records a number of clients associated with the second version when the second version is included among the stored versions in the revision history. The revision history provides access to the stored versions of the shared document. The revision history includes version data used to access each stored version and the associated reference counters.
Opening claim text (preview).
What is claimed is: 1. A method of data synchronization, the method comprising: receiving, by a synchronization module being executed by one or more processors of a server, inbound edits to a shared document from a client; retrieving a first version of the shared document associated with the client from a revision history, the revision history providing access to a plurality of stored versions of the shared document, wherein the revision history comprises: version data used to access each stored version; reference counters, each respective reference counter being associated with a respective version of the plurality of stored versions of the shared document and recording a number of clients whose current version of the shared document is the respective version of the shared document; and version identifiers that uniquely identify each stored version, wherein the version identifiers include hash values of each stored version; updating the first version based on the inbound edits to create a second version; determining whether the second version is included among the stored versions in the revision history; incrementing the respective reference counter associated with the second version when the second version is included among the stored versions in the revision history; decrementing the respective reference counter associated with the second version when one of the number of clients updates the shared document to a different version; trimming a first one of the stored versions in the revision history when the respective reference counter associated with the first one of the stored versions is below a predetermined threshold, wherein trimming the first one of the stored versions comprises computing one or more composite patches based on a patch associated with the first one of the stored versions; and halting once a predetermined number of versions are trimmed. 2. The method of claim 1 , wherein the method is based on differential synchronization, and wherein the version of the shared document associated with the client is a server shadow. 3. The method of claim 1 , further comprising: determining a first version identifier that identifies the first version, the first version identifier being used to retrieve the first version from the revision history; and determining a second version identifier that identifies the second version, the second version identifier being used to determine whether the second version is included among the plurality of stored versions in the revision history. 4. The method of claim 3 , wherein the first version identifier is determined from information provided by the client. 5. The method of claim 3 , wherein the first version identifier is determined by looking up the first version identifier using a version lookup table, the version lookup table being configured to associate clients with version identifiers. 6. The method of claim 1 , wherein sequence metadata associated with the first one of the stored versions indicates that the first one of the stored versions is older than an oldest active stored version, the oldest active stored version being an oldest stored version in the revision history that is associated with the respective reference counter above the predetermined threshold. 7. The method of claim 1 , wherein trimming the first one of the stored versions comprises moving the first one of the stored versions from a primary memory to a secondary memory. 8. The method of claim 1 , further comprising trimming a first one of the stored versions in the revision history when sequence metadata associated with the first one of the stored versions indicates that the first one of the stored versions is older than a predetermined threshold. 9. The method of claim 8 , wherein trimming the first one of the stored versions comprises moving the first one of the stored versions from a primary memory to a secondary memory. 10. A data synchronization system comprising: a synchronization module executed by one or more processors of a server; and a revision history configured to provide access to a plurality of stored versions of a shared document, wherein the revision history comprises version data used to access each stored version and reference counters, each respective reference counter being associated with a respective version of the plurality of stored versions of the shared document and recording a number of clients whose current version of the shared document is the respective version of the shared document, wherein the revision history further comprises version identifiers that uniquely identify each stored version, the version identifiers including hash values of each stored version; wherein the data synchronization system is configured to: receive, by the synchronization module, inbound edits to the shared document from a client; retrieve a first version of the shared document associated with the client from the revision history; update the first version based on the inbound edits to create a second version; determine whether the second version is included among the stored versions in the revision history; increment the respective reference counter associated with the second version when the second version is included among the stored versions in the revision history; decrement the respective reference counter associated with the second version when one of the number of clients updates the shared document to a different version; trim a first one of the stored versions in the revision history when the respective reference counter associated with the first one of the stored versions is below a predetermined threshold, wherein trimming the first one of the stored versions comprises computing one or more composite patches based on a patch associated with the first one of the stored versions; and halt once a predetermined number of versions are trimmed. 11. The data synchronization system of claim 10 , wherein the data synchronization system is further configured to trim a first one of the stored versions in the revision history when sequence metadata associated with the first one of the stored versions indicates that the first one of the stored versions is older than a predetermined threshold. 12. The data synchronization system of claim 1 , wherein sequence metadata associated with the first one of the stored versions indicates that the first one of the stored versions is older than an oldest active stored version, the oldest active stored version being an oldest stored version in the revision history that has the respective reference counter above the predetermined threshold. 13. A non-transitory machine-readable medium comprising a plurality of machine-readable instructions which when executed by one or more processors associated with a server are adapted to cause the one or more processors to perform a method comprising: receiving inbound edits to a shared document from a client; determining a first version identifier that identifies a first version of the shared document associated with the client, the first version identifier including a hash value of the first version; retrieving the first version from a revision history using the first version identifier, the revision history providing access to a plurality of stored versions of the shared document, wherein the revision history comprises version identifiers corresponding to each stored version, the version identifiers including hash values of each stored version, version data used to access each stored version, and reference counters, each respective reference counter being associated with a respective version of the plurality of stored versions of
Related publications grouped by family.
Answers are generated from the same data shown on this page.