[BUG] Git 2.20: `git help -a' hangs if specific git alias occurs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,
I've attached a screenshot for running `git help -a' that ends in a
hang and ~100% cpu usage, for the following ~/.gitconfig (it's also
attached):

https://raw.githubusercontent.com/agostonbarna/dotfiles-base/master/.gitconfig

So it's hangs on the alias `remote-origin-https-to-ssh'. One user in
following thread discovered, that it's about lenght of the alias:
"abcdefghijklmnopqr = ... is ok, but with abcdefghijklmnopqrs = ..."
it will crash, "the problem occurs if the name of a git alias consists
of more than 18 characters" (see the thread:
https://github.com/zdharma/fast-syntax-highlighting/issues/95).

Is there a workaround? Of course a fix is needed, but I'm interested
specifically in a workaround so my Zsh plugin
`fast-syntax-highlighting' can work without hang also with Git 2.20,
without exceptions in code.
-- 
Sebastian Gniazdowski
News: https://twitter.com/ZdharmaI
IRC: https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin
Blog: http://zdharma.org
[include]
  path = ~/.gitconfig.user

#[user]
  #useconfigOnly = true # enforces to configure Git user on a per-repository basis

[credential]
  helper = cache --timeout=3600

[core]
  trustctime = false
  preComposeUnicode = false
  autocrlf = input
  eol = lf
  untrackedCache = true # speed up commands involving untracked files
  #attributesFile = ~/.gitattributes
  #excludesfile = ~/.gitignore
  #filemode = false
  #editor = vim

[color]
  ui = auto

[color "branch"]
  current = yellow reverse
  local = yellow
  remote = green

[color "status"]
  added = green
  changed = yellow
  deleted = red
  untracked = cyan
  header = normal italic
  localBranch = cyan bold
  remoteBranch = magenta bold

[color "diff"]
  meta = yellow bold
  frag = cyan
  new = green # additions
  old = red # deletions
  newMoved = green dim
  oldMoved = red dim
  whitespace = red reverse
  commit = yellow bold

[color "diff-highlight"]
  oldNormal = red bold
  oldHighlight = black red
  newNormal = green bold
  newHighlight = black green

[color "grep"]
  linenumber = yellow bold
  match = red bold
  filename = magenta

[advice]
  statusHints = false

[status]
  showStash = true

[grep]
  extendRegexp = true
  lineNumber = true

[commit]
  template = ~/.gitmessage

[stash]
  showPatch = true

[apply]
  whitespace = fix  # Detect whitespace errors when applying a patch

[push]
  default = simple

[pull]
  ff = only

[rebase]
  autoStash = true

[diff]
  renames = copies
  colorMoved = zebra
  tool = meld
  #tool = idea # slow
  #whitespace = reverse
  #context = 0

[difftool]
  prompt = false

[difftool "meld"]
  cmd = meld \"$LOCAL\" \"$REMOTE\" -L \"LOCAL | REMOTE\" 2>/dev/null
  trustExitCode = true

[difftool "idea"]
  cmd = idea diff \"$LOCAL\" \"$REMOTE\"

[diff-so-fancy]
  useUnicodeRuler = false

[merge]
  conflictstyle = diff3
  tool = meld
  #tool = idea

[mergetool]
  prompt = false
  #keepBackup = false # do not keep the .orig backup files

[mergetool "meld"]
  cmd = meld \"$LOCAL\" \"$MERGED\" \"$REMOTE\" -o \"$MERGED\" -L \"LOCAL | MERGED | REMOTE\" 2>/dev/null
  #cmd = meld \"$LOCAL\" \"$BASE\" \"$REMOTE\" -o \"$MERGED\" -L \"LOCAL | BASE | REMOTE\" 2>/dev/null
  trustExitCode = true

[mergetool "idea"]
  cmd = idea merge \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
  trustExitCode = true

[interactive]
  singleKey = true # in interactive mode, accept one-letter inputs (no need to hit enter)

[submodule]
  fetchJobs = 0 # 0: auto, 1: default

[tag]
  sort = version:refname # sort tags by version number (1.2.0 before 1.10.2)

[alias]
  aliases = config --get-regexp "^alias\\."
  alias = "!git config --get-regexp \"^alias\\.$1$\" #"

  addu = add -u
  addp = add -p
  addi = add -i
  addn = add -n
  addN = add -N

  st = status -sb

  co = checkout
  cob = checkout -b
  cof = checkout -f

  stashk = stash save --keep-index
  stashl = stash list
  stashps = stash push

  ps = push
  psf = push --force-with-lease
  psuom = push -u origin master

  pullf = pull --allow-unrelated-histories

  br = branch
  brd = branch -d
  brD = branch -D
  brm = branch -m
  branches = branch -vv
  remotes = remote -v
  tags = tag -l
  untracked = ls-files --exclude-standard --others --directory --no-empty-directory
  ignored = ls-files --exclude-standard --others --ignored --directory
  modified = ls-files --exclude-standard --modified
  deleted = ls-files --exclude-standard --deleted

  ci = commit -v
  cia = commit -v -a
  cim = commit -m
  ciam = commit -v -a -m
  cinit = commit -m 'Initial commit' --allow-empty
  amend = commit --amend --no-edit
  amenda = commit --amend --no-edit -a
  amende = commit --amend

  # View abbreviated SHA, description, and history graph of the latest 20 commits
  lg = log --graph --pretty=format:'%C(red)%h%C(reset) %C(bold)%s%C(reset) %C(green)(%cr)%C(reset) %C(blue)%an%C(reset)%C(yellow)%d%C(reset)'
  lga = !git lg --all
  lgp = log -p --ignore-all-space --date=relative
  lgpf = !git lgp --follow

  standup = "!git log --stat --no-merges --since=$(($(date +%u)==1?3:1)).days.ago.midnight --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(red)%h%C(reset) %C(bold)%s%C(reset) %C(green)%cd%C(reset)'"

  # Show what I did today
  today = "!git log --reverse --no-merges --branches=* --date=local --after=\"yesterday 23:59\" --author=\"`git config --get user.name`\""

  showw = show --color-words
  showc = show --color-words=.
  showst = show --stat

  # word diff
  diffw = diff --color-words #-U0 -b -w --ignore-space-at-eol --ignore-blank-lines

  # character diff
  diffc = diff --color-words=.

  diffs = diff --staged
  diffsw = diff --staged --color-words
  diffsc = diff --staged --color-words=.
  diffst = diff --stat

  dt = difftool

  mt = mergetool

  rao = remote add origin

  unstage = reset
  rh = reset --hard
  rs = reset --soft
  rs1 = reset --soft @^

  rb = rebase
  rbi = rebase -i
  rba = rebase --abort
  rbc = rebase --continue

  ls = ls-files

  ag = "grep --break --heading --line-number"

  # Search files registered in the index, rather than the working tree
  ag-index = "grep --break --heading --line-number --cached -e"

  # Local Git Server
  # Appending "#" to an alias allow positional parameters without leaving the trailing ones
  # Origin: git serve REPO
  # Destination: git pull git://IP_OR_HOSTNAME_OF_ORIGIN/
  server = "!git daemon --verbose --reuseaddr --export-all --enable=receive-pack --base-path=\"$1\" #"

  remote-origin-https-to-ssh = "!git remote set-url origin $(git remote get-url origin | sed 's|.*://|git@|; s|/|:|')"

  assume-unchanged = update-index --assume-unchanged
  assume-changed = update-index --no-assume-unchanged

[url "git@xxxxxxxxxx:"]
  #insteadOf = "https://github.com/"; # force SSH instead of HTTP
  insteadOf = "github:" # shortcut
  pushInsteadOf = "git://github.com/"
  pushInsteadOf = "https://github.com/";

[url "git@xxxxxxxxxx:"]
  #insteadOf = "https://gitlab.com/"; # force SSH instead of HTTP
  insteadOf = "gitlab:" # shortcut
  pushInsteadOf = "git://gitlab.com/"
  pushInsteadOf = "https://gitlab.com/";

[url "git@xxxxxxxxxxxxx:"]
  #insteadOf = "https://bitbucket.org/"; # force SSH instead of HTTP
  insteadOf = "bitbucket:" # shortcut
  pushInsteadOf = "git://bitbucket.org/"
  pushInsteadOf = "https://bitbucket.org/";

[url "git@xxxxxxxxxx:"]
  insteadOf = "heroku:" # shortcut

# Prettier inline JSON diff
[diff "json"]
  textconv = "perl -MJSON::PP -e '$j = JSON::PP->new->pretty->canonical; print $j->encode($j->decode(do {$/ = undef; <>}))'"
  cachetextconv = true

[filter "transmission-conf"]
  clean = "grep -Ev '\"(alt-speed-enabled|blocklist-date|main-window-[-a-z]+|open-dialog-dir|rpc-password)\":'"
  smudge = cat

#[diff "bin"]
#  textconv = hexdump -v -C

# Merge drivers
# .gitattributes example: file merge=ours
[merge "theirs"]
  driver = cp -f %B %A

[merge "ours"]
  driver = true

Attachment: git-help--a-crash-95.png
Description: PNG image


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux