#pragma once #include #include #include namespace nix { namespace git { // A line from the output of `git ls-remote --symref`. // // These can be of two kinds: // // - Symbolic references of the form // // ref: {target} {reference} // // where {target} is itself a reference and {reference} is optional // // - Object references of the form // // {target} {reference} // // where {target} is a commit id and {reference} is mandatory struct LsRemoteRefLine { enum struct Kind { Symbolic, Object }; Kind kind; std::string target; std::optional reference; }; std::optional parseLsRemoteLine(std::string_view line); } }