Skip to content

Commit 41c67cf

Browse files
authored
Revert "feat: allow usage of --prune with --preserve-dir" (#525)
1 parent f077821 commit 41c67cf

File tree

4 files changed

+9
-151
lines changed

4 files changed

+9
-151
lines changed

CHANGELOG.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
55

66
## [1.11.2] - unreleased
77
### Added
8-
- Prune to work with gitlabs preserve dir; thanks @Fraguinha
98
### Changed
109
### Deprecated
1110
### Removed

cmd/clone.go

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"bufio"
66
"crypto/sha256"
77
"fmt"
8-
"io/fs"
98
"log"
109
"net/url"
1110
"os"
@@ -557,13 +556,7 @@ func printDryRun(repos []scm.Repo) {
557556
// to do.
558557
colorlog.PrintInfo("\nScanning for local clones that have been removed on remote...")
559558

560-
var files []os.DirEntry
561-
var err error
562-
if os.Getenv("GHORG_PRESERVE_DIRECTORY_STRUCTURE") == "true" {
563-
files, err = readDirRecursively(outputDirAbsolutePath)
564-
} else {
565-
files, err = os.ReadDir(outputDirAbsolutePath)
566-
}
559+
files, err := os.ReadDir(outputDirAbsolutePath)
567560
if err != nil {
568561
log.Fatal(err)
569562
}
@@ -606,25 +599,6 @@ func getCloneableInventory(allRepos []scm.Repo) (int, int, int, int) {
606599
return total, repos, snippets, wikis
607600
}
608601

609-
func isGitRepository(path string) bool {
610-
file, err := os.Stat(filepath.Join(path, ".git"))
611-
return err == nil && file.IsDir()
612-
}
613-
614-
func readDirRecursively(name string) ([]os.DirEntry, error) {
615-
var files []os.DirEntry
616-
err := filepath.WalkDir(name, func(path string, file fs.DirEntry, err error) error {
617-
if err != nil {
618-
return err
619-
}
620-
if path != outputDirAbsolutePath && file.IsDir() && isGitRepository(path) {
621-
files = append(files, file)
622-
}
623-
return nil
624-
})
625-
return files, err
626-
}
627-
628602
// CloneAllRepos clones all repos
629603
func CloneAllRepos(git git.Gitter, cloneTargets []scm.Repo) {
630604
// Filter repos that have attributes that don't need specific scm api calls
@@ -1320,13 +1294,7 @@ func pruneRepos(cloneTargets []scm.Repo) int {
13201294
count := 0
13211295
colorlog.PrintInfo("\nScanning for local clones that have been removed on remote...")
13221296

1323-
var files []os.DirEntry
1324-
var err error
1325-
if os.Getenv("GHORG_PRESERVE_DIRECTORY_STRUCTURE") == "true" {
1326-
files, err = readDirRecursively(outputDirAbsolutePath)
1327-
} else {
1328-
files, err = os.ReadDir(outputDirAbsolutePath)
1329-
}
1297+
files, err := os.ReadDir(outputDirAbsolutePath)
13301298
if err != nil {
13311299
log.Fatal(err)
13321300
}
@@ -1397,7 +1365,14 @@ func interactiveYesNoPrompt(prompt string) bool {
13971365
}
13981366

13991367
// There's probably a nicer way of finding whether any scm.Repo in the slice matches a given name.
1368+
// TODO, currently this does not work if user sets --preserve-dir see https://github.com/gabrie30/ghorg/issues/210 for more info
14001369
func sliceContainsNamedRepo(haystack []scm.Repo, needle string) bool {
1370+
1371+
if os.Getenv("GHORG_PRESERVE_DIRECTORY_STRUCTURE") == "true" {
1372+
colorlog.PrintError("GHORG_PRUNE (--prune) does not currently work in combination with GHORG_PRESERVE_DIRECTORY_STRUCTURE (--preserve-dir), this will come in later versions")
1373+
os.Exit(1)
1374+
}
1375+
14011376
for _, repo := range haystack {
14021377
basepath := filepath.Base(repo.Path)
14031378

cmd/clone_test.go

Lines changed: 0 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"errors"
55
"log"
66
"os"
7-
"path/filepath"
87
"reflect"
98
"strings"
109
"testing"
@@ -526,103 +525,3 @@ func Test_filterDownReposIfTargetReposPathEnabled(t *testing.T) {
526525
})
527526
}
528527
}
529-
530-
func TestReadDirRecursively(t *testing.T) {
531-
dir, err := os.MkdirTemp("", "testing")
532-
if err != nil {
533-
t.Fatalf("Failed to create temp directory: %v", err)
534-
}
535-
defer os.RemoveAll(dir)
536-
537-
outputDirAbsolutePath = dir
538-
539-
subDir := filepath.Join(dir, "subdir")
540-
if err := os.Mkdir(subDir, 0o755); err != nil {
541-
t.Fatalf("Failed to create subdirectory: %v", err)
542-
}
543-
544-
gitDir := filepath.Join(subDir, ".git")
545-
if err := os.Mkdir(gitDir, 0o755); err != nil {
546-
t.Fatalf("Failed to create subdirectory: %v", err)
547-
}
548-
549-
files, err := readDirRecursively(dir)
550-
if err != nil {
551-
t.Fatalf("readDirRecursively returned an error: %v", err)
552-
}
553-
554-
if len(files) != 1 {
555-
t.Errorf("Expected %d directories, got %d", 1, len(files))
556-
}
557-
558-
if len(files) > 0 && files[0].Name() != "subdir" {
559-
t.Errorf("Expected directory name 'subdir', got '%s'", files[0].Name())
560-
}
561-
}
562-
563-
func TestReadDirRecursivelyNoGitDir(t *testing.T) {
564-
dir, err := os.MkdirTemp("", "testing")
565-
if err != nil {
566-
t.Fatalf("Failed to create temp directory: %v", err)
567-
}
568-
defer os.RemoveAll(dir)
569-
570-
outputDirAbsolutePath = dir
571-
572-
subDir := filepath.Join(dir, "subdir")
573-
if err := os.Mkdir(subDir, 0o755); err != nil {
574-
t.Fatalf("Failed to create subdirectory: %v", err)
575-
}
576-
577-
files, err := readDirRecursively(dir)
578-
if err != nil {
579-
t.Fatalf("readDirRecursively returned an error: %v", err)
580-
}
581-
582-
if len(files) != 0 {
583-
t.Errorf("Expected %d directories, got %d", 0, len(files))
584-
}
585-
}
586-
587-
func TestReadDirRecursivelyWithGitSubmodule(t *testing.T) {
588-
dir, err := os.MkdirTemp("", "testing")
589-
if err != nil {
590-
t.Fatalf("Failed to create temp directory: %v", err)
591-
}
592-
defer os.RemoveAll(dir)
593-
594-
outputDirAbsolutePath = dir
595-
596-
subDir := filepath.Join(dir, "subdir")
597-
if err := os.Mkdir(subDir, 0o755); err != nil {
598-
t.Fatalf("Failed to create subdirectory: %v", err)
599-
}
600-
601-
gitDir := filepath.Join(subDir, ".git")
602-
if err := os.Mkdir(gitDir, 0o755); err != nil {
603-
t.Fatalf("Failed to create subdirectory: %v", err)
604-
}
605-
606-
submoduleDir := filepath.Join(subDir, "submodule")
607-
if err := os.Mkdir(submoduleDir, 0o755); err != nil {
608-
t.Fatalf("Failed to create subdirectory: %v", err)
609-
}
610-
611-
submoduleGitFile := filepath.Join(submoduleDir, ".git")
612-
if _, err := os.Create(submoduleGitFile); err != nil {
613-
t.Fatalf("Failed to create file: %v", err)
614-
}
615-
616-
files, err := readDirRecursively(dir)
617-
if err != nil {
618-
t.Fatalf("readDirRecursively returned an error: %v", err)
619-
}
620-
621-
if len(files) != 1 {
622-
t.Errorf("Expected %d directories, got %d", 1, len(files))
623-
}
624-
625-
if len(files) > 0 && files[0].Name() != "subdir" {
626-
t.Errorf("Expected directory name 'subdir', got '%s'", files[0].Name())
627-
}
628-
}

scripts/gitlab_cloud_integration_tests.sh

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -87,21 +87,6 @@ else
8787
exit 1
8888
fi
8989

90-
# PRUNE AND PRESERVE DIR
91-
ghorg clone $GITLAB_GROUP --token="${GITLAB_TOKEN}" --scm=gitlab --prune --preserve-dir
92-
git init "${HOME}"/ghorg/"${GITLAB_GROUP}"/wayne-enterprises/wayne-industries/prunable
93-
ghorg clone $GITLAB_GROUP --token="${GITLAB_TOKEN}" --scm=gitlab --prune --preserve-dir
94-
95-
if [ -e "${HOME}"/ghorg/"${GITLAB_GROUP}"/wayne-enterprises/wayne-industries/microservice ] && \
96-
[ ! -e "${HOME}"/ghorg/"${GITLAB_GROUP}"/wayne-enterprises/wayne-industries/prunable ]
97-
then
98-
echo "Pass: gitlab org clone preserve dir, prune"
99-
rm -rf "${HOME}/ghorg/${GITLAB_GROUP}"
100-
else
101-
echo "Fail: gitlab org clone preserve dir, prune"
102-
exit 1
103-
fi
104-
10590
# REPO NAME COLLISION
10691
ghorg clone $GITLAB_GROUP_2 --token="${GITLAB_TOKEN}" --scm=gitlab
10792

0 commit comments

Comments
 (0)