Basic reflog support
For now it simply includes reading in the reflog as a list of entries. This does mean that the drop/append functions don't need to be wrapped, as we can use erlang's list handling. It however also means that we cannot write this back out, as there is currently no way to create an empty reflog that we can fill with our own list.
This commit is contained in:
@@ -73,6 +73,10 @@ reference_dwim(_Handle, _Name) ->
|
||||
reference_has_log(_Handle, _Name) ->
|
||||
?NIF_FN.
|
||||
|
||||
-spec reflog_read(term(), iolist()) -> {ok, geef_reflog:reflog()} | {error, term()}.
|
||||
reflog_read(_Handle, _Name) ->
|
||||
?NIF_FN.
|
||||
|
||||
odb_object_exists(_Val, _Val) ->
|
||||
nif_error(?LINE).
|
||||
|
||||
|
||||
@@ -14,4 +14,8 @@
|
||||
-record(geef_signature, {name :: iolist(), email :: iolist(), time :: geef_sig:time()}).
|
||||
-record(geef_iterator, {type :: atom(), repo :: pid(), regexp :: iolist(), handle}).
|
||||
|
||||
-record(geef_reflog_entry, {committer :: geef_sig:signature(),
|
||||
id_old :: geef_oid:oid(), id_new :: geef_oid:oid(),
|
||||
message :: iolist()}).
|
||||
|
||||
-type geef_request() :: #geef_request{}.
|
||||
|
||||
16
src/geef_reflog.erl
Normal file
16
src/geef_reflog.erl
Normal file
@@ -0,0 +1,16 @@
|
||||
%% -*- erlang-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
-module(geef_reflog).
|
||||
|
||||
-include("geef_records.hrl").
|
||||
|
||||
-type entry() :: #geef_reflog_entry{}.
|
||||
-export_type([entry/0]).
|
||||
|
||||
%% API
|
||||
-export([read/2]).
|
||||
|
||||
%% @doc Read in a reflog
|
||||
-spec read(pid(), iolist()) -> {ok, [entry()]} | {error, term()}.
|
||||
read(Repo, Name) ->
|
||||
geef_repo:reflog_read(Repo, Name).
|
||||
@@ -1,11 +1,6 @@
|
||||
%%%-------------------------------------------------------------------
|
||||
%%% @author Carlos Martín Nieto <cmn@dwim.me>
|
||||
%%% @copyright (C) 2013, Carlos Martín Nieto
|
||||
%%% @doc
|
||||
%%%
|
||||
%%% @end
|
||||
%%% Created : 6 Apr 2013 by Carlos Martín Nieto <cmn@dwim.me>
|
||||
%%%-------------------------------------------------------------------
|
||||
%% -*- erlang-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
%%% @copyright (C) 2013-2014, Carlos Martín Nieto <cmn@dwim.me>
|
||||
|
||||
-module(geef_repo).
|
||||
|
||||
-behaviour(gen_server).
|
||||
@@ -19,6 +14,7 @@
|
||||
lookup_object/2, revwalk/1, stop/1,
|
||||
reference_dwim/2, handle/1, iterator/2]).
|
||||
-export([reference_has_log/2]).
|
||||
-export([reflog_read/2]).
|
||||
|
||||
-include("geef_records.hrl").
|
||||
-record(state, {handle}).
|
||||
@@ -100,6 +96,10 @@ revwalk(Pid) ->
|
||||
reference_has_log(Pid, Name) ->
|
||||
gen_server:call(Pid, {has_log, Name}).
|
||||
|
||||
%% @private
|
||||
reflog_read(Pid, Name) ->
|
||||
gen_server:call(Pid, {reflog_read, Name}).
|
||||
|
||||
stop(Pid) ->
|
||||
gen_server:call(Pid, stop).
|
||||
|
||||
@@ -146,6 +146,10 @@ handle_call({has_log, Name}, _From, State = #state{handle=Handle}) ->
|
||||
Reply = geef_nif:reference_has_log(Handle, Name),
|
||||
{reply, Reply, State};
|
||||
|
||||
handle_call({reflog_read, Name}, _From, State = #state{handle=Handle}) ->
|
||||
Reply = geef_nif:reflog_read(Handle, Name),
|
||||
{reply, Reply, State};
|
||||
|
||||
handle_call(stop, _From, State) ->
|
||||
{stop, normal, ok, State};
|
||||
handle_call(revwalk, _From, State = #state{handle=Handle}) ->
|
||||
|
||||
Reference in New Issue
Block a user