@pavlovic265/gt 0.58.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/LICENSE +21 -0
- package/README.md +551 -0
- package/bin/gt-darwin-amd64 +0 -0
- package/bin/gt-darwin-arm64 +0 -0
- package/bin/gt-linux-amd64 +0 -0
- package/bin/gt-linux-arm64 +0 -0
- package/bin/gt-windows-amd64.exe +0 -0
- package/bin/gt-windows-arm64.exe +0 -0
- package/bin/install.js +39 -0
- package/package.json +28 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Marko Pavlovic
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
# gt: Git Workflow Utility
|
|
2
|
+
|
|
3
|
+
[](https://github.com/pavlovic265/265-gt/blob/main/LICENSE)
|
|
4
|
+
[](https://golang.org/)
|
|
5
|
+
[](https://git-scm.com/)
|
|
6
|
+
[](https://cli.github.com/)
|
|
7
|
+
|
|
8
|
+
[](https://github.com/pavlovic265/265-gt/actions/workflows/ci.yml)
|
|
9
|
+
[](https://github.com/pavlovic265/265-gt/actions/workflows/build.yml)
|
|
10
|
+
[](https://github.com/pavlovic265/265-gt/actions/workflows/lint.yml)
|
|
11
|
+
[](https://github.com/pavlovic265/265-gt/actions/workflows/test.yml)
|
|
12
|
+
[](https://github.com/pavlovic265/265-gt/actions/workflows/release.yml)
|
|
13
|
+
|
|
14
|
+
> A powerful command-line utility designed to simplify and streamline common Git workflows with intelligent branch management and automation.
|
|
15
|
+
|
|
16
|
+
## π Features
|
|
17
|
+
|
|
18
|
+
- **Quick Branch Operations**: Create, checkout, and switch between branches with shorthand commands
|
|
19
|
+
- **Branch Stack Navigation**: Seamlessly move up and down your branch hierarchy
|
|
20
|
+
- **Stack Management**: Restack branches to keep your branch hierarchy up to date
|
|
21
|
+
- **Automated Git Workflows**: Simplify rebasing, syncing, and cleaning up merged branches
|
|
22
|
+
- **Enhanced Pull Request Management**: Create, list, merge, and update PRs with CI/CD status indicators and mergeable state visualization
|
|
23
|
+
- **Multi-Platform Support**: Works with GitHub and GitLab
|
|
24
|
+
- **Account Management**: Add, edit, list, and remove multiple accounts with full profile information
|
|
25
|
+
- **Authentication Management**: Easy account switching and token management
|
|
26
|
+
- **Interactive UI**: Beautiful terminal interface with search and selection capabilities
|
|
27
|
+
- **Shell Completion**: Auto-completion support for Bash, Zsh, Fish, and PowerShell
|
|
28
|
+
- **Panda Syntax Theme**: Stunning color scheme with dark/light theme support
|
|
29
|
+
- **Styled Output**: Consistent, beautiful error and success messages with icons
|
|
30
|
+
- **Enhanced Logging**: Centralized logging utility with styled output
|
|
31
|
+
- **Version Management**: Automatic version checking and upgrade notifications
|
|
32
|
+
- **Git Pass-Through**: Unknown commands automatically passed to git for seamless integration
|
|
33
|
+
|
|
34
|
+
## π οΈ Installation
|
|
35
|
+
|
|
36
|
+
### Homebrew (Recommended for macOS)
|
|
37
|
+
```bash
|
|
38
|
+
brew tap pavlovic265/265-gt
|
|
39
|
+
brew install 265-gt
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Ubuntu/Debian (.deb package)
|
|
43
|
+
```bash
|
|
44
|
+
# Download and install the latest .deb package
|
|
45
|
+
wget https://github.com/pavlovic265/265-gt/releases/download/v0.3.0/gt_0.3.0_linux_amd64.deb
|
|
46
|
+
sudo apt install ./gt_0.3.0_linux_amd64.deb
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Fedora / RHEL / CentOS (.rpm package)
|
|
50
|
+
```bash
|
|
51
|
+
# Download and install the latest .rpm package
|
|
52
|
+
wget https://github.com/pavlovic265/265-gt/releases/download/v0.3.0/gt_0.3.0_linux_amd64.rpm
|
|
53
|
+
sudo rpm -i gt_0.3.0_linux_amd64.rpm
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
### Quick Install Script
|
|
59
|
+
```bash
|
|
60
|
+
curl -fsSL https://raw.githubusercontent.com/pavlovic265/265-gt/main/scripts/install.sh | bash
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Build from Source (For Developers)
|
|
64
|
+
```bash
|
|
65
|
+
# Clone the repository
|
|
66
|
+
git clone https://github.com/pavlovic265/265-gt.git
|
|
67
|
+
cd 265-gt
|
|
68
|
+
|
|
69
|
+
# Build the binary
|
|
70
|
+
go build -o gt main.go
|
|
71
|
+
|
|
72
|
+
# Install to your PATH (choose one):
|
|
73
|
+
# Option 1: User directory (no sudo needed)
|
|
74
|
+
mkdir -p ~/.local/bin
|
|
75
|
+
mv gt ~/.local/bin/
|
|
76
|
+
export PATH="$HOME/.local/bin:$PATH"
|
|
77
|
+
|
|
78
|
+
# Option 2: System directory (requires sudo)
|
|
79
|
+
sudo mv gt /usr/local/bin/
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## π― Quick Start
|
|
83
|
+
|
|
84
|
+
1. **Initialize Configuration**
|
|
85
|
+
```bash
|
|
86
|
+
gt config global
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
2. **Add your first account**
|
|
90
|
+
```bash
|
|
91
|
+
gt account add
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
3. **Authenticate with your Git platform**
|
|
95
|
+
```bash
|
|
96
|
+
gt auth login
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
4. **Start using gt commands**
|
|
100
|
+
```bash
|
|
101
|
+
gt create feature-branch # Create and switch to a new branch
|
|
102
|
+
gt up # Move up in branch stack
|
|
103
|
+
gt down # Move down in branch stack
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## π Git Pass-Through
|
|
107
|
+
|
|
108
|
+
**gt** automatically passes unknown commands to git, so you can use any git command through gt:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# These all work seamlessly
|
|
112
|
+
gt log --oneline -5
|
|
113
|
+
gt branch --list
|
|
114
|
+
gt diff --name-only
|
|
115
|
+
gt status
|
|
116
|
+
gt add .
|
|
117
|
+
gt commit -m "My commit"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
When an unknown command is used, gt will show:
|
|
121
|
+
```
|
|
122
|
+
Unknown command, passing to git: git [command]
|
|
123
|
+
[git output]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
This means you can use gt as a drop-in replacement for git while getting the benefits of gt's enhanced commands.
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
## π Command Reference
|
|
130
|
+
|
|
131
|
+
### Branch Operations
|
|
132
|
+
|
|
133
|
+
| Command | Alias | Description | Example |
|
|
134
|
+
|---------|-------|-------------|---------|
|
|
135
|
+
| `create` | `c` | Create a new branch from current branch | `gt create feature-branch` |
|
|
136
|
+
| `checkout` | `co` | Checkout/search and switch to branch | `gt checkout main` |
|
|
137
|
+
| `delete` | `dl` | Delete a branch | `gt delete old-branch` |
|
|
138
|
+
| `clean` | `cl` | Clean merged branches (excludes protected) | `gt clean` |
|
|
139
|
+
| `move` | `mv` | Rebase current branch | `gt move` |
|
|
140
|
+
|
|
141
|
+
### Navigation
|
|
142
|
+
|
|
143
|
+
| Command | Alias | Description | Example |
|
|
144
|
+
|---------|-------|-------------|---------|
|
|
145
|
+
| `up` | - | Move up in branch stack | `gt up` |
|
|
146
|
+
| `down` | - | Move down in branch stack | `gt down` |
|
|
147
|
+
| `switch` | `sw` | Switch to previous branch | `gt switch` |
|
|
148
|
+
| `cont` | - | Continue rebase after resolving conflicts | `gt cont` |
|
|
149
|
+
|
|
150
|
+
### Commit Operations
|
|
151
|
+
|
|
152
|
+
| Command | Alias | Description | Example |
|
|
153
|
+
|---------|-------|-------------|---------|
|
|
154
|
+
| `add` | - | Stage changes | `gt add` |
|
|
155
|
+
| `unstage` | `us` | Unstage changes | `gt unstage` |
|
|
156
|
+
| `commit` | `cm` | Create commit with message | `gt commit "Add new feature"` |
|
|
157
|
+
| `commit -e` | `cm -e` | Create empty commit | `gt commit -e "WIP"` |
|
|
158
|
+
|
|
159
|
+
### Remote Operations
|
|
160
|
+
|
|
161
|
+
| Command | Alias | Description | Example |
|
|
162
|
+
|---------|-------|-------------|---------|
|
|
163
|
+
| `push` | `pu` | Force-push to remote | `gt push` |
|
|
164
|
+
| `pull` | `pl` | Pull latest changes | `gt pull` |
|
|
165
|
+
|
|
166
|
+
### Pull Request Management
|
|
167
|
+
|
|
168
|
+
| Command | Alias | Description | Example |
|
|
169
|
+
|---------|-------|-------------|---------|
|
|
170
|
+
| `pull_request create` | `pr c` | Create a new pull request | `gt pr c` |
|
|
171
|
+
| `pull_request create -d` | `pr c -d` | Create a draft pull request | `gt pr c -d` |
|
|
172
|
+
| `pull_request list` | `pr li` | List all pull requests with CI/CD status and mergeable state | `gt pr li` |
|
|
173
|
+
|
|
174
|
+
**Pull Request List Features:**
|
|
175
|
+
- **CI/CD Status Indicators**: View build status at a glance
|
|
176
|
+
- `β` (Green) - Success
|
|
177
|
+
- `β` (Red) - Failure/Error
|
|
178
|
+
- `β
` (Yellow) - Pending/In Progress
|
|
179
|
+
- **Mergeable Status**: See merge conflicts status
|
|
180
|
+
- `β` (Green) - Mergeable
|
|
181
|
+
- `β` (Red) - Has conflicts
|
|
182
|
+
- **Interactive Actions**:
|
|
183
|
+
- Press `Enter` to open PR in browser
|
|
184
|
+
- Press `y` to yank (copy) PR URL to clipboard
|
|
185
|
+
- Press `m` to merge the pull request
|
|
186
|
+
- Press `u` to update PR branch with base branch changes
|
|
187
|
+
|
|
188
|
+
### Stack Management
|
|
189
|
+
|
|
190
|
+
| Command | Alias | Description | Example |
|
|
191
|
+
|---------|-------|-------------|---------|
|
|
192
|
+
| `stack restack` | `s rs` | Restack branches from current branch downward | `gt stack restack` |
|
|
193
|
+
|
|
194
|
+
### Configuration
|
|
195
|
+
|
|
196
|
+
| Command | Alias | Description | Example |
|
|
197
|
+
|---------|-------|-------------|---------|
|
|
198
|
+
| `config global` | `conf gl` | Configure global settings | `gt conf gl` |
|
|
199
|
+
| `config local` | `conf lo` | Configure local repository settings | `gt conf lo` |
|
|
200
|
+
|
|
201
|
+
### Authentication
|
|
202
|
+
|
|
203
|
+
| Command | Alias | Description | Example |
|
|
204
|
+
|---------|-------|-------------|---------|
|
|
205
|
+
| `auth login` | `auth lg` | Login with token from config | `gt auth lg` |
|
|
206
|
+
| `auth logout` | `auth lo` | Logout from current account | `gt auth lo` |
|
|
207
|
+
| `auth status` | `auth st` | Show authentication status | `gt auth st` |
|
|
208
|
+
| `auth switch` | `auth sw` | Switch between accounts | `gt auth sw` |
|
|
209
|
+
|
|
210
|
+
### Account Management
|
|
211
|
+
|
|
212
|
+
| Command | Alias | Description | Example |
|
|
213
|
+
|---------|-------|-------------|---------|
|
|
214
|
+
| `account add` | `acc add` | Add a new account interactively | `gt account add` |
|
|
215
|
+
| `account list` | `acc ls` | List all configured accounts | `gt account list` |
|
|
216
|
+
| `account edit` | `acc edit` | Edit an existing account | `gt account edit` |
|
|
217
|
+
| `account remove` | `acc rm` | Remove an account | `gt account remove` |
|
|
218
|
+
| `account attach` | `acc at` | Attach active account to a directory | `gt account attach ~/work` |
|
|
219
|
+
|
|
220
|
+
### Utility Commands
|
|
221
|
+
|
|
222
|
+
| Command | Alias | Description | Example |
|
|
223
|
+
|---------|-------|-------------|---------|
|
|
224
|
+
| `version` | `v` | Display version information | `gt version` |
|
|
225
|
+
| `version --latest` | `v -l` | Get latest version from repository | `gt version --latest` |
|
|
226
|
+
| `upgrade` | - | Update the CLI tool | `gt upgrade` |
|
|
227
|
+
| `status` | `st` | Show current repository status | `gt status` |
|
|
228
|
+
| `completion` | - | Generate shell completion scripts | `gt completion bash` |
|
|
229
|
+
| `completion --install` | - | Install completion script to default location | `gt completion zsh --install` |
|
|
230
|
+
|
|
231
|
+
## π§ Configuration
|
|
232
|
+
|
|
233
|
+
### Global Configuration
|
|
234
|
+
```bash
|
|
235
|
+
gt config global
|
|
236
|
+
```
|
|
237
|
+
This will guide you through setting up:
|
|
238
|
+
- Theme preferences (dark/light)
|
|
239
|
+
- Version tracking
|
|
240
|
+
|
|
241
|
+
After creating the global config, add your accounts:
|
|
242
|
+
```bash
|
|
243
|
+
gt account add
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
The account management commands allow you to:
|
|
247
|
+
- **Add accounts**: Interactively add GitHub/GitLab accounts with username, email, full name, platform, and API token
|
|
248
|
+
- **List accounts**: View all configured accounts with their details
|
|
249
|
+
- **Edit accounts**: Modify existing account information
|
|
250
|
+
- **Remove accounts**: Delete accounts you no longer need
|
|
251
|
+
- **Switch accounts**: Change between accounts using `gt auth switch`
|
|
252
|
+
|
|
253
|
+
The configuration supports multiple accounts with automatic active account management:
|
|
254
|
+
```yaml
|
|
255
|
+
# ~/.gtconfig.yaml
|
|
256
|
+
accounts:
|
|
257
|
+
- user: "username1"
|
|
258
|
+
email: "user1@example.com"
|
|
259
|
+
name: "User One"
|
|
260
|
+
token: "ghp_..."
|
|
261
|
+
platform: "GitHub"
|
|
262
|
+
- user: "username2"
|
|
263
|
+
email: "user2@example.com"
|
|
264
|
+
name: "User Two"
|
|
265
|
+
token: "glpat-..."
|
|
266
|
+
platform: "GitLab"
|
|
267
|
+
active_account: # Automatically managed by auth commands
|
|
268
|
+
user: "username1"
|
|
269
|
+
email: "user1@example.com"
|
|
270
|
+
name: "User One"
|
|
271
|
+
token: "ghp_..."
|
|
272
|
+
platform: "GitHub"
|
|
273
|
+
theme:
|
|
274
|
+
type: "dark"
|
|
275
|
+
version:
|
|
276
|
+
last_checked: "2024-10-27T10:30:00Z"
|
|
277
|
+
current_version: "0.3.0"
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Local Configuration
|
|
281
|
+
```bash
|
|
282
|
+
gt config local
|
|
283
|
+
```
|
|
284
|
+
Configure repository-specific settings like:
|
|
285
|
+
- Protected branches for this repo
|
|
286
|
+
- Custom branch naming patterns
|
|
287
|
+
- Repository-specific workflows
|
|
288
|
+
|
|
289
|
+
### Theme Configuration
|
|
290
|
+
The tool supports beautiful Panda Syntax theme with dark and light variants:
|
|
291
|
+
|
|
292
|
+
```yaml
|
|
293
|
+
# ~/.gtconfig.yaml
|
|
294
|
+
theme:
|
|
295
|
+
type: "dark" # or "light"
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
**Panda Syntax Colors:**
|
|
299
|
+
- π’ **Success**: `#A9DC52` (Green) / `#2D5016` (Dark Green - Light Theme)
|
|
300
|
+
- π΄ **Error**: `#FF6188` (Red) / `#8B1538` (Dark Red - Light Theme)
|
|
301
|
+
- π‘ **Warning**: `#FFD866` (Yellow) / `#B8860B` (Dark Orange - Light Theme)
|
|
302
|
+
- π΅ **Info**: `#78DCE8` (Blue) / `#1E3A8A` (Dark Blue - Light Theme)
|
|
303
|
+
- π£ **Debug**: `#AB9DF2` (Purple) / `#6B46C1` (Dark Purple - Light Theme)
|
|
304
|
+
- π‘ **Highlight**: `#FFD866` (Yellow) / `#B8860B` (Dark Yellow - Light Theme)
|
|
305
|
+
|
|
306
|
+
## π¨ Usage Examples
|
|
307
|
+
|
|
308
|
+
### Status Indicators
|
|
309
|
+
The tool uses beautiful ASCII icons and Panda Syntax colors to show operation status:
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
# Success indicators (β) - Green
|
|
313
|
+
gt create feature/new-feature
|
|
314
|
+
# β Branch 'feature/new-feature' created and switched to successfully
|
|
315
|
+
|
|
316
|
+
gt add
|
|
317
|
+
# β All changes staged
|
|
318
|
+
|
|
319
|
+
gt commit "Add new feature"
|
|
320
|
+
# β Commit created 'Add new feature'
|
|
321
|
+
|
|
322
|
+
gt checkout main
|
|
323
|
+
# β Switched to branch 'main'
|
|
324
|
+
|
|
325
|
+
# Error indicators (β) - Red
|
|
326
|
+
gt delete main
|
|
327
|
+
# β Failed to delete branch: Cannot delete protected branch
|
|
328
|
+
|
|
329
|
+
gt checkout nonexistent
|
|
330
|
+
# β Failed to checkout branch 'nonexistent': branch not found
|
|
331
|
+
|
|
332
|
+
# Version notifications - Blue with colored version numbers
|
|
333
|
+
gt status
|
|
334
|
+
# π A new release of gt is available: 0.29.0 β 0.32.0
|
|
335
|
+
# To upgrade, run: gt upgrade
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Styled Output Examples
|
|
339
|
+
```bash
|
|
340
|
+
# Git status with colored output
|
|
341
|
+
gt status
|
|
342
|
+
# On branch main # Branch name in purple
|
|
343
|
+
# Changes to be committed: # Section headers in blue
|
|
344
|
+
# new file: README.md # New files in green
|
|
345
|
+
# Changes not staged for commit: # Section headers in orange
|
|
346
|
+
# modified: src/main.go # Modified files in orange
|
|
347
|
+
# Untracked files: # Section headers in red
|
|
348
|
+
# temp.txt # Untracked files in yellow italic
|
|
349
|
+
|
|
350
|
+
# Version information with styling
|
|
351
|
+
gt version
|
|
352
|
+
# Current version: v0.32.0 # Labels in blue, versions in blue bold
|
|
353
|
+
|
|
354
|
+
gt version --latest
|
|
355
|
+
# Latest version: v0.32.0 # Labels in blue, versions in blue bold
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### Typical Workflow
|
|
359
|
+
```bash
|
|
360
|
+
# Start a new feature
|
|
361
|
+
gt create feature/user-authentication
|
|
362
|
+
gt add
|
|
363
|
+
gt commit "Add user authentication module"
|
|
364
|
+
|
|
365
|
+
# Make some changes and commit
|
|
366
|
+
gt add
|
|
367
|
+
gt commit "Add password validation"
|
|
368
|
+
|
|
369
|
+
# Oops, need to unstage some files
|
|
370
|
+
gt unstage file1.txt file2.txt
|
|
371
|
+
gt add file1.txt
|
|
372
|
+
gt commit "Add only file1.txt"
|
|
373
|
+
|
|
374
|
+
# Push to remote
|
|
375
|
+
gt push
|
|
376
|
+
|
|
377
|
+
# Create pull request
|
|
378
|
+
gt pr c
|
|
379
|
+
|
|
380
|
+
# After review, move up to parent branch
|
|
381
|
+
gt up
|
|
382
|
+
|
|
383
|
+
# Clean up merged branches
|
|
384
|
+
gt clean
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Branch Stack Navigation
|
|
388
|
+
```bash
|
|
389
|
+
# Current branch: feature/user-auth
|
|
390
|
+
gt up # Move to: feature/auth-system
|
|
391
|
+
gt up # Move to: develop
|
|
392
|
+
gt down # Move to: feature/auth-system
|
|
393
|
+
gt down # Move to: feature/user-auth
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### Multi-Account Management
|
|
397
|
+
```bash
|
|
398
|
+
# Add a new account
|
|
399
|
+
gt account add
|
|
400
|
+
# Follow the interactive prompts to enter:
|
|
401
|
+
# - Username
|
|
402
|
+
# - Email
|
|
403
|
+
# - Full name
|
|
404
|
+
# - Platform (GitHub/GitLab)
|
|
405
|
+
# - API token
|
|
406
|
+
|
|
407
|
+
# List all configured accounts
|
|
408
|
+
gt account list
|
|
409
|
+
# * username1 (GitHub) user1@example.com - User One
|
|
410
|
+
# username2 (GitLab) user2@example.com - User Two
|
|
411
|
+
# (* indicates active account)
|
|
412
|
+
|
|
413
|
+
# Edit an existing account
|
|
414
|
+
gt account edit
|
|
415
|
+
# Select account to edit, then update any field
|
|
416
|
+
|
|
417
|
+
# Remove an account
|
|
418
|
+
gt account remove
|
|
419
|
+
# Select account to remove
|
|
420
|
+
|
|
421
|
+
# Switch between accounts
|
|
422
|
+
gt auth switch
|
|
423
|
+
# Select from available accounts
|
|
424
|
+
|
|
425
|
+
# Check current auth status
|
|
426
|
+
gt auth status
|
|
427
|
+
|
|
428
|
+
# Attach active account to a directory
|
|
429
|
+
gt account attach ~/work/projects
|
|
430
|
+
# This will:
|
|
431
|
+
# 1. Add an includeIf section to ~/.gitconfig
|
|
432
|
+
# 2. Create a .gitconfig in the target directory with active account credentials
|
|
433
|
+
# 3. All git repos under that directory will use the attached account
|
|
434
|
+
|
|
435
|
+
# Attach to current directory
|
|
436
|
+
gt account attach .
|
|
437
|
+
|
|
438
|
+
# The tool automatically manages an active account
|
|
439
|
+
# When you switch accounts, the active account is updated
|
|
440
|
+
# All operations use the currently active account
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
### Shell Completion
|
|
444
|
+
```bash
|
|
445
|
+
# Generate completion script for your shell
|
|
446
|
+
gt completion bash # For Bash
|
|
447
|
+
gt completion zsh # For Zsh
|
|
448
|
+
gt completion fish # For Fish
|
|
449
|
+
gt completion powershell # For PowerShell
|
|
450
|
+
|
|
451
|
+
# Install to default location (recommended)
|
|
452
|
+
gt completion bash --install
|
|
453
|
+
gt completion zsh --install
|
|
454
|
+
gt completion fish --install
|
|
455
|
+
|
|
456
|
+
# Install to custom directory
|
|
457
|
+
gt completion zsh --install --dir ~/.my-completions
|
|
458
|
+
|
|
459
|
+
# Generate without descriptions (faster, less verbose)
|
|
460
|
+
gt completion bash --no-descriptions
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
**Supported shells:**
|
|
464
|
+
- **Bash**: Installs to `~/.config/bash/completion/gt.bash`
|
|
465
|
+
- **Zsh**: Installs to `~/.zsh/completions/_gt`
|
|
466
|
+
- **Fish**: Installs to `~/.config/fish/completions/gt.fish`
|
|
467
|
+
- **PowerShell**: Installs to `~/Documents/PowerShell/gt-completion.ps1`
|
|
468
|
+
|
|
469
|
+
After installation, follow the instructions displayed to activate completions in your shell.
|
|
470
|
+
|
|
471
|
+
### Stack Restacking
|
|
472
|
+
```bash
|
|
473
|
+
# Restack all child branches from current branch
|
|
474
|
+
gt stack restack
|
|
475
|
+
# or use the alias
|
|
476
|
+
gt s rs
|
|
477
|
+
|
|
478
|
+
# This will:
|
|
479
|
+
# 1. Get all children of the current branch
|
|
480
|
+
# 2. Rebase each child onto its parent
|
|
481
|
+
# 3. Process children recursively to maintain branch hierarchy
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
### Enhanced Pull Request Management
|
|
485
|
+
```bash
|
|
486
|
+
# List all pull requests with visual indicators
|
|
487
|
+
gt pr li
|
|
488
|
+
|
|
489
|
+
# Output shows:
|
|
490
|
+
# β 123: Add authentication module - β (CI passed, mergeable)
|
|
491
|
+
# β 124: Fix bug in parser - β (CI failed, has conflicts)
|
|
492
|
+
# β
125: Update dependencies - β (CI pending, mergeable)
|
|
493
|
+
|
|
494
|
+
# Interactive actions in the PR list:
|
|
495
|
+
# - Enter: Open selected PR in browser
|
|
496
|
+
# - y: Copy PR URL to clipboard
|
|
497
|
+
# - m: Merge the selected PR
|
|
498
|
+
# - u: Update PR branch with latest base branch changes
|
|
499
|
+
# - /: Search/filter PRs
|
|
500
|
+
# - Esc/q: Exit
|
|
501
|
+
|
|
502
|
+
# Quick workflow examples:
|
|
503
|
+
gt pr li
|
|
504
|
+
# Press 'y' on a PR to copy its URL for sharing
|
|
505
|
+
# Press 'm' on a PR to merge it directly from the terminal
|
|
506
|
+
# Press 'u' on a PR to update it with the latest changes from base
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
## π§ Planned Features
|
|
510
|
+
|
|
511
|
+
- [ ] **Branch Syncing** β Seamlessly synchronize local and remote branches with intelligent conflict handling.
|
|
512
|
+
- [ ] **Change Submission** β Streamlined `submit` command for creating pull requests or submitting changes for review.
|
|
513
|
+
- [ ] **Advanced Branch Visualization** β Enhanced visualization of branch structures and relationships for easier navigation.
|
|
514
|
+
- [ ] **Multi-Platform Git Integration** β Support for additional Git platforms beyond GitHub (e.g., GitLab, Bitbucket).
|
|
515
|
+
- [ ] **Theme Customization** β Flexible theme settings to personalize the CLI experience.
|
|
516
|
+
- [ ] **Automated GitHub Setup** β One-command configuration for GitHub authentication, commit signing, tokens, and SSH keys.
|
|
517
|
+
- [x] **Git Config Profiles** β Dynamic `.gitconfig` management tied to directories using `includeIf` (implemented via `gt account attach`).
|
|
518
|
+
- [ ] **User-Aware Repository Checkout** β Automatically clone and manage repositories based on the active user profile.
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
## π€ Contributing
|
|
522
|
+
|
|
523
|
+
We welcome contributions! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
|
|
524
|
+
|
|
525
|
+
### Development Setup
|
|
526
|
+
```bash
|
|
527
|
+
git clone https://github.com/pavlovic265/265-gt.git
|
|
528
|
+
cd 265-gt
|
|
529
|
+
go mod download
|
|
530
|
+
go run main.go
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
## π License
|
|
534
|
+
|
|
535
|
+
This project is licensed under the MIT License - see the [LICENSE](https://github.com/pavlovic265/265-gt/blob/main/LICENSE) file for details.
|
|
536
|
+
|
|
537
|
+
## π¨βπ» Author
|
|
538
|
+
|
|
539
|
+
**ΠΠ°ΡΠΊΠΎ ΠΠ°Π²Π»ΠΎΠ²ΠΈΡ (Marko PavloviΔ)** - [@pavlovic265](https://github.com/pavlovic265)
|
|
540
|
+
|
|
541
|
+
## π Acknowledgments
|
|
542
|
+
|
|
543
|
+
- Built with [Cobra](https://github.com/spf13/cobra) for CLI framework
|
|
544
|
+
- Beautiful terminal UI powered by [Bubble Tea](https://github.com/charmbracelet/bubbletea)
|
|
545
|
+
- Styling with [Lip Gloss](https://github.com/charmbracelet/lipgloss)
|
|
546
|
+
- Color scheme inspired by [Panda Syntax](https://github.com/PandaTheme/panda-syntax-vscode) theme
|
|
547
|
+
|
|
548
|
+
---
|
|
549
|
+
|
|
550
|
+
β If you find this tool helpful, please consider giving it a star!
|
|
551
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/bin/install.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const { execSync } = require('child_process');
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
const platform = process.platform;
|
|
7
|
+
const arch = process.arch;
|
|
8
|
+
|
|
9
|
+
let binaryName = 'gt';
|
|
10
|
+
if (platform === 'linux' && arch === 'x64') {
|
|
11
|
+
binaryName = 'gt-linux-amd64';
|
|
12
|
+
} else if (platform === 'linux' && arch === 'arm64') {
|
|
13
|
+
binaryName = 'gt-linux-arm64';
|
|
14
|
+
} else if (platform === 'darwin' && arch === 'x64') {
|
|
15
|
+
binaryName = 'gt-darwin-amd64';
|
|
16
|
+
} else if (platform === 'darwin' && arch === 'arm64') {
|
|
17
|
+
binaryName = 'gt-darwin-arm64';
|
|
18
|
+
} else if (platform === 'win32' && arch === 'x64') {
|
|
19
|
+
binaryName = 'gt-windows-amd64.exe';
|
|
20
|
+
} else if (platform === 'win32' && arch === 'arm64') {
|
|
21
|
+
binaryName = 'gt-windows-arm64.exe';
|
|
22
|
+
} else {
|
|
23
|
+
console.error(\`Unsupported platform: \${platform} \${arch}\`);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const binaryPath = path.join(__dirname, binaryName);
|
|
28
|
+
if (!fs.existsSync(binaryPath)) {
|
|
29
|
+
console.error(\`Binary not found: \${binaryPath}\`);
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
fs.chmodSync(binaryPath, '755');
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
execSync(\`"\${binaryPath}" \${process.argv.slice(2).join(' ')}\`, { stdio: 'inherit' });
|
|
37
|
+
} catch (error) {
|
|
38
|
+
process.exit(error.status || 1);
|
|
39
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pavlovic265/gt",
|
|
3
|
+
"version": "0.58.3",
|
|
4
|
+
"description": "Git workflow utility with intelligent branch management and automation",
|
|
5
|
+
"author": "Marko Pavlovic <pavlovic265@gmail.com>",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"homepage": "https://github.com/pavlovic265/265-gt",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/pavlovic265/265-gt.git"
|
|
11
|
+
},
|
|
12
|
+
"bin": {
|
|
13
|
+
"gt": "./bin/install.js"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"bin/**/*",
|
|
17
|
+
"LICENSE",
|
|
18
|
+
"README.md"
|
|
19
|
+
],
|
|
20
|
+
"keywords": [
|
|
21
|
+
"git",
|
|
22
|
+
"workflow",
|
|
23
|
+
"cli",
|
|
24
|
+
"branch-management",
|
|
25
|
+
"github",
|
|
26
|
+
"gitlab"
|
|
27
|
+
]
|
|
28
|
+
}
|