Code Monkey home page Code Monkey logo

gitbatch's Introduction

Build Status MIT License Go Report Card

gitbatch

Managing multiple git repositories is easier than ever. I (was) often end up working on many directories and manually pulling updates etc. To make this routine faster, I created a simple tool to handle this job. Although the focus is batch jobs, you can still do de facto micro management of your git repositories (e.g add/reset, stash, commit etc.)

Check out the screencast of the app: asciicast

Installation

Install latest Golang release.

To install with go, run the following command;

go get github.com/isacikgoz/gitbatch/cmd/gitbatch

or, in Windows 10:

go install github.com/isacikgoz/gitbatch/cmd/gitbatch@latest

MacOS using homebrew

brew install gitbatch

For other options see installation page

Use

run the gitbatch command from the parent of your git repositories. For start-up options simply gitbatch --help

For more information see the wiki pages

Further goals

  • improve testing
  • add push
  • full src-d/go-git integration (having some performance issues in large repos)
    • fetch, config, rev-list, add, reset, commit, status and diff commands are supported but not fully utilized, still using git occasionally
    • merge, stash are not supported yet by go-git

Credits

  • go-git for git interface (partially)
  • gocui for user interface
  • viper for configuration management
  • color for colored text
  • kingpin for command-line flag&options

gitbatch's People

Contributors

carloswm85 avatar chulkilee avatar erdaltsksn avatar froque avatar hsorellana avatar isacikgoz avatar karayel avatar shassard avatar tarkah avatar utkuufuk avatar yakuter avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gitbatch's Issues

0.4.1 - Crash when click tab immediately after startup

Hı,

Thanks for such a great tool like this one. I am happy to use it.

I am facing the following issue when I click tab immediately after the startup .
Here is my assumption about the problem this may help for hotfix.
It seems to me when there is no repository in the panel and click tab button in the keyboard. The following exception occurs.

Using version 0.4.1

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0xb8 pc=0x86676c]

goroutine 1 [running]:
github.com/isacikgoz/gitbatch/gui.(*Gui).focusToRepository(0xc42016efa0, 0xc4200da2d0, 0xc420184d20, 0xc42006afc0, 0xc42006afc0)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/focus.go:101 +0xbc
github.com/isacikgoz/gitbatch/gui.(*Gui).(github.com/isacikgoz/gitbatch/gui.focusToRepository)-fm(0xc4200da2d0, 0xc420184d20, 0x4, 0xc420063b01)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/keybindings.go:215 +0x3e
github.com/jroimartin/gocui.(*Gui).execKeybindings(0xc4200da2d0, 0xc420184d20, 0xc420063b48, 0x857599, 0x0, 0x0)
        /home/isacikgoz/.local/share/go/src/github.com/jroimartin/gocui/gui.go:629 +0xce
github.com/jroimartin/gocui.(*Gui).onKey(0xc4200da2d0, 0xc420063b48, 0xc4201ef9e0, 0xc42013f260)
        /home/isacikgoz/.local/share/go/src/github.com/jroimartin/gocui/gui.go:593 +0x1b3
github.com/jroimartin/gocui.(*Gui).handleEvent(0xc4200da2d0, 0xc420063b48, 0xc4200e7b40, 0x0)
        /home/isacikgoz/.local/share/go/src/github.com/jroimartin/gocui/gui.go:413 +0x40
github.com/jroimartin/gocui.(*Gui).MainLoop(0xc4200da2d0, 0xc4200da2d0, 0x0)
        /home/isacikgoz/.local/share/go/src/github.com/jroimartin/gocui/gui.go:373 +0x2cf
github.com/isacikgoz/gitbatch/gui.(*Gui).Run(0xc42016efa0, 0x0, 0x0)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/gui.go:140 +0x1ee
main.run(0x0, 0x0, 0x0, 0xb13646, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
        /home/isacikgoz/git/gitbatch/main.go:52 +0x122
main.main()
        /home/isacikgoz/git/gitbatch/main.go:24 +0xc2

Feature request: batch branch checkout

At my workplace we have a rather large project, that contains 10+ repositories (don't ask, not my idea), and sometimes when a larger feature is being implemented, we have to work in multiple repositories, therefore they all will have the dedicated feature branch. What I would like is the option to batch switch to a same named branch in multiple repositories.
eg like this:
Go into Branch Switch mode -> select relevant repositories like in other modes -> Start either opens a branch list (that shows all common branch names in selections) or there is a simple text input -> this check out that branch in all selected repositories

undefined variable

Running ➜ go get -v -u github.com/isacikgoz/gitbatch on MacOS, things stopped at this error:

/Users/timc/go/src/github.com/isacikgoz/gitbatch/core/command/pull.go:127:20: undefined: memory.ErrRefHasChanged`

Sure enough, it's not defined:

➜ pwd
/Users/timc/go/src/github.com/isacikgoz

➜ rg ErrRefHasChanged
gitbatch/core/command/pull.go
127: } else if err == memory.ErrRefHasChanged && pullTryCount < pullMaxTry {

0.4.1 - panic: runtime error: slice bounds out of range

I have installed v0.4.1 on my Mac OS 10.14.2 notebook and opened gitbatch within the directory I have all git repositories cloned. The following output happens after a while:

panic: runtime error: slice bounds out of range
goroutine 34 [running]:

github.com/isacikgoz/gitbatch/core/git.(*Repository).loadStashedItems(0xc420304270, 0xc420170150, 0x0)
    /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/core/git/stash.go:47 +0x6f8
github.com/isacikgoz/gitbatch/core/git.(*Repository).loadComponents(0xc420304270, 0x1, 0xc420304270, 0x0)
    /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/core/git/repository.go:154 +0x9e
github.com/isacikgoz/gitbatch/core/git.InitializeRepo(0xc420027c80, 0x19, 0xc420224000, 0x1, 0x0)
    /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/core/git/repository.go:136 +0x7d
github.com/isacikgoz/gitbatch/core/load.AsyncLoad.func1(0xc420222000, 0xc420228000, 0xc42020e020, 0xc420027c80, 0x19)
    /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/core/load/load.go:79 +0x89
created by github.com/isacikgoz/gitbatch/core/load.AsyncLoad
    /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/core/load/load.go:76 +0x112

The current go version is:

$ go version
go version go1.11.4 darwin/amd64

Installation wiki page outdated

https://github.com/isacikgoz/gitbatch/wiki/Installation

Above page points to v0.4.1, and when I customize the script like this:

curl -OL https://github.com/isacikgoz/gitbatch/releases/download/v0.4.3/gitbatch_0.4.3_linux_amd64.tar.gz
tar xzf gitbatch_0.4.3_linux_amd64.tar.gz

I get the following error:

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

OS: Ubuntu 18.04

panic: runtime error: invalid memory address or nil pointer dereference

gitbatch: 0.4.1

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0xb8 pc=0x872b19]

goroutine 1 [running]:
github.com/isacikgoz/gitbatch/gui.(*Gui).renderBranches(0xc4201a6e60, 0x0, 0x0, 0xc4202320f0)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/sideviews.go:70 +0x89
github.com/isacikgoz/gitbatch/gui.(*Gui).renderSideViews(0xc4201a6e60, 0x0, 0x4, 0xc4202320f0)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/sideviews.go:50 +0x5a
github.com/isacikgoz/gitbatch/gui.(*Gui).renderMain(0xc4201a6e60, 0x0, 0x0)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/repositoriesview.go:29 +0x1ce
github.com/isacikgoz/gitbatch/gui.(*Gui).repositoryUpdated.func1(0xc420210000, 0x1, 0xc42011fb40)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/repositoriesview.go:35 +0x2a
github.com/jroimartin/gocui.(*Gui).MainLoop(0xc420210000, 0xc420210000, 0x0)
        /home/isacikgoz/.local/share/go/src/github.com/jroimartin/gocui/gui.go:377 +0x1e0
github.com/isacikgoz/gitbatch/gui.(*Gui).Run(0xc4201a6e60, 0x0, 0x0)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/gui.go:140 +0x1ee
main.run(0x0, 0x0, 0x0, 0xb13646, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
        /home/isacikgoz/git/gitbatch/main.go:52 +0x122
main.main()
        /home/isacikgoz/git/gitbatch/main.go:24 +0xc2
``

gitbatch stays stuck (no new output) when run from $HOME

I've packaged gitbatch for nixos since it looks exactly what I was looking for. It works in a folder with 5 repositories but when I run it in my $HOME which contains ~15/20 git repositories (with a few big ones kernel, nixpkgs, wireshark, several worktrees), it seems stuck. I am surprised it considers some dotfiles as directories as well ? (Ia have a few dotfiles that are symlinks to readonly files, maybe that confuses gitbatch ?).

➜ /nix/store/bbd0ihqs9cn092c77vkf9pr49shqii8y-gitbatch-0.5.0-bin/bin/gitbatch --log-level=trace                                                                                               ~
TRAC[0000] logging level has been set                    fields.level=trace
TRAC[0000] App configuration completed                  
TRAC[0000] Failed to open file in the directory          directory=/home/teto/.irssi error="open /home/teto/.irssi: no such file or directory" file="<nil>"
TRAC[0000] Failed to open file in the directory          directory=/home/teto/.steampath error="open /home/teto/.steampath: no such file or directory" file="<nil>"
TRAC[0000] Failed to open file in the directory          directory=/home/teto/.wgetrc error="open /home/teto/.wgetrc: no such file or directory" file="<nil>"
TRAC[0000] Failed to open file in the directory          directory=/home/teto/bzImage_francois error="open /home/teto/bzImage_francois: no such file or directory" file="<nil>"
TRAC[0000] Failed to open file in the directory          directory=/home/teto/lkl error="open /home/teto/lkl: no such file or directory" file="<nil>"
TRAC[0000] Can't read directory                          directory=/home/teto/.Xauthority
TRAC[0000] Can't read directory                          directory=/home/teto/.Xdefaults
TRAC[0000] Can't read directory                          directory=/home/teto/.Xmodmap
TRAC[0000] Can't read directory                          directory=/home/teto/.apvlvinfo
TRAC[0000] Can't read directory                          directory=/home/teto/.bakerc
TRAC[0000] Can't read directory                          directory=/home/teto/.bash_login
TRAC[0000] Can't read directory                          directory=/home/teto/.bash_profile
TRAC[0000] Can't read directory                          directory=/home/teto/.bashrc
TRAC[0000] Failed to open file in the directory          directory=/home/teto/.config/bash_completion.d error="open /home/teto/.config/bash_completion.d: no such file or directory" file="<nil>"
TRAC[0000] Failed to open file in the directory          directory=/home/teto/.config/newsbeuter error="open /home/teto/.config/newsbeuter: no such file or directory" file="<nil>"
TRAC[0000] Can't read directory                          directory=/home/teto/.conkyrc
TRAC[0000] Can't read directory                          directory=/home/teto/.ctags
TRAC[0000] Can't read directory                          directory=/home/teto/.digrc
TRAC[0000] Can't read directory                          directory=/home/teto/.dmrc
TRAC[0000] Failed to open file in the directory          directory=/home/teto/.dropbox/command_socket error="open /home/teto/.dropbox/command_socket: no such device or address" file="<nil>"
TRAC[0000] Failed to open file in the directory          directory=/home/teto/.dropbox/iface_socket error="open /home/teto/.dropbox/iface_socket: no such device or address" file="<nil>"
TRAC[0000] Can't read directory                          directory=/home/teto/.esd_auth
TRAC[0000] Can't read directory                          directory=/home/teto/.exports
TRAC[0000] Can't read directory                          directory=/home/teto/.fehbg
TRAC[0000] Can't read directory                          directory=/home/teto/.flentrc
TRAC[0000] Can't read directory                          directory=/home/teto/.gdbinit
TRAC[0000] Can't read directory                          directory=/home/teto/.gksu.lock
TRAC[0000] Can't read directory                          directory=/home/teto/.grip
TRAC[0000] Can't read directory                          directory=/home/teto/.grip-lame
TRAC[0000] Can't read directory                          directory=/home/teto/.gtk-bookmarks
TRAC[0000] Can't read directory                          directory=/home/teto/.gtkrc-2.0
TRAC[0000] Can't read directory                          directory=/home/teto/.history
TRAC[0000] Can't read directory                          directory=/home/teto/.lesshst
TRAC[0000] Can't read directory                          directory=/home/teto/.mailcap
TRAC[0000] Can't read directory                          directory=/home/teto/.mbsyncrc
TRAC[0000] Can't read directory                          directory=/home/teto/.neomuttdebug4
TRAC[0000] Can't read directory                          directory=/home/teto/.nix-channels
TRAC[0000] Can't read directory                          directory=/home/teto/.node_repl_history
TRAC[0000] Can't read directory                          directory=/home/teto/.npmrc
TRAC[0000] Can't read directory                          directory=/home/teto/.pfstore.lock
TRAC[0000] Can't read directory                          directory=/home/teto/.profile
TRAC[0000] Can't read directory                          directory=/home/teto/.pypirc
TRAC[0000] Can't read directory                          directory=/home/teto/.python_history
TRAC[0000] Can't read directory                          directory=/home/teto/.recently-used
TRAC[0000] Can't read directory                          directory=/home/teto/.rnd
TRAC[0000] Can't read directory                          directory=/home/teto/.screenrc

I let it run for 20 minutes without any new output. htop shows no cpu or mem usage :s

Overview typo

Hi,

I see a typo for Overiew version 0.5.0. However, I've checked source code. You fixed the typo.

Screen Shot 2020-06-26 at 23 52 02
Screen Shot 2020-06-26 at 23 54 53

I installed it via Homebrew according to README.

Cheers.

Missing range checking (panic: runtime error: index out of range)

c := r.State.Branch.Commits[ix-1]

panic: runtime error: index out of range

goroutine 1 [running]:
github.com/isacikgoz/gitbatch/gui.(*Gui).commitStats(0xc00013cfa0, 0x1, 0xc0002785a0, 0x0)
	/home/isacikgoz/go/src/github.com/isacikgoz/gitbatch/gui/dynamicview.go:62 +0x4e9
github.com/isacikgoz/gitbatch/gui.(*Gui).commitCursorUp(0xc00013cfa0, 0xc000218000, 0xc0002785a0, 0x28, 0x5)
	/home/isacikgoz/go/src/github.com/isacikgoz/gitbatch/gui/focusviews.go:50 +0xba
github.com/isacikgoz/gitbatch/gui.(*Gui).commitCursorUp-fm(0xc000218000, 0xc0002785a0, 0x7, 0xc000000301)
	/home/isacikgoz/go/src/github.com/isacikgoz/gitbatch/gui/keybindings.go:417 +0x3e
github.com/jroimartin/gocui.(*Gui).execKeybindings(0xc000218000, 0xc0002785a0, 0xc016347b88, 0x14676b8, 0x0, 0x0)
	/home/isacikgoz/go/src/github.com/jroimartin/gocui/gui.go:629 +0xbe
github.com/jroimartin/gocui.(*Gui).onKey(0xc000218000, 0xc016347b88, 0xc0045d60a0, 0xc000220010)
	/home/isacikgoz/go/src/github.com/jroimartin/gocui/gui.go:593 +0x1b0
github.com/jroimartin/gocui.(*Gui).handleEvent(0xc000218000, 0xc016347b88, 0x2, 0x0)
	/home/isacikgoz/go/src/github.com/jroimartin/gocui/gui.go:413 +0x40
github.com/jroimartin/gocui.(*Gui).MainLoop(0xc000218000, 0xc000218000, 0x0)
	/home/isacikgoz/go/src/github.com/jroimartin/gocui/gui.go:373 +0x2c3
github.com/isacikgoz/gitbatch/gui.(*Gui).Run(0xc00013cfa0, 0x0, 0x0)
	/home/isacikgoz/go/src/github.com/isacikgoz/gitbatch/gui/gui.go:140 +0x1e3
main.run(0x0, 0x0, 0x0, 0x172704f, 0x5, 0x0, 0xc0000e4500, 0x0, 0x0, 0x0, ...)
	/home/isacikgoz/git/gitbatch/main.go:52 +0x122
main.main()
	/home/isacikgoz/git/gitbatch/main.go:24 +0xc2

Error when loading stashed items


goroutine 5 [running]:
github.com/isacikgoz/gitbatch/pkg/git.(*RepoEntity).loadStashedItems(0xc00021c000, 0x0, 0x0)
        /home/nick/go/src/github.com/isacikgoz/gitbatch/pkg/git/cmd-stash.go:64 +0x64b
github.com/isacikgoz/gitbatch/pkg/git.(*RepoEntity).loadComponents(0xc00021c000, 0x1, 0xc00021c000, 0x0)
        /home/nick/go/src/github.com/isacikgoz/gitbatch/pkg/git/repository.go:119 +0x92
github.com/isacikgoz/gitbatch/pkg/git.InitializeRepo(0xc0000a3740, 0x18, 0xc000028140, 0x0, 0x0)
        /home/nick/go/src/github.com/isacikgoz/gitbatch/pkg/git/repository.go:104 +0x7d
github.com/isacikgoz/gitbatch/pkg/git.LoadRepositoryEntities.func1(0xc000028140, 0xc000028150, 0xc00000c080, 0xc0000a3740, 0x18)
        /home/nick/go/src/github.com/isacikgoz/gitbatch/pkg/git/util-load.go:27 +0x7d
created by github.com/isacikgoz/gitbatch/pkg/git.LoadRepositoryEntities
        /home/nick/go/src/github.com/isacikgoz/gitbatch/pkg/git/util-load.go:23 +0x158

desc := stashHashRegex.Split(trimmed, 2)[1][1:]

Stashed items don't always have a hash id in the message, so trying to parse it like this will fail. Use git stash push -m 'no hash here' to create a stash item with no hash id.

ssh

hi, i'm start today in this tool and im in love. But i can sync with remote repository because de tool cant find my keys. can u help me

gitbatch hangs on FIFOs

I was wondering why gitbatch wasn't working in my home directory. I first thought it was it was recursing into remote filesystems (#100, which would still be a problem), but after investigating with strace, I saw it just hung on a fifo:

anarcat@curie:~(master)$ strace -e file -p 15675
strace: Process 15675 attached
openat(AT_FDCWD, "/home/anarcat/.mutt/sigfifo", O_RDONLY|O_CLOEXEC

that's an old FIFO that I don't use anymore and could remove, but there are many more FIFOs in various directories in $HOME that hang, for example .wine has a FIFO, and so has my .smd directory.

Multidepth repository detection

Would it be possible for gitbatch to detect multiple repositories which are all under current folder, but on different depths? Example:

->FOLDER1/
-->REPO1
-->REPO2
->FOLDER2/
-->FOLDER3/
---> REPO3
---> REPO4

According to my current observations, repo3 and repo4 are not detected.

Select all repositories at once

It would be nice to be able to hit one key to update all the repositories in the directory at once. Rather than my current situation where I hit the spacebar probably 15 times before I can update.

Backup/Restore remotes

I personally have several different remotes for each repository which is quite time-consuming if I want to set them up in another machine. Do you think adding a backup/restore feature is useful for addressing such issues?

option to not recurse through filesystems

there should be a way to tell gitbatch to avoid recursing through filesystems or better control the "walker" so that it can skip directories.

in my case, i'd love if gitbatch could just crawl my entire $HOME except this can't work here because ~/.fuse is a magic directory that uses afuse to dynamically connect to remote servers. recursing in there will wreak havoc and find all sorts of horrors.

having a paramater like -xdev or --one-file-system would be great to work around that problem. short of that, a more generic --exclude pattern could work as well.

thanks, this software looks great!

gitbatch SIGSEGV from time to time

Hi,
I've got a big directory with around 120 modules in it. Every second to third start directly fails like this:

$ gitbatch 
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x87351d]

goroutine 1 [running]:
github.com/jroimartin/gocui.(*Gui).View(0xc0001462d0, 0xb28d2f, 0x4, 0xc000109b20, 0x4356d3, 0x42bd21)
	/home/bastelfreak/go/src/github.com/jroimartin/gocui/gui.go:187 +0x4d
github.com/jroimartin/gocui.(*Gui).SetView(0xc0001462d0, 0xb28d2f, 0x4, 0x0, 0x0, 0x73, 0x36, 0x48, 0x6, 0xc000109bb8)
	/home/bastelfreak/go/src/github.com/jroimartin/gocui/gui.go:138 +0x148
github.com/isacikgoz/gitbatch/pkg/gui.(*Gui).layout(0xc0001461b0, 0xc0001462d0, 0x38, 0xc000109ca0)
	/home/bastelfreak/go/src/github.com/isacikgoz/gitbatch/pkg/gui/gui.go:163 +0xb0
github.com/isacikgoz/gitbatch/pkg/gui.(*Gui).layout-fm(0xc0001462d0, 0x0, 0x0)
	/home/bastelfreak/go/src/github.com/isacikgoz/gitbatch/pkg/gui/gui.go:142 +0x34
github.com/jroimartin/gocui.ManagerFunc.Layout(0xc0001331b0, 0xc0001462d0, 0x0, 0xc000109d08)
	/home/bastelfreak/go/src/github.com/jroimartin/gocui/gui.go:329 +0x30
github.com/jroimartin/gocui.(*Gui).flush(0xc0001462d0, 0x1, 0xc0001462d0)
	/home/bastelfreak/go/src/github.com/jroimartin/gocui/gui.go:435 +0xce
github.com/jroimartin/gocui.(*Gui).MainLoop(0xc0001462d0, 0xc0001462d0, 0x0)
	/home/bastelfreak/go/src/github.com/jroimartin/gocui/gui.go:367 +0xbd
github.com/isacikgoz/gitbatch/pkg/gui.(*Gui).Run(0xc0001461b0, 0x0, 0x0)
	/home/bastelfreak/go/src/github.com/isacikgoz/gitbatch/pkg/gui/gui.go:152 +0x19b
main.main()
	/home/bastelfreak/go/src/github.com/isacikgoz/gitbatch/main.go:35 +0x157
$ gitbatch --version
gitbatch version 0.2.0

Let me know if you need any more debug information.

Error when loading stashed items on a detached head

For some reason I had a stashed commit for a repo in a detached state i.e.
stash@{0}: WIP on (no branch): test


goroutine 34 [running]:
github.com/isacikgoz/gitbatch/pkg/git.(*RepoEntity).loadStashedItems(0xc000382600, 0x0, 0x0)
	/Users/shibo/Code/go/src/github.com/isacikgoz/gitbatch/pkg/git/cmd-stash.go:57 +0x69c
github.com/isacikgoz/gitbatch/pkg/git.(*RepoEntity).loadComponents(0xc000382600, 0x1, 0xc000382600, 0x0)
	/Users/shibo/Code/go/src/github.com/isacikgoz/gitbatch/pkg/git/repository.go:119 +0x92
github.com/isacikgoz/gitbatch/pkg/git.InitializeRepo(0xc0000a8f00, 0x2f, 0xc0000abe90, 0x0, 0x0)
	/Users/shibo/Code/go/src/github.com/isacikgoz/gitbatch/pkg/git/repository.go:104 +0x7d
github.com/isacikgoz/gitbatch/pkg/git.LoadRepositoryEntities.func1(0xc0000abe90, 0xc0000abe88, 0xc0000bde20, 0xc0000a8f00, 0x2f)
	/Users/shibo/Code/go/src/github.com/isacikgoz/gitbatch/pkg/git/util-load.go:27 +0x7d
created by github.com/isacikgoz/gitbatch/pkg/git.LoadRepositoryEntities
	/Users/shibo/Code/go/src/github.com/isacikgoz/gitbatch/pkg/git/util-load.go:23 +0x158
exit status 2

Quickly threw together a possible fix, but haven't tested with other stuff yet so just opening an issue instead of pr: https://play.golang.org/p/oI9XpuE8-iw

Where are the logs?

I'm having some strange problems and I'm starting the application like this: gitbatch --log-level="trace"

Where are the logs?

I've had the problems below and I want to see if the log provides more details:

  • application quitted with an unhandled error: there is no job with given repoID
  • application quitted with an unhandled error: same job already is in the queue
  • unclassified error (ao lado do repo git)

ERROR 53

I was using the tool when this error happened:

ERRO[0053] application quitted with an unhandled error.  error="There is no job with given repoID"

file navigation

With repo focused, j/k does not work to go down/up through the list of file changes (however h/l works to switch between different panes), arrow up/down works.

It would be nice to have vim controls consistent throughout the app.

Exec format error

Hey, cool project!

I installed but have seemed to run into an error immediately. I admit I'm not the most experienced person son maybe this is super obvious.

After installing I run gitbatch and I get an "exec format error" response. Any clue what the issue is?

Crash on remoteless repositories

│ ↖ 0 ↘ 0 | master ✗          | Stanford-OpenIE-Python             |panic: runtime error: index out of range                                                          │
│                                                                                                                                                                     │
goroutine 120 [running]:                                                                                                                                              │
github.com/isacikgoz/gitbatch/core/git.(*Repository).initRemotes(0xc420344000, 0xc420344000, 0xc42031c4b0)                                                            │
│       /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/core/git/remote.go:42 +0x5ce                                                                │
github.com/isacikgoz/gitbatch/core/git.(*Repository).loadComponents(0xc420344000, 0x1, 0xc420344000, 0x0)                                                             │
│       /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/core/git/repository.go:142 +0x2f                                                            │
github.com/isacikgoz/gitbatch/core/git.InitializeRepo(0xc4201a0330, 0x2f, 0xc42025e000, 0x1, 0x0)                                                                     │
│       /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/core/git/repository.go:136 +0x7d                                                            │
github.com/isacikgoz/gitbatch/core/load.AsyncLoad.func1(0xc42025c000, 0xc42022a008, 0xc420143520, 0xc4201a0330, 0x2f)                                                 │
│       /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/core/load/load.go:79 +0x89                                                                  │
created by github.com/isacikgoz/gitbatch/core/load.AsyncLoad                                                                                                          │
│       /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/core/load/load.go:76 +0x112

Out of range error while navigating list

Reproduction Steps

Linux octagonal 4.20.2-107.current #1 SMP PREEMPT Sun Jan 13 13:42:59 UTC 2019 x86_64 GNU/Linux with go version go1.11.4 linux/amd64 as packaged by my distro (Solus). Installed with go get

  1. from bash, gitbatch.
  2. List of repositories is populated as screenshot below.
  3. Use the down arrow to move cursor focus downwards.
  4. Crashes when reaches the appli-library item in my screenshot.

image

This issue immediately triggers if I run it in the parent directory to that particular repository.
Running it in other subfolders works fine.

panic: runtime error: index out of range

goroutine 1 [running]:
github.com/isacikgoz/gitbatch/gui.(*Gui).renderRemotes(0xc000184f00, 0xc0001a9790, 0x0, 0x0)
	/home/scott/go/src/github.com/isacikgoz/gitbatch/gui/sideviews.go:98 +0x4a0
github.com/isacikgoz/gitbatch/gui.(*Gui).renderSideViews(0xc000184f00, 0xc0001a9790, 0xc00031b9e0, 0x1)
	/home/scott/go/src/github.com/isacikgoz/gitbatch/gui/sideviews.go:56 +0xac
github.com/isacikgoz/gitbatch/gui.(*Gui).renderMain(0xc000184f00, 0x0, 0x0)
	/home/scott/go/src/github.com/isacikgoz/gitbatch/gui/repositoriesview.go:29 +0x1ce
github.com/isacikgoz/gitbatch/gui.(*Gui).cursorDown(0xc000184f00, 0xc000208000, 0xc00022a0f0, 0x28, 0x5)
	/home/scott/go/src/github.com/isacikgoz/gitbatch/gui/repositoriesview.go:58 +0xd0
github.com/isacikgoz/gitbatch/gui.(*Gui).cursorDown-fm(0xc000208000, 0xc00022a0f0, 0x4, 0xc000000301)
	/home/scott/go/src/github.com/isacikgoz/gitbatch/gui/keybindings.go:271 +0x3e
github.com/jroimartin/gocui.(*Gui).execKeybindings(0xc000208000, 0xc00022a0f0, 0xc00031bb88, 0x879798, 0x0, 0x0)
	/home/scott/go/src/github.com/jroimartin/gocui/gui.go:629 +0xbe
github.com/jroimartin/gocui.(*Gui).onKey(0xc000208000, 0xc00031bb88, 0xc00021aa80, 0xc000210010)
	/home/scott/go/src/github.com/jroimartin/gocui/gui.go:593 +0x1b0
github.com/jroimartin/gocui.(*Gui).handleEvent(0xc000208000, 0xc00031bb88, 0x2, 0x0)
	/home/scott/go/src/github.com/jroimartin/gocui/gui.go:413 +0x40
github.com/jroimartin/gocui.(*Gui).MainLoop(0xc000208000, 0xc000208000, 0x0)
	/home/scott/go/src/github.com/jroimartin/gocui/gui.go:373 +0x2c3
github.com/isacikgoz/gitbatch/gui.(*Gui).Run(0xc000184f00, 0x0, 0x0)
	/home/scott/go/src/github.com/isacikgoz/gitbatch/gui/gui.go:140 +0x1e3
main.run(0x0, 0x0, 0x0, 0xb3adc2, 0x5, 0x0, 0xc000110500, 0x0, 0x0, 0x0, ...)
	/home/scott/go/src/github.com/isacikgoz/gitbatch/main.go:52 +0x122
main.main()
	/home/scott/go/src/github.com/isacikgoz/gitbatch/main.go:24 +0xc2

Error on startup

panic: runtime error: slice bounds out of range

goroutine 31 [running]:
github.com/isacikgoz/gitbatch/pkg/git.(*RepoEntity).loadStashedItems(0xc42033c000, 0x0, 0x0)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/pkg/git/cmd-stash.go:64 +0x655
github.com/isacikgoz/gitbatch/pkg/git.(*RepoEntity).loadComponents(0xc42033c000, 0x1, 0xc42033c000, 0x0)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/pkg/git/repository.go:119 +0x92
github.com/isacikgoz/gitbatch/pkg/git.InitializeRepo(0xc4202a89c0, 0x1c, 0xc4202c31f0, 0x0, 0x0)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/pkg/git/repository.go:104 +0x7d
github.com/isacikgoz/gitbatch/pkg/git.LoadRepositoryEntities.func1(0xc4202c31f0, 0xc4202c31e8, 0xc420216d20, 0xc4202a89c0, 0x1c)
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/pkg/git/util-load.go:27 +0x7d
created by github.com/isacikgoz/gitbatch/pkg/git.LoadRepositoryEntities
        /home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/pkg/git/util-load.go:23 +0x13f

Weird rendering in nested directories

First, I think this is a really great idea for a such tool. Thanks for working on it!

I'm using kitty terminal

font_family      JetBrains Mono
gitbatch --recursive-depth=3

image

Slow startup / high CPU with lots of repos

I have a directory containing about 160 git repos (most are very small, with 1 or 2 "big" repos) and it takes about 3 minutes for the app to load up on my Macbook Pro (2014 w/ SSD), pegging my CPU until it's done loading them all.

I tried with --recursive-depth=0 and it made no difference.

This happens every time I launch it as well. Should there be some caching mechanism to save time on subsequent starts?

0.4.1 panic: runtime error: index out of range

go version
go version go1.11.5 darwin/amd64

gitbatch --version
gitbatch version 0.4.1
panic: runtime error: index out of range

goroutine 1 [running]:
github.com/isacikgoz/gitbatch/gui.(*Gui).renderRemotes(0xc42016ee60, 0xc42023c270, 0x0, 0x0)
	/home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/sideviews.go:98 +0x49c
github.com/isacikgoz/gitbatch/gui.(*Gui).renderSideViews(0xc42016ee60, 0xc42023c270, 0xc420283ab8, 0x1)
	/home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/sideviews.go:56 +0xac
github.com/isacikgoz/gitbatch/gui.(*Gui).renderMain(0xc42016ee60, 0x0, 0x0)
	/home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/repositoriesview.go:29 +0x1ce
github.com/isacikgoz/gitbatch/gui.(*Gui).repositoryUpdated.func1(0xc4201d4000, 0x1, 0xc4200efb40)
	/home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/repositoriesview.go:35 +0x2a
github.com/jroimartin/gocui.(*Gui).MainLoop(0xc4201d4000, 0xc4201d4000, 0x0)
	/home/isacikgoz/.local/share/go/src/github.com/jroimartin/gocui/gui.go:377 +0x1e0
github.com/isacikgoz/gitbatch/gui.(*Gui).Run(0xc42016ee60, 0x0, 0x0)
	/home/isacikgoz/.local/share/go/src/github.com/isacikgoz/gitbatch/gui/gui.go:140 +0x1ee
main.run(0x0, 0x0, 0x0, 0x170b753, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/home/isacikgoz/git/gitbatch/main.go:52 +0x122
main.main()
	/home/isacikgoz/git/gitbatch/main.go:24 +0xc2

Error on startup

Using version 0.2.0

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x1464f6c]

goroutine 40 [running]:
github.com/isacikgoz/gitbatch/pkg/git.(*RepoEntity).loadComponents(0xc00021a100, 0x1, 0xc00021a100, 0x0)
	/Users/ibrahim/go/src/github.com/isacikgoz/gitbatch/pkg/git/repository.go:134 +0xfc
github.com/isacikgoz/gitbatch/pkg/git.InitializeRepo(0xc0000afa20, 0x20, 0xc0000a3d20, 0x0, 0x0)
	/Users/ibrahim/go/src/github.com/isacikgoz/gitbatch/pkg/git/repository.go:104 +0x7d
github.com/isacikgoz/gitbatch/pkg/git.LoadRepositoryEntities.func1(0xc0000a3d20, 0xc0000a3d18, 0xc0001ae040, 0xc0000afa20, 0x20)
	/Users/ibrahim/go/src/github.com/isacikgoz/gitbatch/pkg/git/util-load.go:27 +0x7d
created by github.com/isacikgoz/gitbatch/pkg/git.LoadRepositoryEntities
	/Users/ibrahim/go/src/github.com/isacikgoz/gitbatch/pkg/git/util-load.go:23 +0x158

HTTP authentication support?

I noticed that the wiki only mentions SSH based repo authentication, I'm forced to use HTTPS due to
firewall rules.

I configured a (long) timeout on the credentials store for git, allowing it to retain my https credentials against repos.

While gitbatch allows for interactive HTTPS auth requests currently, the granted permission isn't maintained across invocations where git normally would cache the credentials.

Is there a recommended way of handling this?

New release w/ gomod support

Can you create a new release now that there is gomod support? I'm packaging this for Solus and would prefer a release tag to source from. Thanks!

Auto release with goreleaser and GitHub workflow

I'm using goreleaser with GitHub workflow to automatically release my go applications.

This can be beneficial for this because of the features following:

  • auto-generated changelog
  • homebrew support
  • easy cross-platform compiling

I'm really happy especially with the homebrew update and changelog generation.

I'm happy to implement this if you want.

The example repository that uses this workflow:

tab behaviour

This might be intended, but seems a bit inconsistent.

In the main screen tab is used to focus on a repository, but after that it cycles through the different panes (commits, status, remotes, branches, stash).
I would expect tab to return me to the main screen, rather work in a zoom in/zoom out way, then change behaviour completely.

Multiple Repository Selection Crash

CURRENT BEHAVIOR: When selecting 2-5 repositories at once, an error is thrown saying:
application quitted with an unhandled error: same job already is in the queue
EXPECTED BEHAVIOR: When selecting any number of repositories, application continues and other commands may be entered.

So I can get this issue a few ways, and I'm rather new at this so let me know if I'm just using it wrong:

  1. navigate to parent folder of at least 5 repositories in windows Command Prompt or Powershell, (I had 15 repos in the folder when I tested)
  2. enter gitbatch then press enter to open the gitbatch console,
  3. select one repository to fetch by pressing space,
  4. Press down to highlight another repository,
  5. select the other repository by pressing space.
  6. return to step 4 until the error occurs.

If you're fast enough, you can get it to crash after getting the second one, but if you wait, the largest amount of repositories I'd queued in a row was 3 (Powershell) or 4 (CMD) before the error occurred.
My Specs:
image

Configurable repository name

I have multiple repositories with same names in different projects, but of course in different folders.

For example:
-> FOLDER1
--> repoName1
--> repoName2
-> FOLDER2
--> repoName3
--> repoName1

In app I now see:

-- repoName1
-- repoName2
-- repoName3
-- repoName1

I have a problem, because I dont know which repoName1 belongs to which folder. It would be awesome if there would be some configuration available, where you could define how repository is displayed in app - for example: instead of just name also name of parent directory.

With this addition it would be perfect app for me (it is already awesome right now) 😄 .

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.