NanoVC Memory Implementation

Great News!

I have published the NanoVC API as well as a memory implementation that can get us started. This is all you need to start exploring the world of Nano Version Control.

Here is an example of what you can do with it:

@Test
public void testHelloWorld()
{
  // Create the repo:
  StringNanoRepo repo = new StringNanoRepo();

  // Create an area for us to put content:
  // NOTE: Think of this as a mini-filesystem.
  StringHashMapArea contentArea = repo.createArea();

  contentArea.putString("Hello", "World");
  contentArea.putString("Static", "Content");
  contentArea.putString("Mistake", "Honest");

  // Commit the content:
  MemoryCommit commit1 = repo.commit(contentArea, "First commit!");

  // Modify content:
  contentArea.putString("Hello", "Nano World");

  // Remove unwanted content:
  contentArea.removeContent("Mistake");

  // The content area supports paths:
  contentArea.putString(RepoPath.at("Hello").resolve("Info"), "Details");

  // And even emoji's:
  contentArea.putString(RepoPath.at("🔧").resolve("👍"), "I ❤ NanoVC‼");

  // Commit again, but this time to a branch:
  MemoryCommit commit2 = repo.commitToBranch(contentArea, "master", "Second commit.");

  // Get the difference between the two commits:
  Comparison comparison = repo.computeComparisonBetweenCommits(commit1, commit2);
  assertEquals(
    "/Hello : Changed\n" +
    "/Hello/Info : Added\n" +
    "/Mistake : Deleted\n" +
    "/Static : Unchanged\n" +
    "/🔧/👍 : Added",
    comparison.asListString()
  );
}

This is what you need to do to get it using Gradle:

repositories {
    mavenCentral()
}

dependencies {
    implementation group: "io.nanovc", name: "nanovc-memory", version: "0.0.4"
}

I will be writing up better Getting Started Guides from here, but this should give you a taste of more to come.

Until the next commit…

Leave a Reply

Your email address will not be published. Required fields are marked *