mirror of
https://github.com/Smaug123/managed-git
synced 2025-10-15 12:48:47 +00:00
Ref disambiguation, and barebones Log (doesn't correspond to any of git's logs in order)
This commit is contained in:
29
Git/Reference.fs
Normal file
29
Git/Reference.fs
Normal file
@@ -0,0 +1,29 @@
|
||||
namespace Git
|
||||
|
||||
|
||||
type ReferenceUpdate =
|
||||
{
|
||||
Was : Hash option
|
||||
Now : Hash
|
||||
}
|
||||
|
||||
[<RequireQualifiedAccess>]
|
||||
module Reference =
|
||||
let write (r : Repository) (hash : Hash) (name : string) : ReferenceUpdate =
|
||||
let refFile = r.Fs.Path.Combine ((Repository.refDir r).FullName, "heads", name) |> r.Fs.FileInfo.FromFileName
|
||||
let was =
|
||||
if refFile.Exists then
|
||||
r.Fs.File.ReadAllText refFile.FullName
|
||||
|> Hash.ofString
|
||||
|> Some
|
||||
else
|
||||
do
|
||||
use _v = refFile.Create ()
|
||||
()
|
||||
None
|
||||
r.Fs.File.WriteAllText (refFile.FullName, hash.ToString ())
|
||||
{
|
||||
Was = was
|
||||
Now = hash
|
||||
}
|
||||
|
Reference in New Issue
Block a user