diff options
author | Guillaume Maudoux <guillaume.maudoux@tweag.io> | 2022-09-07 00:34:03 +0200 |
---|---|---|
committer | Guillaume Maudoux <guillaume.maudoux@tweag.io> | 2022-09-07 00:34:03 +0200 |
commit | eb460a9529dd79995b6b788d59322fbc8f989214 (patch) | |
tree | 2dec54ef6b3096d787cb49cb0f2f6b7041b1f6c1 /src/libutil/git.hh | |
parent | 9ff892aad4ee13532ea84cb6e4a2a53d70945efe (diff) | |
parent | 96001098796c9011d1670cc8a7acd00ef49b2d7a (diff) |
WIP: broken merge but need a git checkpoint
Diffstat (limited to 'src/libutil/git.hh')
-rw-r--r-- | src/libutil/git.hh | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/libutil/git.hh b/src/libutil/git.hh new file mode 100644 index 000000000..cb13ef0e5 --- /dev/null +++ b/src/libutil/git.hh @@ -0,0 +1,40 @@ +#pragma once + +#include <string> +#include <string_view> +#include <optional> + +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<std::string> reference; +}; + +std::optional<LsRemoteRefLine> parseLsRemoteLine(std::string_view line); + +} + +} |