module HBS2.Git3.Repo.Fork (forkEntries) where import HBS2.Git3.Prelude import HBS2.Git3.State import HBS2.Git3.Git import HBS2.Data.Detect import HBS2.Data.Log.Structured import HBS2.CLI.Run.Internal.Merkle (createTreeWithMetadata) -- import HBS2.CLI.Run.RefLog (mkRefLogUpdateFrom) import HBS2.System.Dir import HBS2.Git3.Config.Local import Data.Config.Suckless.Script import Data.Config.Suckless.Almost.RPC import Codec.Compression.Zstd.Streaming qualified as ZstdS import Codec.Compression.Zstd.Streaming (Result(..)) import Data.ByteString.Builder as Builder import Data.ByteString.Lazy.Char8 qualified as LBS8 import Data.ByteString.Lazy qualified as LBS import Data.ByteString qualified as BS import Data.ByteString (ByteString) import Data.Fixed import Data.HashPSQ qualified as HPSQ import Data.HashPSQ (HashPSQ) import Data.HashSet (HashSet) import Data.HashSet qualified as HS import Data.HashMap.Strict qualified as HM import Data.List qualified as L import Data.List (sortBy) import Data.List.Split (chunksOf) import Data.Ord (comparing) import Lens.Micro.Platform import Streaming.Prelude qualified as S import System.IO (hPrint) import System.IO qualified as IO import System.IO.Temp as Temp import UnliftIO.Concurrent forkEntries :: forall m . (HBS2GitPerks m) => Id -> MakeDictM C (Git3 m) () forkEntries prefix = do entry $ bindMatch (prefix <> "fork") $ nil_ $ \case [ SignPubKeyLike what ] -> lift $ connectedDo do error $ show $ "not yet" <+> pretty (AsBase58 what) r <- callProc "git" ["--init"] [] none _ -> throwIO $ BadFormException @C nil