diff options
author | Paulo Gomes <pjbgf@linux.com> | 2023-09-15 17:56:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-15 17:56:55 +0100 |
commit | c208b4d513d0e9537f2160cb6d33609c4aa01795 (patch) | |
tree | bf76313751ced493b4c298725d6eeaf567c05872 | |
parent | e24e0f714c4ecaf086b5783f099a885e6a2c9a1a (diff) | |
parent | 644929ade3ac7c07c370be8065fa2ac6faf081be (diff) | |
download | go-git-c208b4d513d0e9537f2160cb6d33609c4aa01795.tar.gz |
Merge pull request #782 from ThinkChaos/feat/plain-init-branch
git: add PlainInitOptions.Bare and allow using InitOptions with PlainInitWithOptions
-rw-r--r-- | options.go | 3 | ||||
-rw-r--r-- | repository.go | 25 | ||||
-rw-r--r-- | repository_test.go | 24 |
3 files changed, 40 insertions, 12 deletions
@@ -737,6 +737,9 @@ type PlainOpenOptions struct { func (o *PlainOpenOptions) Validate() error { return nil } type PlainInitOptions struct { + InitOptions + // Determines if the repository will have a worktree (non-bare) or not (bare). + Bare bool ObjectFormat formatcfg.ObjectFormat } diff --git a/repository.go b/repository.go index 3154ac0..013b53f 100644 --- a/repository.go +++ b/repository.go @@ -235,9 +235,19 @@ func CloneContext( // if the repository will have worktree (non-bare) or not (bare), if the path // is not empty ErrRepositoryAlreadyExists is returned. func PlainInit(path string, isBare bool) (*Repository, error) { + return PlainInitWithOptions(path, &PlainInitOptions{ + Bare: isBare, + }) +} + +func PlainInitWithOptions(path string, opts *PlainInitOptions) (*Repository, error) { + if opts == nil { + opts = &PlainInitOptions{} + } + var wt, dot billy.Filesystem - if isBare { + if opts.Bare { dot = osfs.New(path) } else { wt = osfs.New(path) @@ -246,16 +256,7 @@ func PlainInit(path string, isBare bool) (*Repository, error) { s := filesystem.NewStorage(dot, cache.NewObjectLRUDefault()) - return Init(s, wt) -} - -func PlainInitWithOptions(path string, opts *PlainInitOptions) (*Repository, error) { - wt := osfs.New(path) - dot, _ := wt.Chroot(GitDirName) - - s := filesystem.NewStorage(dot, cache.NewObjectLRUDefault()) - - r, err := Init(s, wt) + r, err := InitWithOptions(s, wt, opts.InitOptions) if err != nil { return nil, err } @@ -265,7 +266,7 @@ func PlainInitWithOptions(path string, opts *PlainInitOptions) (*Repository, err return nil, err } - if opts != nil { + if opts.ObjectFormat != "" { if opts.ObjectFormat == formatcfg.SHA256 && hash.CryptoType != crypto.SHA256 { return nil, ErrSHA256NotSupported } diff --git a/repository_test.go b/repository_test.go index 9e000a3..3154f1d 100644 --- a/repository_test.go +++ b/repository_test.go @@ -518,6 +518,30 @@ func (s *RepositorySuite) TestPlainInit(c *C) { c.Assert(cfg.Core.IsBare, Equals, true) } +func (s *RepositorySuite) TestPlainInitWithOptions(c *C) { + dir, clean := s.TemporalDir() + defer clean() + + r, err := PlainInitWithOptions(dir, &PlainInitOptions{ + InitOptions: InitOptions{ + DefaultBranch: "refs/heads/foo", + }, + Bare: false, + }) + c.Assert(err, IsNil) + c.Assert(r, NotNil) + + cfg, err := r.Config() + c.Assert(err, IsNil) + c.Assert(cfg.Core.IsBare, Equals, false) + + createCommit(c, r) + + ref, err := r.Head() + c.Assert(err, IsNil) + c.Assert(ref.Name().String(), Equals, "refs/heads/foo") +} + func (s *RepositorySuite) TestPlainInitAlreadyExists(c *C) { dir, clean := s.TemporalDir() defer clean() |