Skip to content

A .NET Standard 2.0 library to help with object synchronization, such as determining object differences, applying patches, and merging changes.

License

Notifications You must be signed in to change notification settings

dpaulino/DiffSync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 

Repository files navigation

DiffSync

A .NET Standard 2.0 library to help with data synchronization, such as determining object differences, applying patches, and merging changes.

Install from nuget: https://www.nuget.org/packages/DiffSync

Diff and Patch

using DiffSync;
using JeniusApps.Nightingale.Data.Models;

var w1 = new Workspace
{
    Name = "test",
    Id = "1",
    Items = new List<Item>
    {
        new Item
        {
            Name = "item1"
        }
    }
};

var w2 = new Workspace
{
    Name = "test",
    Id = "1",
    Items = new List<Item>
    {
        new Item
        {
            Name = "item1new"
        }
    }
};

var diff = w1.Diff(w2);
var w3 = w1.Patch(diff);
var newResult = w2.Diff(w3);
Assert.Null(newResult);

Merge

var wBase = new Workspace
{
    Name = "test",
    Id = "1",
    Items = new List<Item>
    {
        new Item
        {
            Name = "item1"
        }
    }
};

var wFork1 = new Workspace
{
    Name = "test",
    Id = "1ConflictFork1",
    Items = new List<Item>
    {
        new Item
        {
            Name = "fork 1"
        }
    }
};

var wFork2 = new Workspace
{
    Name = "fork 2",
    Id = "1ConflictFork2",
    Items = new List<Item>
    {
        new Item
        {
            Name = "item1"
        },
        new Item
        {
            Name = "foobar"
        }
    }
};

var expectedMergeResult = new Workspace
{
    Name = "fork 2",
    Id = "1ConflictFork2",
    Items = new List<Item>
    {
        new Item
        {
            Name = "fork 1"
        },
        new Item
        {
            Name = "foobar"
        }
    }
};

var mergeResult = wBase.Merge(wFork1, wFork2);
var resultDiff = expectedMergeResult.Diff(mergeResult);
Assert.Null(resultDiff);

Attributions

About

A .NET Standard 2.0 library to help with object synchronization, such as determining object differences, applying patches, and merging changes.

Topics

Resources

License

Stars

Watchers

Forks

Languages