diff options
| author | nsfisis <nsfisis@gmail.com> | 2023-07-13 00:57:55 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2023-07-13 00:58:21 +0900 |
| commit | 616d202b75034d7a6a6c8f6e88e636cd93b38270 (patch) | |
| tree | 5d325eceaaebeadc6562e9905ae5232d63a9a075 /src/gitalias/git-sw.go | |
| parent | be32bf44d629849a75f3536a885e612d8d51b1ee (diff) | |
| download | dotfiles-616d202b75034d7a6a6c8f6e88e636cd93b38270.tar.gz dotfiles-616d202b75034d7a6a6c8f6e88e636cd93b38270.tar.zst dotfiles-616d202b75034d7a6a6c8f6e88e636cd93b38270.zip | |
git:git-sw: add "-d" flag if the given ref seems to be commit hash
Diffstat (limited to 'src/gitalias/git-sw.go')
| -rw-r--r-- | src/gitalias/git-sw.go | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/gitalias/git-sw.go b/src/gitalias/git-sw.go index 78f7397..5c098a1 100644 --- a/src/gitalias/git-sw.go +++ b/src/gitalias/git-sw.go @@ -51,7 +51,23 @@ func requiresDetachFlag(argv []string) bool { return false } firstArg := argv[1] - return strings.HasPrefix(firstArg, "origin/") || strings.HasPrefix(firstArg, "upstream/") + + // Example: origin/main, upstream/develop + if strings.HasPrefix(firstArg, "origin/") || strings.HasPrefix(firstArg, "upstream/") { + return true + } + + // Example: 1234, cafebabe + if len(firstArg) >= 4 { + for _, c := range firstArg { + if !unicode.Is(unicode.ASCII_Hex_Digit, c) { + return false + } + } + return true + } + + return false } func isInt(s string) bool { |
