Rename batch to change_and_push (and implement batch as noop)
This commit is contained in:
parent
32c802e176
commit
2cfcb0a714
6 changed files with 15 additions and 11 deletions
10
README.md
10
README.md
|
@ -47,8 +47,8 @@ let _ =
|
||||||
|
|
||||||
The user can manipulate the repository as an [RW][mirage-kv-rw] repository. Any
|
The user can manipulate the repository as an [RW][mirage-kv-rw] repository. Any
|
||||||
change to the repository requires a new commit. These changes will be sent to
|
change to the repository requires a new commit. These changes will be sent to
|
||||||
the remote repository. The user can _fold_ any changes into one commit if he/she
|
the remote repository. The user can _fold_ any changes into one commit if
|
||||||
wants.
|
he/she wants.
|
||||||
```ocaml
|
```ocaml
|
||||||
module Store = Git_kv.Make (Pclock)
|
module Store = Git_kv.Make (Pclock)
|
||||||
|
|
||||||
|
@ -58,13 +58,13 @@ let new_file t =
|
||||||
remote repository. *)
|
remote repository. *)
|
||||||
...
|
...
|
||||||
|
|
||||||
let new_files_batched t =
|
let new_files t =
|
||||||
Store.batch t @@ fun t ->
|
Store.change_and_push t @@ fun t ->
|
||||||
Store.set t Mirage_kv.Key.(empty / "foo" "foo") >>= fun () ->
|
Store.set t Mirage_kv.Key.(empty / "foo" "foo") >>= fun () ->
|
||||||
Store.set t Mirage_kv.Key.(empty / "bar" "bar")
|
Store.set t Mirage_kv.Key.(empty / "bar" "bar")
|
||||||
(* XXX(dinosaure): multiple files are added into the local repository
|
(* XXX(dinosaure): multiple files are added into the local repository
|
||||||
but they are committed only at the end of the given function
|
but they are committed only at the end of the given function
|
||||||
to [batch]. That's say, only one commit was made and sended to the
|
to [change_and_push]. That's say, only one commit was made and sended to the
|
||||||
remote Git repository. *)
|
remote Git repository. *)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -139,8 +139,8 @@ let repl store fd_in =
|
||||||
if is_a_tty then Fmt.pr "\n%!" ; pull ~quiet:false store0
|
if is_a_tty then Fmt.pr "\n%!" ; pull ~quiet:false store0
|
||||||
>|= ignore >>= fun () -> go store0
|
>|= ignore >>= fun () -> go store0
|
||||||
| [ "quit"; ] -> Lwt.return ()
|
| [ "quit"; ] -> Lwt.return ()
|
||||||
| [ "batch"; ] ->
|
| [ "fold"; ] ->
|
||||||
Store.batch store0 (fun store1 -> go store1)
|
Store.change_and_push store0 (fun store1 -> go store1)
|
||||||
>>= fun () -> go store0
|
>>= fun () -> go store0
|
||||||
| [ "save"; filename ] ->
|
| [ "save"; filename ] ->
|
||||||
save store0 filename >|= ignore
|
save store0 filename >|= ignore
|
||||||
|
|
|
@ -613,7 +613,9 @@ module Make (Pclock : Mirage_clock.PCLOCK) = struct
|
||||||
remove t source >>= fun () ->
|
remove t source >>= fun () ->
|
||||||
set t dest contents
|
set t dest contents
|
||||||
|
|
||||||
let batch t ?retries:_ f =
|
let batch t ?retries:_ f = f t
|
||||||
|
|
||||||
|
let change_and_push t f =
|
||||||
let open Lwt.Infix in
|
let open Lwt.Infix in
|
||||||
if t.in_closure then Fmt.invalid_arg "Nested change_and_push" ;
|
if t.in_closure then Fmt.invalid_arg "Nested change_and_push" ;
|
||||||
(* XXX(dinosaure): serialize [batch]. If we do [Lwt.both (batch ..) (batch ..)], they
|
(* XXX(dinosaure): serialize [batch]. If we do [Lwt.both (batch ..) (batch ..)], they
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
change produces a commit and after each change we try to transfer them to
|
change produces a commit and after each change we try to transfer them to
|
||||||
the remote Git repository. If you want to make multiple changes but contain
|
the remote Git repository. If you want to make multiple changes but contain
|
||||||
them in a single commit and only transfer those changes once, you should
|
them in a single commit and only transfer those changes once, you should
|
||||||
use the {!val:Make.batch} function.
|
use the {!val:Make.change_and_push} function.
|
||||||
|
|
||||||
{2: Serialization of the Git repository.}
|
{2: Serialization of the Git repository.}
|
||||||
|
|
||||||
|
@ -66,4 +66,6 @@ module Make (Pclock : Mirage_clock.PCLOCK) : sig
|
||||||
| `Hash_not_found of Digestif.SHA1.t
|
| `Hash_not_found of Digestif.SHA1.t
|
||||||
| `Reference_not_found of Git.Reference.t
|
| `Reference_not_found of Git.Reference.t
|
||||||
| Mirage_kv.write_error ]
|
| Mirage_kv.write_error ]
|
||||||
|
|
||||||
|
val change_and_push : t -> (t -> 'a Lwt.t) -> 'a Lwt.t
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,6 +6,6 @@
|
||||||
|
|
||||||
(cram
|
(cram
|
||||||
(package git-kv)
|
(package git-kv)
|
||||||
(applies_to batch)
|
(applies_to fold)
|
||||||
(locks p9418)
|
(locks p9418)
|
||||||
(deps %{bin:mgit}))
|
(deps %{bin:mgit}))
|
||||||
|
|
|
@ -5,7 +5,7 @@ Batch operation
|
||||||
$ cd ..
|
$ cd ..
|
||||||
$ git daemon --base-path=. --export-all --enable=receive-pack --reuseaddr --pid-file=pid --detach
|
$ git daemon --base-path=. --export-all --enable=receive-pack --reuseaddr --pid-file=pid --detach
|
||||||
$ mgit git://localhost/simple#main <<EOF
|
$ mgit git://localhost/simple#main <<EOF
|
||||||
> batch
|
> fold
|
||||||
> set /bar "Git rocks!"
|
> set /bar "Git rocks!"
|
||||||
> set /foo "Hello World!"
|
> set /foo "Hello World!"
|
||||||
> exists /bar
|
> exists /bar
|
Loading…
Reference in a new issue