Skip to content
  • Sami Hiltunen's avatar
    Split 'internal/git' package · a8d3c6a3
    Sami Hiltunen authored
    git package is a bit of a mess. Not only does it define the interfaces
    and types that the rest of the application should use, various
    implementations are also defined in the package, most notably the
    CommandFactory. This makes it difficult for other packages to actually
    rely on the types in the Git package. While they may want to import a
    type like `git.ObjectID`, the implementation in the package may easily
    lead to cyclic dependencies.
    
    This is the case for example with the storage package where we'd like
    to define a transaction interface that the rest of the application
    could import. This is currently not possible as the transaction interface
    uses `git.ObjectID` which leads to a cyclic import as the command factory
    implementation requires `storage.Locator`. This has lead to defining the
    Transaction interface in the storagectx package as a workaround.
    
    We'd like to now define the storage layer's interface in the storage
    package, and this includes the Transaction. This commit ...
    a8d3c6a3