@ -52,7 +52,7 @@ type CreateRepoOptions struct {
ObjectFormatName string
}
func prepareRepoCommit ( ctx context . Context , repo * repo_model . Repository , tmpDir , repoPath string , opts CreateRepoOptions ) error {
func prepareRepoCommit ( ctx context . Context , repo * repo_model . Repository , tmpDir string , opts CreateRepoOptions ) error {
commitTimeStr := time . Now ( ) . Format ( time . RFC3339 )
authorSig := repo . Owner . NewGitSig ( )
@ -67,7 +67,7 @@ func prepareRepoCommit(ctx context.Context, repo *repo_model.Repository, tmpDir,
)
// Clone to temporary path and do the init commit.
if stdout , _ , err := git . NewCommand ( "clone" ) . AddDynamicArguments ( repo Path, tmpDir ) .
if stdout , _ , err := git . NewCommand ( "clone" ) . AddDynamicArguments ( repo . Repo Path( ) , tmpDir ) .
RunStdString ( ctx , & git . RunOpts { Dir : "" , Env : env } ) ; err != nil {
log . Error ( "Failed to clone from %v into %s: stdout: %s\nError: %v" , repo , tmpDir , stdout , err )
return fmt . Errorf ( "git clone: %w" , err )
@ -139,8 +139,8 @@ func prepareRepoCommit(ctx context.Context, repo *repo_model.Repository, tmpDir,
}
// InitRepository initializes README and .gitignore if needed.
func initRepository ( ctx context . Context , repoPath string , u * user_model . User , repo * repo_model . Repository , opts CreateRepoOptions ) ( err error ) {
if err = repo_module . CheckInitRepository ( ctx , repo .OwnerName , repo . Name , opts . ObjectFormatName ); err != nil {
func initRepository ( ctx context . Context , u * user_model . User , repo * repo_model . Repository , opts CreateRepoOptions ) ( err error ) {
if err = repo_module . CheckInitRepository ( ctx , repo ); err != nil {
return err
}
@ -148,7 +148,7 @@ func initRepository(ctx context.Context, repoPath string, u *user_model.User, re
if opts . AutoInit {
tmpDir , err := os . MkdirTemp ( os . TempDir ( ) , "gitea-" + repo . Name )
if err != nil {
return fmt . Errorf ( "Failed to create temp dir for repository %s: %w" , repo . RepoPath ( ) , err )
return fmt . Errorf ( "Failed to create temp dir for repository %s: %w" , repo . FullName ( ) , err )
}
defer func ( ) {
if err := util . RemoveAll ( tmpDir ) ; err != nil {
@ -156,7 +156,7 @@ func initRepository(ctx context.Context, repoPath string, u *user_model.User, re
}
} ( )
if err = prepareRepoCommit ( ctx , repo , tmpDir , repoPath, opts) ; err != nil {
if err = prepareRepoCommit ( ctx , repo , tmpDir , opts) ; err != nil {
return fmt . Errorf ( "prepareRepoCommit: %w" , err )
}
@ -256,10 +256,9 @@ func CreateRepositoryDirectly(ctx context.Context, doer, u *user_model.User, opt
return nil
}
repoPath := repo_model . RepoPath ( u . Name , repo . Name )
isExist , err := util . IsExist ( repoPath )
isExist , err := gitrepo . IsRepositoryExist ( ctx , repo )
if err != nil {
log . Error ( "Unable to check if %s exists. Error: %v" , repo Path , err )
log . Error ( "Unable to check if %s exists. Error: %v" , repo . FullName ( ) , err )
return err
}
if isExist {
@ -270,15 +269,15 @@ func CreateRepositoryDirectly(ctx context.Context, doer, u *user_model.User, opt
//
// Previously Gitea would just delete and start afresh - this was naughty.
// So we will now fail and delegate to other functionality to adopt or delete
log . Error ( "Files already exist in %s and we are not going to adopt or delete." , repo Path )
log . Error ( "Files already exist in %s and we are not going to adopt or delete." , repo . FullName ( ) )
return repo_model . ErrRepoFilesAlreadyExist {
Uname : u . Name ,
Name : repo . Name ,
}
}
if err = initRepository ( ctx , repoPath, doer, repo , opts ) ; err != nil {
if err2 := util . RemoveAll ( repo Path) ; err2 != nil {
if err = initRepository ( ctx , doer, repo , opts ) ; err != nil {
if err2 := util . RemoveAll ( repo . Repo Path( ) ) ; err2 != nil {
log . Error ( "initRepository: %v" , err )
return fmt . Errorf (
"delete repo directory %s/%s failed(2): %v" , u . Name , repo . Name , err2 )
@ -300,7 +299,7 @@ func CreateRepositoryDirectly(ctx context.Context, doer, u *user_model.User, opt
}
if stdout , _ , err := git . NewCommand ( "update-server-info" ) .
RunStdString ( ctx , & git . RunOpts { Dir : repo Path} ) ; err != nil {
RunStdString ( ctx , & git . RunOpts { Dir : repo . Repo Path( ) } ) ; err != nil {
log . Error ( "CreateRepository(git update-server-info) in %v: Stdout: %s\nError: %v" , repo , stdout , err )
rollbackRepo = repo
rollbackRepo . OwnerID = u . ID
@ -312,7 +311,7 @@ func CreateRepositoryDirectly(ctx context.Context, doer, u *user_model.User, opt
if len ( opts . License ) > 0 {
licenses = append ( licenses , opts . License )
stdout , _ , err := git . NewCommand ( "rev-parse" , "HEAD" ) . RunStdString ( ctx , & git . RunOpts { Dir : repo Path} )
stdout , _ , err := git . NewCommand ( "rev-parse" , "HEAD" ) . RunStdString ( ctx , & git . RunOpts { Dir : repo . Repo Path( ) } )
if err != nil {
log . Error ( "CreateRepository(git rev-parse HEAD) in %v: Stdout: %s\nError: %v" , repo , stdout , err )
rollbackRepo = repo
@ -353,14 +352,13 @@ func CreateRepositoryByExample(ctx context.Context, doer, u *user_model.User, re
}
}
repoPath := repo_model . RepoPath ( u . Name , repo . Name )
isExist , err := util . IsExist ( repoPath )
isExist , err := gitrepo . IsRepositoryExist ( ctx , repo )
if err != nil {
log . Error ( "Unable to check if %s exists. Error: %v" , repo Path , err )
log . Error ( "Unable to check if %s exists. Error: %v" , repo . FullName ( ) , err )
return err
}
if ! overwriteOrAdopt && isExist {
log . Error ( "Files already exist in %s and we are not going to adopt or delete." , repo Path )
log . Error ( "Files already exist in %s and we are not going to adopt or delete." , repo . FullName ( ) )
return repo_model . ErrRepoFilesAlreadyExist {
Uname : u . Name ,
Name : repo . Name ,