@fredlackey/devutils 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/package.json +1 -1
- package/src/commands/install.js +374 -36
- package/src/installs/adobe-creative-cloud.js +527 -25
- package/src/installs/adobe-creative-cloud.md +605 -0
- package/src/installs/appcleaner.js +303 -26
- package/src/installs/appcleaner.md +699 -0
- package/src/installs/apt-transport-https.js +390 -0
- package/src/installs/apt-transport-https.md +678 -0
- package/src/installs/atomicparsley.js +624 -26
- package/src/installs/atomicparsley.md +795 -0
- package/src/installs/aws-cli.js +779 -26
- package/src/installs/aws-cli.md +727 -0
- package/src/installs/balena-etcher.js +688 -26
- package/src/installs/balena-etcher.md +761 -0
- package/src/installs/bambu-studio.js +912 -26
- package/src/installs/bambu-studio.md +780 -0
- package/src/installs/bash-completion.js +554 -23
- package/src/installs/bash-completion.md +833 -0
- package/src/installs/bash.js +399 -26
- package/src/installs/bash.md +993 -0
- package/src/installs/beyond-compare.js +585 -26
- package/src/installs/beyond-compare.md +813 -0
- package/src/installs/build-essential.js +511 -26
- package/src/installs/build-essential.md +977 -0
- package/src/installs/ca-certificates.js +618 -0
- package/src/installs/ca-certificates.md +937 -0
- package/src/installs/caffeine.js +490 -26
- package/src/installs/caffeine.md +839 -0
- package/src/installs/camtasia.js +577 -25
- package/src/installs/camtasia.md +762 -0
- package/src/installs/chatgpt.js +458 -26
- package/src/installs/chatgpt.md +814 -0
- package/src/installs/chocolatey.js +447 -0
- package/src/installs/chocolatey.md +661 -0
- package/src/installs/chrome-canary.js +472 -26
- package/src/installs/chrome-canary.md +641 -0
- package/src/installs/chromium.js +645 -26
- package/src/installs/chromium.md +838 -0
- package/src/installs/claude-code.js +558 -26
- package/src/installs/claude-code.md +1173 -0
- package/src/installs/curl.js +361 -26
- package/src/installs/curl.md +714 -0
- package/src/installs/cursor.js +561 -26
- package/src/installs/cursor.md +970 -0
- package/src/installs/dbschema.js +674 -26
- package/src/installs/dbschema.md +925 -0
- package/src/installs/dependencies.md +435 -0
- package/src/installs/development-tools.js +600 -0
- package/src/installs/development-tools.md +977 -0
- package/src/installs/docker.js +1010 -25
- package/src/installs/docker.md +1109 -0
- package/src/installs/drawio.js +1001 -26
- package/src/installs/drawio.md +795 -0
- package/src/installs/elmedia-player.js +328 -25
- package/src/installs/elmedia-player.md +556 -0
- package/src/installs/ffmpeg.js +870 -25
- package/src/installs/ffmpeg.md +852 -0
- package/src/installs/file.js +464 -0
- package/src/installs/file.md +987 -0
- package/src/installs/gemini-cli.js +793 -26
- package/src/installs/gemini-cli.md +1153 -0
- package/src/installs/git.js +382 -26
- package/src/installs/git.md +907 -0
- package/src/installs/gitego.js +931 -26
- package/src/installs/gitego.md +1172 -0
- package/src/installs/go.js +913 -26
- package/src/installs/go.md +958 -0
- package/src/installs/google-chrome.js +801 -25
- package/src/installs/google-chrome.md +862 -0
- package/src/installs/gpg.js +412 -73
- package/src/installs/gpg.md +1056 -0
- package/src/installs/homebrew.js +1015 -26
- package/src/installs/homebrew.md +988 -0
- package/src/installs/imageoptim.js +950 -26
- package/src/installs/imageoptim.md +1119 -0
- package/src/installs/installers.json +2297 -0
- package/src/installs/jq.js +382 -26
- package/src/installs/jq.md +809 -0
- package/src/installs/keyboard-maestro.js +701 -26
- package/src/installs/keyboard-maestro.md +825 -0
- package/src/installs/latex.js +771 -26
- package/src/installs/latex.md +1095 -0
- package/src/installs/lftp.js +338 -26
- package/src/installs/lftp.md +907 -0
- package/src/installs/lsb-release.js +346 -0
- package/src/installs/lsb-release.md +814 -0
- package/src/installs/messenger.js +829 -26
- package/src/installs/messenger.md +900 -0
- package/src/installs/microsoft-office.js +550 -26
- package/src/installs/microsoft-office.md +760 -0
- package/src/installs/microsoft-teams.js +782 -25
- package/src/installs/microsoft-teams.md +886 -0
- package/src/installs/node.js +886 -26
- package/src/installs/node.md +1153 -0
- package/src/installs/nordpass.js +698 -26
- package/src/installs/nordpass.md +921 -0
- package/src/installs/nvm.js +977 -26
- package/src/installs/nvm.md +1057 -0
- package/src/installs/openssh.js +734 -64
- package/src/installs/openssh.md +1056 -0
- package/src/installs/pandoc.js +644 -26
- package/src/installs/pandoc.md +1036 -0
- package/src/installs/pinentry.js +492 -26
- package/src/installs/pinentry.md +1142 -0
- package/src/installs/pngyu.js +851 -26
- package/src/installs/pngyu.md +896 -0
- package/src/installs/postman.js +781 -26
- package/src/installs/postman.md +940 -0
- package/src/installs/procps.js +425 -0
- package/src/installs/procps.md +851 -0
- package/src/installs/safari-tech-preview.js +355 -25
- package/src/installs/safari-tech-preview.md +533 -0
- package/src/installs/sfnt2woff.js +640 -26
- package/src/installs/sfnt2woff.md +795 -0
- package/src/installs/shellcheck.js +463 -26
- package/src/installs/shellcheck.md +1005 -0
- package/src/installs/slack.js +722 -25
- package/src/installs/slack.md +865 -0
- package/src/installs/snagit.js +566 -25
- package/src/installs/snagit.md +844 -0
- package/src/installs/software-properties-common.js +372 -0
- package/src/installs/software-properties-common.md +805 -0
- package/src/installs/spotify.js +858 -25
- package/src/installs/spotify.md +901 -0
- package/src/installs/studio-3t.js +803 -26
- package/src/installs/studio-3t.md +918 -0
- package/src/installs/sublime-text.js +780 -25
- package/src/installs/sublime-text.md +914 -0
- package/src/installs/superwhisper.js +687 -25
- package/src/installs/superwhisper.md +630 -0
- package/src/installs/tailscale.js +727 -26
- package/src/installs/tailscale.md +1100 -0
- package/src/installs/tar.js +389 -0
- package/src/installs/tar.md +946 -0
- package/src/installs/termius.js +780 -26
- package/src/installs/termius.md +844 -0
- package/src/installs/terraform.js +761 -26
- package/src/installs/terraform.md +899 -0
- package/src/installs/tidal.js +752 -25
- package/src/installs/tidal.md +864 -0
- package/src/installs/tmux.js +328 -26
- package/src/installs/tmux.md +1030 -0
- package/src/installs/tree.js +393 -26
- package/src/installs/tree.md +833 -0
- package/src/installs/unzip.js +460 -0
- package/src/installs/unzip.md +879 -0
- package/src/installs/vim.js +403 -26
- package/src/installs/vim.md +1040 -0
- package/src/installs/vlc.js +803 -26
- package/src/installs/vlc.md +927 -0
- package/src/installs/vscode.js +825 -26
- package/src/installs/vscode.md +1002 -0
- package/src/installs/wget.js +415 -0
- package/src/installs/wget.md +791 -0
- package/src/installs/whatsapp.js +710 -25
- package/src/installs/whatsapp.md +854 -0
- package/src/installs/winpty.js +352 -0
- package/src/installs/winpty.md +620 -0
- package/src/installs/woff2.js +535 -26
- package/src/installs/woff2.md +977 -0
- package/src/installs/wsl.js +572 -0
- package/src/installs/wsl.md +699 -0
- package/src/installs/xcode-clt.js +520 -0
- package/src/installs/xcode-clt.md +351 -0
- package/src/installs/xcode.js +542 -26
- package/src/installs/xcode.md +573 -0
- package/src/installs/yarn.js +806 -26
- package/src/installs/yarn.md +1074 -0
- package/src/installs/yq.js +636 -26
- package/src/installs/yq.md +944 -0
- package/src/installs/yt-dlp.js +683 -26
- package/src/installs/yt-dlp.md +946 -0
- package/src/installs/yum-utils.js +297 -0
- package/src/installs/yum-utils.md +648 -0
- package/src/installs/zoom.js +740 -25
- package/src/installs/zoom.md +884 -0
- package/src/scripts/README.md +567 -45
- package/src/scripts/STATUS.md +208 -0
- package/src/scripts/afk.js +395 -7
- package/src/scripts/backup-all.js +731 -9
- package/src/scripts/backup-source.js +711 -8
- package/src/scripts/brewd.js +373 -7
- package/src/scripts/brewi.js +505 -9
- package/src/scripts/brewr.js +512 -9
- package/src/scripts/brews.js +462 -9
- package/src/scripts/brewu.js +488 -7
- package/src/scripts/c.js +185 -7
- package/src/scripts/ccurl.js +325 -8
- package/src/scripts/certbot-crontab-init.js +488 -8
- package/src/scripts/certbot-init.js +641 -9
- package/src/scripts/ch.js +339 -7
- package/src/scripts/claude-danger.js +253 -8
- package/src/scripts/clean-dev.js +419 -8
- package/src/scripts/clear-dns-cache.js +525 -7
- package/src/scripts/clone.js +417 -7
- package/src/scripts/code-all.js +420 -7
- package/src/scripts/count-files.js +195 -8
- package/src/scripts/count-folders.js +195 -8
- package/src/scripts/count.js +248 -8
- package/src/scripts/d.js +203 -7
- package/src/scripts/datauri.js +373 -8
- package/src/scripts/delete-files.js +363 -7
- package/src/scripts/docker-clean.js +410 -8
- package/src/scripts/dp.js +426 -7
- package/src/scripts/e.js +375 -9
- package/src/scripts/empty-trash.js +497 -7
- package/src/scripts/evm.js +428 -9
- package/src/scripts/fetch-github-repos.js +441 -10
- package/src/scripts/get-channel.js +329 -8
- package/src/scripts/get-course.js +384 -11
- package/src/scripts/get-dependencies.js +290 -9
- package/src/scripts/get-folder.js +783 -10
- package/src/scripts/get-tunes.js +411 -10
- package/src/scripts/get-video.js +352 -9
- package/src/scripts/git-backup.js +561 -9
- package/src/scripts/git-clone.js +477 -9
- package/src/scripts/git-pup.js +303 -7
- package/src/scripts/git-push.js +380 -8
- package/src/scripts/h.js +607 -9
- package/src/scripts/hide-desktop-icons.js +483 -7
- package/src/scripts/hide-hidden-files.js +522 -7
- package/src/scripts/install-dependencies-from.js +440 -9
- package/src/scripts/ips.js +647 -10
- package/src/scripts/iso.js +354 -8
- package/src/scripts/killni.js +561 -7
- package/src/scripts/ll.js +451 -8
- package/src/scripts/local-ip.js +310 -8
- package/src/scripts/m.js +508 -8
- package/src/scripts/map.js +293 -8
- package/src/scripts/mkd.js +287 -7
- package/src/scripts/ncu-update-all.js +441 -8
- package/src/scripts/nginx-init.js +702 -12
- package/src/scripts/npmi.js +366 -7
- package/src/scripts/o.js +495 -8
- package/src/scripts/org-by-date.js +321 -7
- package/src/scripts/p.js +208 -7
- package/src/scripts/packages.js +313 -8
- package/src/scripts/path.js +209 -7
- package/src/scripts/ports.js +582 -8
- package/src/scripts/q.js +290 -8
- package/src/scripts/refresh-files.js +378 -10
- package/src/scripts/remove-smaller-files.js +500 -8
- package/src/scripts/rename-files-with-date.js +517 -9
- package/src/scripts/resize-image.js +523 -9
- package/src/scripts/rm-safe.js +653 -8
- package/src/scripts/s.js +525 -9
- package/src/scripts/set-git-public.js +349 -7
- package/src/scripts/show-desktop-icons.js +459 -7
- package/src/scripts/show-hidden-files.js +456 -7
- package/src/scripts/tpa.js +265 -8
- package/src/scripts/tpo.js +264 -7
- package/src/scripts/u.js +489 -7
- package/src/scripts/vpush.js +422 -8
- package/src/scripts/y.js +267 -7
- package/src/utils/common/os.js +94 -2
- package/src/utils/ubuntu/apt.js +13 -7
- package/src/utils/windows/choco.js +82 -26
- package/src/utils/windows/winget.js +89 -27
|
@@ -0,0 +1,1172 @@
|
|
|
1
|
+
# Installing gitego
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
gitego is a Git identity manager and automatic profile switcher that eliminates the risk of committing to a repository with the wrong user identity. It allows you to define separate profiles for work, personal projects, and clients, then automatically switches between them based on your working directory.
|
|
6
|
+
|
|
7
|
+
Key features include:
|
|
8
|
+
|
|
9
|
+
- **Automatic profile switching**: Configure profiles to activate automatically when you enter a specific directory
|
|
10
|
+
- **Unified identity management**: A single profile manages your commit author (user.name, email), authentication method (SSH keys), and API token (PAT)
|
|
11
|
+
- **Secure credential storage**: Personal Access Tokens are stored in your operating system's native keychain (macOS Keychain, Windows Credential Manager, or Linux Secret Service), never in plaintext configuration files
|
|
12
|
+
- **Cross-platform support**: Works natively on macOS, Windows, and Linux
|
|
13
|
+
|
|
14
|
+
gitego uses Git's `includeIf` directive for identity switching and acts as a Git credential helper for HTTPS authentication.
|
|
15
|
+
|
|
16
|
+
## Dependencies
|
|
17
|
+
|
|
18
|
+
### macOS (Homebrew)
|
|
19
|
+
- **Required:**
|
|
20
|
+
- `homebrew` - Install from https://brew.sh
|
|
21
|
+
- `git` - Install via `brew install git` (usually pre-installed with Xcode Command Line Tools)
|
|
22
|
+
- **Optional:** None
|
|
23
|
+
- **Auto-installed:**
|
|
24
|
+
- `go` (version 1.24+) - Automatically installed via `brew install go` if not present or version is too old
|
|
25
|
+
|
|
26
|
+
### Ubuntu (APT/Snap)
|
|
27
|
+
- **Required:**
|
|
28
|
+
- `git` - Install via `sudo apt-get install -y git`
|
|
29
|
+
- `wget` - Install via `sudo apt-get install -y wget` (usually pre-installed)
|
|
30
|
+
- **Optional:** None
|
|
31
|
+
- **Auto-installed:**
|
|
32
|
+
- Go 1.24+ - Downloaded directly from https://go.dev/dl/go1.24.0.linux-amd64.tar.gz and installed to /usr/local/go
|
|
33
|
+
- `libsecret-1-0` - Installed via `sudo apt-get install -y libsecret-1-0` for secure PAT storage
|
|
34
|
+
|
|
35
|
+
### Raspberry Pi OS (APT/Snap)
|
|
36
|
+
- **Required:**
|
|
37
|
+
- `git` - Install via `sudo apt-get install -y git`
|
|
38
|
+
- `wget` - Install via `sudo apt-get install -y wget` (usually pre-installed)
|
|
39
|
+
- **Optional:** None
|
|
40
|
+
- **Auto-installed:**
|
|
41
|
+
- Go 1.24+ - Downloaded directly from https://go.dev/dl/ (arm64 or armv6l variant based on detected architecture) and installed to /usr/local/go
|
|
42
|
+
- `libsecret-1-0` - Installed via `sudo apt-get install -y libsecret-1-0` for secure PAT storage
|
|
43
|
+
|
|
44
|
+
### Amazon Linux (DNF/YUM)
|
|
45
|
+
- **Required:**
|
|
46
|
+
- `git` - Install via `sudo dnf install -y git` (AL2023) or `sudo yum install -y git` (AL2)
|
|
47
|
+
- **Optional:** None
|
|
48
|
+
- **Auto-installed:**
|
|
49
|
+
- `wget` - Installed via `sudo dnf install -y wget` or `sudo yum install -y wget` if not present
|
|
50
|
+
- Go 1.24+ - Downloaded directly from https://go.dev/dl/go1.24.0.linux-amd64.tar.gz and installed to /usr/local/go
|
|
51
|
+
- `libsecret` - Attempted installation via `sudo dnf install -y libsecret` or `sudo yum install -y libsecret` for secure PAT storage (may fail on headless servers, which is expected)
|
|
52
|
+
|
|
53
|
+
### Windows (Chocolatey/winget)
|
|
54
|
+
- **Required:**
|
|
55
|
+
- `git` - Install via `choco install git -y` or `winget install --id Git.Git --silent`
|
|
56
|
+
- `chocolatey` OR `winget` - At least one package manager must be installed. Install Chocolatey from https://chocolatey.org/install
|
|
57
|
+
- **Optional:** None
|
|
58
|
+
- **Auto-installed:**
|
|
59
|
+
- `go` (version 1.24+) - Installed via `choco install golang` or `winget install --id GoLang.Go` if not present or version is too old
|
|
60
|
+
|
|
61
|
+
### Git Bash (Manual/Portable)
|
|
62
|
+
- **Required:**
|
|
63
|
+
- `git` - Install Git for Windows from https://git-scm.com/downloads
|
|
64
|
+
- `go` (version 1.24+) - Must be pre-installed on Windows via `choco install golang -y` or `winget install --id GoLang.Go --silent`
|
|
65
|
+
- **Optional:** None
|
|
66
|
+
- **Auto-installed:** None (Git Bash inherits Windows environment, so dependencies must be installed on Windows first)
|
|
67
|
+
|
|
68
|
+
## Prerequisites
|
|
69
|
+
|
|
70
|
+
Before installing gitego on any platform, ensure:
|
|
71
|
+
|
|
72
|
+
1. **Git installed and configured** - gitego manages Git identities, so Git must be present
|
|
73
|
+
2. **Internet connectivity** - Required to download Go and gitego
|
|
74
|
+
3. **Terminal/shell access** - All installation is performed via command line
|
|
75
|
+
|
|
76
|
+
**Critical Requirement**: Go 1.24 or later must be installed. gitego is a Go application installed via `go install`. Each platform section below includes Go installation steps.
|
|
77
|
+
|
|
78
|
+
## Platform-Specific Installation
|
|
79
|
+
|
|
80
|
+
### macOS (Homebrew)
|
|
81
|
+
|
|
82
|
+
#### Prerequisites
|
|
83
|
+
|
|
84
|
+
- macOS 10.15 (Catalina) or later
|
|
85
|
+
- Homebrew package manager installed
|
|
86
|
+
- Git installed (included with macOS Command Line Tools)
|
|
87
|
+
|
|
88
|
+
If Homebrew is not installed, install it first (this command is non-interactive after initial installation):
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
#### Installation Steps
|
|
95
|
+
|
|
96
|
+
**Step 1: Install Go**
|
|
97
|
+
|
|
98
|
+
Install Go using Homebrew:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
brew install --quiet go
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Verify Go is installed and meets the version requirement:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
go version
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Expected output should show Go 1.24 or later.
|
|
111
|
+
|
|
112
|
+
**Step 2: Ensure Go bin directory is in PATH**
|
|
113
|
+
|
|
114
|
+
Add the Go bin directory to your PATH by adding this line to your shell profile. For zsh (default on modern macOS):
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.zshrc && source ~/.zshrc
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
For bash:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.bash_profile && source ~/.bash_profile
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Step 3: Install gitego**
|
|
127
|
+
|
|
128
|
+
Install gitego using Go's package manager:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
go install github.com/bgreenwell/gitego@latest
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Step 4: Configure Git to use gitego as credential helper**
|
|
135
|
+
|
|
136
|
+
Clear any existing credential helpers and set gitego as the primary handler:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
git config --global credential.helper ""
|
|
140
|
+
git config --global --add credential.helper "!gitego credential"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
#### Verification
|
|
144
|
+
|
|
145
|
+
Confirm gitego is installed:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
gitego --version
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Expected output:
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
gitego version 0.1.1
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Test the credential helper configuration:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
git config --global --get-all credential.helper
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Expected output:
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
!gitego credential
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
#### Troubleshooting
|
|
170
|
+
|
|
171
|
+
**Problem**: `gitego: command not found`
|
|
172
|
+
|
|
173
|
+
**Solution**: The Go bin directory is not in your PATH. Verify the PATH includes `~/go/bin`:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
echo $PATH | tr ':' '\n' | grep go
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
If not present, add it to your shell profile:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.zshrc && source ~/.zshrc
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Problem**: `go install` fails with version error
|
|
186
|
+
|
|
187
|
+
**Solution**: Your Go version is too old. Update Go:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
brew upgrade go
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Problem**: Credential helper not working
|
|
194
|
+
|
|
195
|
+
**Solution**: Verify the configuration is correct:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
git config --global --get-all credential.helper
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
If multiple entries exist, clear and reconfigure:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
git config --global --unset-all credential.helper
|
|
205
|
+
git config --global credential.helper ""
|
|
206
|
+
git config --global --add credential.helper "!gitego credential"
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
### Ubuntu/Debian (APT)
|
|
212
|
+
|
|
213
|
+
#### Prerequisites
|
|
214
|
+
|
|
215
|
+
- Ubuntu 20.04 or later, or Debian 11 (Bullseye) or later
|
|
216
|
+
- sudo privileges
|
|
217
|
+
- Git installed
|
|
218
|
+
|
|
219
|
+
Install Git if not present:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
223
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
#### Installation Steps
|
|
227
|
+
|
|
228
|
+
**Step 1: Install Go**
|
|
229
|
+
|
|
230
|
+
The version of Go in Ubuntu/Debian repositories is often outdated. Download and install Go directly from the official source to ensure you have version 1.24 or later:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
# Download Go 1.24 (adjust version as needed for newer releases)
|
|
234
|
+
wget -q https://go.dev/dl/go1.24.0.linux-amd64.tar.gz -O /tmp/go.tar.gz
|
|
235
|
+
|
|
236
|
+
# Remove any existing Go installation and extract new version
|
|
237
|
+
sudo rm -rf /usr/local/go
|
|
238
|
+
sudo tar -C /usr/local -xzf /tmp/go.tar.gz
|
|
239
|
+
|
|
240
|
+
# Clean up downloaded archive
|
|
241
|
+
rm /tmp/go.tar.gz
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**Step 2: Configure PATH**
|
|
245
|
+
|
|
246
|
+
Add Go to your PATH:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Verify Go is installed correctly:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
go version
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Expected output should show Go 1.24 or later.
|
|
259
|
+
|
|
260
|
+
**Step 3: Install gitego**
|
|
261
|
+
|
|
262
|
+
Install gitego using Go's package manager:
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
go install github.com/bgreenwell/gitego@latest
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**Step 4: Configure Git to use gitego as credential helper**
|
|
269
|
+
|
|
270
|
+
Clear any existing credential helpers and set gitego as the primary handler:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
git config --global credential.helper ""
|
|
274
|
+
git config --global --add credential.helper "!gitego credential"
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
**Step 5: Install libsecret for secure credential storage**
|
|
278
|
+
|
|
279
|
+
gitego uses the Linux Secret Service for secure PAT storage. Install the required library:
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libsecret-1-0
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
#### Verification
|
|
286
|
+
|
|
287
|
+
Confirm gitego is installed:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
gitego --version
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
Expected output:
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
gitego version 0.1.1
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Test the credential helper configuration:
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
git config --global --get-all credential.helper
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Expected output:
|
|
306
|
+
|
|
307
|
+
```
|
|
308
|
+
!gitego credential
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
#### Troubleshooting
|
|
312
|
+
|
|
313
|
+
**Problem**: `gitego: command not found`
|
|
314
|
+
|
|
315
|
+
**Solution**: The Go bin directory is not in your PATH. Add it:
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
**Problem**: Go version is too old
|
|
322
|
+
|
|
323
|
+
**Solution**: The system Go package is outdated. Remove it and install from official tarball:
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get remove -y golang-go
|
|
327
|
+
wget -q https://go.dev/dl/go1.24.0.linux-amd64.tar.gz -O /tmp/go.tar.gz
|
|
328
|
+
sudo rm -rf /usr/local/go
|
|
329
|
+
sudo tar -C /usr/local -xzf /tmp/go.tar.gz
|
|
330
|
+
rm /tmp/go.tar.gz
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**Problem**: Secure credential storage fails
|
|
334
|
+
|
|
335
|
+
**Solution**: Ensure you have a running secret service (like GNOME Keyring):
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y gnome-keyring
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
### Raspberry Pi OS (APT)
|
|
344
|
+
|
|
345
|
+
#### Prerequisites
|
|
346
|
+
|
|
347
|
+
- Raspberry Pi OS (64-bit recommended) - Bookworm or Bullseye
|
|
348
|
+
- Raspberry Pi 3B+ or later (64-bit capable hardware)
|
|
349
|
+
- sudo privileges
|
|
350
|
+
- Git installed
|
|
351
|
+
|
|
352
|
+
First, verify your architecture:
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
uname -m
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
- `aarch64` = 64-bit (use arm64 Go binary)
|
|
359
|
+
- `armv7l` = 32-bit (use armv6l Go binary)
|
|
360
|
+
|
|
361
|
+
Install Git if not present:
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
365
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
#### Installation Steps
|
|
369
|
+
|
|
370
|
+
**Step 1: Install Go**
|
|
371
|
+
|
|
372
|
+
Download the appropriate Go binary for your Raspberry Pi architecture.
|
|
373
|
+
|
|
374
|
+
**For 64-bit Raspberry Pi OS (aarch64):**
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
wget -q https://go.dev/dl/go1.24.0.linux-arm64.tar.gz -O /tmp/go.tar.gz
|
|
378
|
+
sudo rm -rf /usr/local/go
|
|
379
|
+
sudo tar -C /usr/local -xzf /tmp/go.tar.gz
|
|
380
|
+
rm /tmp/go.tar.gz
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
**For 32-bit Raspberry Pi OS (armv7l):**
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
wget -q https://go.dev/dl/go1.24.0.linux-armv6l.tar.gz -O /tmp/go.tar.gz
|
|
387
|
+
sudo rm -rf /usr/local/go
|
|
388
|
+
sudo tar -C /usr/local -xzf /tmp/go.tar.gz
|
|
389
|
+
rm /tmp/go.tar.gz
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
**Step 2: Configure PATH**
|
|
393
|
+
|
|
394
|
+
Add Go to your PATH:
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
Verify Go is installed correctly:
|
|
401
|
+
|
|
402
|
+
```bash
|
|
403
|
+
go version
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
Expected output should show Go 1.24 or later.
|
|
407
|
+
|
|
408
|
+
**Step 3: Install gitego**
|
|
409
|
+
|
|
410
|
+
Install gitego using Go's package manager:
|
|
411
|
+
|
|
412
|
+
```bash
|
|
413
|
+
go install github.com/bgreenwell/gitego@latest
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
**Note**: Compilation on Raspberry Pi may take several minutes due to limited processing power.
|
|
417
|
+
|
|
418
|
+
**Step 4: Configure Git to use gitego as credential helper**
|
|
419
|
+
|
|
420
|
+
Clear any existing credential helpers and set gitego as the primary handler:
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
git config --global credential.helper ""
|
|
424
|
+
git config --global --add credential.helper "!gitego credential"
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
**Step 5: Install libsecret for secure credential storage**
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libsecret-1-0
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
#### Verification
|
|
434
|
+
|
|
435
|
+
Confirm gitego is installed:
|
|
436
|
+
|
|
437
|
+
```bash
|
|
438
|
+
gitego --version
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
Expected output:
|
|
442
|
+
|
|
443
|
+
```
|
|
444
|
+
gitego version 0.1.1
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
#### Troubleshooting
|
|
448
|
+
|
|
449
|
+
**Problem**: `go install` fails with "exec format error"
|
|
450
|
+
|
|
451
|
+
**Solution**: You downloaded the wrong architecture binary. Check your architecture with `uname -m` and download the correct Go tarball (arm64 for aarch64, armv6l for armv7l).
|
|
452
|
+
|
|
453
|
+
**Problem**: Compilation is extremely slow or fails with out of memory
|
|
454
|
+
|
|
455
|
+
**Solution**: Raspberry Pi has limited resources. Increase swap space:
|
|
456
|
+
|
|
457
|
+
```bash
|
|
458
|
+
sudo fallocate -l 2G /swapfile
|
|
459
|
+
sudo chmod 600 /swapfile
|
|
460
|
+
sudo mkswap /swapfile
|
|
461
|
+
sudo swapon /swapfile
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
Then retry the installation.
|
|
465
|
+
|
|
466
|
+
**Problem**: `gitego: command not found`
|
|
467
|
+
|
|
468
|
+
**Solution**: Ensure Go bin directory is in PATH:
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
### Amazon Linux (DNF/YUM)
|
|
477
|
+
|
|
478
|
+
#### Prerequisites
|
|
479
|
+
|
|
480
|
+
- Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
|
|
481
|
+
- sudo privileges
|
|
482
|
+
- Git installed
|
|
483
|
+
|
|
484
|
+
Install Git if not present:
|
|
485
|
+
|
|
486
|
+
```bash
|
|
487
|
+
# For Amazon Linux 2023
|
|
488
|
+
sudo dnf install -y git
|
|
489
|
+
|
|
490
|
+
# For Amazon Linux 2
|
|
491
|
+
sudo yum install -y git
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
#### Installation Steps
|
|
495
|
+
|
|
496
|
+
**Step 1: Install Go**
|
|
497
|
+
|
|
498
|
+
The Go version in Amazon Linux repositories may be outdated. Download and install Go directly from the official source:
|
|
499
|
+
|
|
500
|
+
```bash
|
|
501
|
+
wget -q https://go.dev/dl/go1.24.0.linux-amd64.tar.gz -O /tmp/go.tar.gz
|
|
502
|
+
sudo rm -rf /usr/local/go
|
|
503
|
+
sudo tar -C /usr/local -xzf /tmp/go.tar.gz
|
|
504
|
+
rm /tmp/go.tar.gz
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
**Step 2: Configure PATH**
|
|
508
|
+
|
|
509
|
+
Add Go to your PATH:
|
|
510
|
+
|
|
511
|
+
```bash
|
|
512
|
+
echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
Verify Go is installed correctly:
|
|
516
|
+
|
|
517
|
+
```bash
|
|
518
|
+
go version
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
Expected output should show Go 1.24 or later.
|
|
522
|
+
|
|
523
|
+
**Step 3: Install gitego**
|
|
524
|
+
|
|
525
|
+
Install gitego using Go's package manager:
|
|
526
|
+
|
|
527
|
+
```bash
|
|
528
|
+
go install github.com/bgreenwell/gitego@latest
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
**Step 4: Configure Git to use gitego as credential helper**
|
|
532
|
+
|
|
533
|
+
Clear any existing credential helpers and set gitego as the primary handler:
|
|
534
|
+
|
|
535
|
+
```bash
|
|
536
|
+
git config --global credential.helper ""
|
|
537
|
+
git config --global --add credential.helper "!gitego credential"
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
**Step 5: Install libsecret for secure credential storage (optional)**
|
|
541
|
+
|
|
542
|
+
For secure PAT storage on headless servers, install libsecret:
|
|
543
|
+
|
|
544
|
+
```bash
|
|
545
|
+
# For Amazon Linux 2023
|
|
546
|
+
sudo dnf install -y libsecret
|
|
547
|
+
|
|
548
|
+
# For Amazon Linux 2
|
|
549
|
+
sudo yum install -y libsecret
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
**Note**: On headless servers without a graphical environment, the secret service may not be available. In this case, gitego will still function for identity switching, but PAT storage may require alternative configuration.
|
|
553
|
+
|
|
554
|
+
#### Verification
|
|
555
|
+
|
|
556
|
+
Confirm gitego is installed:
|
|
557
|
+
|
|
558
|
+
```bash
|
|
559
|
+
gitego --version
|
|
560
|
+
```
|
|
561
|
+
|
|
562
|
+
Expected output:
|
|
563
|
+
|
|
564
|
+
```
|
|
565
|
+
gitego version 0.1.1
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
Test the credential helper configuration:
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
git config --global --get-all credential.helper
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
Expected output:
|
|
575
|
+
|
|
576
|
+
```
|
|
577
|
+
!gitego credential
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
#### Troubleshooting
|
|
581
|
+
|
|
582
|
+
**Problem**: `gitego: command not found`
|
|
583
|
+
|
|
584
|
+
**Solution**: The Go bin directory is not in your PATH. Add it:
|
|
585
|
+
|
|
586
|
+
```bash
|
|
587
|
+
echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
**Problem**: `wget: command not found`
|
|
591
|
+
|
|
592
|
+
**Solution**: Install wget:
|
|
593
|
+
|
|
594
|
+
```bash
|
|
595
|
+
# For Amazon Linux 2023
|
|
596
|
+
sudo dnf install -y wget
|
|
597
|
+
|
|
598
|
+
# For Amazon Linux 2
|
|
599
|
+
sudo yum install -y wget
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
**Problem**: Secret service not available on headless server
|
|
603
|
+
|
|
604
|
+
**Solution**: gitego still works for identity switching without a secret service. For PAT management on headless servers, consider using SSH keys instead, or configure a headless secret service like `pass`.
|
|
605
|
+
|
|
606
|
+
---
|
|
607
|
+
|
|
608
|
+
### Windows (Chocolatey/winget)
|
|
609
|
+
|
|
610
|
+
#### Prerequisites
|
|
611
|
+
|
|
612
|
+
- Windows 10 version 1809 or later, or Windows 11
|
|
613
|
+
- Administrator PowerShell or Command Prompt
|
|
614
|
+
- Git for Windows installed
|
|
615
|
+
- Chocolatey or winget package manager
|
|
616
|
+
|
|
617
|
+
If Git is not installed, install it first:
|
|
618
|
+
|
|
619
|
+
```powershell
|
|
620
|
+
choco install git -y
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
Or with winget:
|
|
624
|
+
|
|
625
|
+
```powershell
|
|
626
|
+
winget install --id Git.Git --silent --accept-package-agreements --accept-source-agreements
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
#### Installation Steps
|
|
630
|
+
|
|
631
|
+
**Step 1: Install Go**
|
|
632
|
+
|
|
633
|
+
Using Chocolatey (run in Administrator PowerShell):
|
|
634
|
+
|
|
635
|
+
```powershell
|
|
636
|
+
choco install golang -y
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
Using winget:
|
|
640
|
+
|
|
641
|
+
```powershell
|
|
642
|
+
winget install --id GoLang.Go --silent --accept-package-agreements --accept-source-agreements
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
**Step 2: Refresh environment variables**
|
|
646
|
+
|
|
647
|
+
Close and reopen your terminal, or in PowerShell run:
|
|
648
|
+
|
|
649
|
+
```powershell
|
|
650
|
+
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
Verify Go is installed:
|
|
654
|
+
|
|
655
|
+
```powershell
|
|
656
|
+
go version
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
Expected output should show Go 1.24 or later.
|
|
660
|
+
|
|
661
|
+
**Step 3: Install gitego**
|
|
662
|
+
|
|
663
|
+
Install gitego using Go's package manager:
|
|
664
|
+
|
|
665
|
+
```powershell
|
|
666
|
+
go install github.com/bgreenwell/gitego@latest
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
**Step 4: Add Go bin to PATH**
|
|
670
|
+
|
|
671
|
+
The Go bin directory needs to be in your PATH. Add it permanently:
|
|
672
|
+
|
|
673
|
+
```powershell
|
|
674
|
+
$gopath = [System.Environment]::GetEnvironmentVariable("GOPATH", "User")
|
|
675
|
+
if (-not $gopath) { $gopath = "$env:USERPROFILE\go" }
|
|
676
|
+
$binPath = "$gopath\bin"
|
|
677
|
+
$currentPath = [System.Environment]::GetEnvironmentVariable("Path", "User")
|
|
678
|
+
if ($currentPath -notlike "*$binPath*") {
|
|
679
|
+
[System.Environment]::SetEnvironmentVariable("Path", "$currentPath;$binPath", "User")
|
|
680
|
+
}
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
Close and reopen your terminal for the PATH change to take effect.
|
|
684
|
+
|
|
685
|
+
**Step 5: Configure Git to use gitego as credential helper**
|
|
686
|
+
|
|
687
|
+
Clear any existing credential helpers and set gitego as the primary handler:
|
|
688
|
+
|
|
689
|
+
```powershell
|
|
690
|
+
git config --global credential.helper ""
|
|
691
|
+
git config --global --add credential.helper "!gitego credential"
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
#### Verification
|
|
695
|
+
|
|
696
|
+
Confirm gitego is installed:
|
|
697
|
+
|
|
698
|
+
```powershell
|
|
699
|
+
gitego --version
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
Expected output:
|
|
703
|
+
|
|
704
|
+
```
|
|
705
|
+
gitego version 0.1.1
|
|
706
|
+
```
|
|
707
|
+
|
|
708
|
+
Test the credential helper configuration:
|
|
709
|
+
|
|
710
|
+
```powershell
|
|
711
|
+
git config --global --get-all credential.helper
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
Expected output:
|
|
715
|
+
|
|
716
|
+
```
|
|
717
|
+
!gitego credential
|
|
718
|
+
```
|
|
719
|
+
|
|
720
|
+
#### Troubleshooting
|
|
721
|
+
|
|
722
|
+
**Problem**: `gitego: The term 'gitego' is not recognized`
|
|
723
|
+
|
|
724
|
+
**Solution**: The Go bin directory is not in your PATH. Add it and restart your terminal:
|
|
725
|
+
|
|
726
|
+
```powershell
|
|
727
|
+
$gopath = "$env:USERPROFILE\go"
|
|
728
|
+
$binPath = "$gopath\bin"
|
|
729
|
+
[System.Environment]::SetEnvironmentVariable("Path", "$env:Path;$binPath", "User")
|
|
730
|
+
```
|
|
731
|
+
|
|
732
|
+
Then close and reopen PowerShell.
|
|
733
|
+
|
|
734
|
+
**Problem**: `go install` fails with network error
|
|
735
|
+
|
|
736
|
+
**Solution**: Check your internet connection and proxy settings. If behind a corporate proxy:
|
|
737
|
+
|
|
738
|
+
```powershell
|
|
739
|
+
$env:HTTP_PROXY = "http://proxy.example.com:8080"
|
|
740
|
+
$env:HTTPS_PROXY = "http://proxy.example.com:8080"
|
|
741
|
+
go install github.com/bgreenwell/gitego@latest
|
|
742
|
+
```
|
|
743
|
+
|
|
744
|
+
**Problem**: Go version is outdated
|
|
745
|
+
|
|
746
|
+
**Solution**: Update Go using Chocolatey:
|
|
747
|
+
|
|
748
|
+
```powershell
|
|
749
|
+
choco upgrade golang -y
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
Or with winget:
|
|
753
|
+
|
|
754
|
+
```powershell
|
|
755
|
+
winget upgrade --id GoLang.Go
|
|
756
|
+
```
|
|
757
|
+
|
|
758
|
+
---
|
|
759
|
+
|
|
760
|
+
### WSL (Ubuntu)
|
|
761
|
+
|
|
762
|
+
#### Prerequisites
|
|
763
|
+
|
|
764
|
+
- Windows 10 version 2004 or higher, or Windows 11
|
|
765
|
+
- WSL 2 enabled with Ubuntu distribution installed
|
|
766
|
+
- sudo privileges within WSL
|
|
767
|
+
- Git installed in WSL
|
|
768
|
+
|
|
769
|
+
Verify you are running WSL 2:
|
|
770
|
+
|
|
771
|
+
```bash
|
|
772
|
+
wsl.exe --list --verbose
|
|
773
|
+
```
|
|
774
|
+
|
|
775
|
+
Your Ubuntu distribution should show "2" in the VERSION column.
|
|
776
|
+
|
|
777
|
+
Install Git if not present:
|
|
778
|
+
|
|
779
|
+
```bash
|
|
780
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
781
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
#### Installation Steps
|
|
785
|
+
|
|
786
|
+
**Step 1: Install Go**
|
|
787
|
+
|
|
788
|
+
Download and install Go from the official source:
|
|
789
|
+
|
|
790
|
+
```bash
|
|
791
|
+
wget -q https://go.dev/dl/go1.24.0.linux-amd64.tar.gz -O /tmp/go.tar.gz
|
|
792
|
+
sudo rm -rf /usr/local/go
|
|
793
|
+
sudo tar -C /usr/local -xzf /tmp/go.tar.gz
|
|
794
|
+
rm /tmp/go.tar.gz
|
|
795
|
+
```
|
|
796
|
+
|
|
797
|
+
**Step 2: Configure PATH**
|
|
798
|
+
|
|
799
|
+
Add Go to your PATH:
|
|
800
|
+
|
|
801
|
+
```bash
|
|
802
|
+
echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
|
|
803
|
+
```
|
|
804
|
+
|
|
805
|
+
Verify Go is installed correctly:
|
|
806
|
+
|
|
807
|
+
```bash
|
|
808
|
+
go version
|
|
809
|
+
```
|
|
810
|
+
|
|
811
|
+
Expected output should show Go 1.24 or later.
|
|
812
|
+
|
|
813
|
+
**Step 3: Install gitego**
|
|
814
|
+
|
|
815
|
+
Install gitego using Go's package manager:
|
|
816
|
+
|
|
817
|
+
```bash
|
|
818
|
+
go install github.com/bgreenwell/gitego@latest
|
|
819
|
+
```
|
|
820
|
+
|
|
821
|
+
**Step 4: Configure Git to use gitego as credential helper**
|
|
822
|
+
|
|
823
|
+
Clear any existing credential helpers and set gitego as the primary handler:
|
|
824
|
+
|
|
825
|
+
```bash
|
|
826
|
+
git config --global credential.helper ""
|
|
827
|
+
git config --global --add credential.helper "!gitego credential"
|
|
828
|
+
```
|
|
829
|
+
|
|
830
|
+
**Step 5: Configure credential storage for WSL**
|
|
831
|
+
|
|
832
|
+
WSL does not have a native secret service running by default. Install and configure pass for credential storage:
|
|
833
|
+
|
|
834
|
+
```bash
|
|
835
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y pass gnupg
|
|
836
|
+
```
|
|
837
|
+
|
|
838
|
+
Generate a GPG key for pass (follow the prompts):
|
|
839
|
+
|
|
840
|
+
```bash
|
|
841
|
+
gpg --batch --gen-key <<EOF
|
|
842
|
+
Key-Type: RSA
|
|
843
|
+
Key-Length: 4096
|
|
844
|
+
Name-Real: gitego
|
|
845
|
+
Name-Email: gitego@localhost
|
|
846
|
+
Expire-Date: 0
|
|
847
|
+
%no-protection
|
|
848
|
+
EOF
|
|
849
|
+
```
|
|
850
|
+
|
|
851
|
+
Initialize pass with the generated key:
|
|
852
|
+
|
|
853
|
+
```bash
|
|
854
|
+
pass init "gitego"
|
|
855
|
+
```
|
|
856
|
+
|
|
857
|
+
#### Verification
|
|
858
|
+
|
|
859
|
+
Confirm gitego is installed:
|
|
860
|
+
|
|
861
|
+
```bash
|
|
862
|
+
gitego --version
|
|
863
|
+
```
|
|
864
|
+
|
|
865
|
+
Expected output:
|
|
866
|
+
|
|
867
|
+
```
|
|
868
|
+
gitego version 0.1.1
|
|
869
|
+
```
|
|
870
|
+
|
|
871
|
+
Test the credential helper configuration:
|
|
872
|
+
|
|
873
|
+
```bash
|
|
874
|
+
git config --global --get-all credential.helper
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
Expected output:
|
|
878
|
+
|
|
879
|
+
```
|
|
880
|
+
!gitego credential
|
|
881
|
+
```
|
|
882
|
+
|
|
883
|
+
#### Troubleshooting
|
|
884
|
+
|
|
885
|
+
**Problem**: `gitego: command not found`
|
|
886
|
+
|
|
887
|
+
**Solution**: Ensure Go bin directory is in PATH:
|
|
888
|
+
|
|
889
|
+
```bash
|
|
890
|
+
echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
|
|
891
|
+
```
|
|
892
|
+
|
|
893
|
+
**Problem**: WSL 1 compatibility issues
|
|
894
|
+
|
|
895
|
+
**Solution**: Upgrade to WSL 2:
|
|
896
|
+
|
|
897
|
+
```powershell
|
|
898
|
+
wsl --set-version Ubuntu 2
|
|
899
|
+
```
|
|
900
|
+
|
|
901
|
+
**Problem**: Secret storage errors
|
|
902
|
+
|
|
903
|
+
**Solution**: Ensure pass is properly initialized:
|
|
904
|
+
|
|
905
|
+
```bash
|
|
906
|
+
pass init "$(gpg --list-keys --keyid-format LONG | grep -A1 pub | tail -1 | awk '{print $1}')"
|
|
907
|
+
```
|
|
908
|
+
|
|
909
|
+
---
|
|
910
|
+
|
|
911
|
+
### Git Bash (Windows)
|
|
912
|
+
|
|
913
|
+
#### Prerequisites
|
|
914
|
+
|
|
915
|
+
- Windows 10 or Windows 11 (64-bit)
|
|
916
|
+
- Git Bash installed (comes with Git for Windows)
|
|
917
|
+
- Go installed on Windows (see Windows section)
|
|
918
|
+
|
|
919
|
+
Git Bash inherits the Windows PATH, so if Go and gitego are installed on Windows, they will be available in Git Bash automatically.
|
|
920
|
+
|
|
921
|
+
#### Installation Steps
|
|
922
|
+
|
|
923
|
+
**Step 1: Install Go on Windows**
|
|
924
|
+
|
|
925
|
+
If Go is not already installed, install it using Chocolatey from an Administrator PowerShell:
|
|
926
|
+
|
|
927
|
+
```powershell
|
|
928
|
+
choco install golang -y
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
Or with winget:
|
|
932
|
+
|
|
933
|
+
```powershell
|
|
934
|
+
winget install --id GoLang.Go --silent --accept-package-agreements --accept-source-agreements
|
|
935
|
+
```
|
|
936
|
+
|
|
937
|
+
**Step 2: Install gitego**
|
|
938
|
+
|
|
939
|
+
Open Git Bash and install gitego:
|
|
940
|
+
|
|
941
|
+
```bash
|
|
942
|
+
go install github.com/bgreenwell/gitego@latest
|
|
943
|
+
```
|
|
944
|
+
|
|
945
|
+
**Step 3: Add Go bin to PATH**
|
|
946
|
+
|
|
947
|
+
If gitego is not found after installation, add the Go bin directory to your Git Bash profile:
|
|
948
|
+
|
|
949
|
+
```bash
|
|
950
|
+
echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
|
|
951
|
+
```
|
|
952
|
+
|
|
953
|
+
**Step 4: Configure Git to use gitego as credential helper**
|
|
954
|
+
|
|
955
|
+
Clear any existing credential helpers and set gitego as the primary handler:
|
|
956
|
+
|
|
957
|
+
```bash
|
|
958
|
+
git config --global credential.helper ""
|
|
959
|
+
git config --global --add credential.helper "!gitego credential"
|
|
960
|
+
```
|
|
961
|
+
|
|
962
|
+
#### Verification
|
|
963
|
+
|
|
964
|
+
Confirm gitego is installed:
|
|
965
|
+
|
|
966
|
+
```bash
|
|
967
|
+
gitego --version
|
|
968
|
+
```
|
|
969
|
+
|
|
970
|
+
Expected output:
|
|
971
|
+
|
|
972
|
+
```
|
|
973
|
+
gitego version 0.1.1
|
|
974
|
+
```
|
|
975
|
+
|
|
976
|
+
Test the credential helper configuration:
|
|
977
|
+
|
|
978
|
+
```bash
|
|
979
|
+
git config --global --get-all credential.helper
|
|
980
|
+
```
|
|
981
|
+
|
|
982
|
+
Expected output:
|
|
983
|
+
|
|
984
|
+
```
|
|
985
|
+
!gitego credential
|
|
986
|
+
```
|
|
987
|
+
|
|
988
|
+
#### Troubleshooting
|
|
989
|
+
|
|
990
|
+
**Problem**: `gitego: command not found`
|
|
991
|
+
|
|
992
|
+
**Solution**: Add the Go bin directory to your PATH:
|
|
993
|
+
|
|
994
|
+
```bash
|
|
995
|
+
echo 'export PATH="$PATH:$HOME/go/bin:/c/Users/$USER/go/bin"' >> ~/.bashrc && source ~/.bashrc
|
|
996
|
+
```
|
|
997
|
+
|
|
998
|
+
**Problem**: `go: command not found`
|
|
999
|
+
|
|
1000
|
+
**Solution**: Go is not installed or not in PATH. Install Go on Windows first (see Windows section), then restart Git Bash.
|
|
1001
|
+
|
|
1002
|
+
**Problem**: Credential helper not working
|
|
1003
|
+
|
|
1004
|
+
**Solution**: Verify the Git configuration:
|
|
1005
|
+
|
|
1006
|
+
```bash
|
|
1007
|
+
git config --global --list | grep credential
|
|
1008
|
+
```
|
|
1009
|
+
|
|
1010
|
+
Reconfigure if needed:
|
|
1011
|
+
|
|
1012
|
+
```bash
|
|
1013
|
+
git config --global --unset-all credential.helper
|
|
1014
|
+
git config --global credential.helper ""
|
|
1015
|
+
git config --global --add credential.helper "!gitego credential"
|
|
1016
|
+
```
|
|
1017
|
+
|
|
1018
|
+
---
|
|
1019
|
+
|
|
1020
|
+
## Post-Installation Configuration
|
|
1021
|
+
|
|
1022
|
+
After installing gitego on any platform, complete these configuration steps.
|
|
1023
|
+
|
|
1024
|
+
### Create Your First Profile
|
|
1025
|
+
|
|
1026
|
+
Create a default profile with your primary Git identity:
|
|
1027
|
+
|
|
1028
|
+
```bash
|
|
1029
|
+
gitego add personal --name "Your Name" --email "you@example.com" --username "your-github-username"
|
|
1030
|
+
```
|
|
1031
|
+
|
|
1032
|
+
Set it as the global default:
|
|
1033
|
+
|
|
1034
|
+
```bash
|
|
1035
|
+
gitego use personal
|
|
1036
|
+
```
|
|
1037
|
+
|
|
1038
|
+
### Create Additional Profiles
|
|
1039
|
+
|
|
1040
|
+
Create profiles for different contexts:
|
|
1041
|
+
|
|
1042
|
+
```bash
|
|
1043
|
+
# Work profile with SSH key
|
|
1044
|
+
gitego add work --name "Your Name" --email "you@company.com" --username "work-username" --ssh-key ~/.ssh/id_work
|
|
1045
|
+
|
|
1046
|
+
# Client profile with Personal Access Token
|
|
1047
|
+
gitego add client --name "Your Name" --email "you@client.com" --username "client-username" --pat "ghp_YourPATHere"
|
|
1048
|
+
```
|
|
1049
|
+
|
|
1050
|
+
### Configure Auto-Switching
|
|
1051
|
+
|
|
1052
|
+
Set up automatic profile switching based on directory:
|
|
1053
|
+
|
|
1054
|
+
```bash
|
|
1055
|
+
gitego auto ~/work/ work
|
|
1056
|
+
gitego auto ~/personal/ personal
|
|
1057
|
+
gitego auto ~/clients/abc/ client
|
|
1058
|
+
```
|
|
1059
|
+
|
|
1060
|
+
### Install Pre-Commit Hook (Optional)
|
|
1061
|
+
|
|
1062
|
+
Add a safety hook to prevent commits with the wrong identity:
|
|
1063
|
+
|
|
1064
|
+
```bash
|
|
1065
|
+
cd /path/to/your/repo
|
|
1066
|
+
gitego install-hook
|
|
1067
|
+
```
|
|
1068
|
+
|
|
1069
|
+
### Verify Configuration
|
|
1070
|
+
|
|
1071
|
+
Check the current effective Git identity:
|
|
1072
|
+
|
|
1073
|
+
```bash
|
|
1074
|
+
gitego status
|
|
1075
|
+
```
|
|
1076
|
+
|
|
1077
|
+
List all configured profiles:
|
|
1078
|
+
|
|
1079
|
+
```bash
|
|
1080
|
+
gitego list
|
|
1081
|
+
```
|
|
1082
|
+
|
|
1083
|
+
---
|
|
1084
|
+
|
|
1085
|
+
## Common Issues
|
|
1086
|
+
|
|
1087
|
+
### Issue: "error: cannot run gitego credential: No such file or directory"
|
|
1088
|
+
|
|
1089
|
+
**Symptoms**: Git operations fail with credential helper errors.
|
|
1090
|
+
|
|
1091
|
+
**Solution**: gitego is not in your PATH. Verify the installation:
|
|
1092
|
+
|
|
1093
|
+
```bash
|
|
1094
|
+
which gitego
|
|
1095
|
+
```
|
|
1096
|
+
|
|
1097
|
+
If not found, add the Go bin directory to your PATH (see platform-specific instructions above).
|
|
1098
|
+
|
|
1099
|
+
### Issue: Profile not switching automatically
|
|
1100
|
+
|
|
1101
|
+
**Symptoms**: `gitego status` shows the wrong profile when in a configured directory.
|
|
1102
|
+
|
|
1103
|
+
**Solution**: Verify auto-switching rules:
|
|
1104
|
+
|
|
1105
|
+
```bash
|
|
1106
|
+
gitego list
|
|
1107
|
+
```
|
|
1108
|
+
|
|
1109
|
+
Ensure the directory path in the auto rule matches your actual directory structure. The path must be an exact prefix match.
|
|
1110
|
+
|
|
1111
|
+
### Issue: PAT not being used for HTTPS operations
|
|
1112
|
+
|
|
1113
|
+
**Symptoms**: Git prompts for username/password despite PAT being configured.
|
|
1114
|
+
|
|
1115
|
+
**Solution**: Verify the credential helper is configured:
|
|
1116
|
+
|
|
1117
|
+
```bash
|
|
1118
|
+
git config --global --get-all credential.helper
|
|
1119
|
+
```
|
|
1120
|
+
|
|
1121
|
+
If gitego is not listed, reconfigure:
|
|
1122
|
+
|
|
1123
|
+
```bash
|
|
1124
|
+
git config --global credential.helper ""
|
|
1125
|
+
git config --global --add credential.helper "!gitego credential"
|
|
1126
|
+
```
|
|
1127
|
+
|
|
1128
|
+
### Issue: SSH key not being used
|
|
1129
|
+
|
|
1130
|
+
**Symptoms**: Git uses wrong SSH key for operations.
|
|
1131
|
+
|
|
1132
|
+
**Solution**: gitego manages SSH key selection via GIT_SSH_COMMAND. Verify the profile has an SSH key configured:
|
|
1133
|
+
|
|
1134
|
+
```bash
|
|
1135
|
+
gitego list
|
|
1136
|
+
```
|
|
1137
|
+
|
|
1138
|
+
If the ssh-key field is empty, add one:
|
|
1139
|
+
|
|
1140
|
+
```bash
|
|
1141
|
+
gitego edit profile-name --ssh-key ~/.ssh/id_correct_key
|
|
1142
|
+
```
|
|
1143
|
+
|
|
1144
|
+
### Issue: "secret service not available" on Linux
|
|
1145
|
+
|
|
1146
|
+
**Symptoms**: PAT storage fails on headless Linux systems.
|
|
1147
|
+
|
|
1148
|
+
**Solution**: Install and configure a secret service. For systems with GNOME:
|
|
1149
|
+
|
|
1150
|
+
```bash
|
|
1151
|
+
sudo apt-get install -y gnome-keyring
|
|
1152
|
+
```
|
|
1153
|
+
|
|
1154
|
+
For headless systems, use pass:
|
|
1155
|
+
|
|
1156
|
+
```bash
|
|
1157
|
+
sudo apt-get install -y pass gnupg
|
|
1158
|
+
gpg --gen-key
|
|
1159
|
+
pass init "your-gpg-key-id"
|
|
1160
|
+
```
|
|
1161
|
+
|
|
1162
|
+
---
|
|
1163
|
+
|
|
1164
|
+
## References
|
|
1165
|
+
|
|
1166
|
+
- [gitego GitHub Repository](https://github.com/bgreenwell/gitego)
|
|
1167
|
+
- [Go Installation Documentation](https://go.dev/doc/install)
|
|
1168
|
+
- [Git Credential Helpers Documentation](https://git-scm.com/docs/gitcredentials)
|
|
1169
|
+
- [Git Conditional Includes Documentation](https://git-scm.com/docs/git-config#_conditional_includes)
|
|
1170
|
+
- [Homebrew Go Formula](https://formulae.brew.sh/formula/go)
|
|
1171
|
+
- [Chocolatey Go Package](https://community.chocolatey.org/packages/golang)
|
|
1172
|
+
- [winget Go Package](https://winget.run/pkg/GoLang/Go)
|