mirror of
https://github.com/nushell/nu_scripts.git
synced 2024-09-11 13:45:56 +03:00
git-v2: new command gcf
for copying files from other branch (#616)
`_git_log`: use `git --reverse` instead of nushell's reverse `nu-complete git log all`(gcp): show tags of all branches rename `gcf` to `gcl` new `gcf` for copying files from other branch Co-authored-by: agent <agent@nuc>
This commit is contained in:
parent
d459a7de1d
commit
470ad04bc5
@ -394,7 +394,7 @@ export def gr [
|
|||||||
|
|
||||||
# git cherry-pick
|
# git cherry-pick
|
||||||
export def gcp [
|
export def gcp [
|
||||||
commit?: string@"nu-complete git log"
|
commit?: string@"nu-complete git log all"
|
||||||
--abort (-a): bool
|
--abort (-a): bool
|
||||||
--continue (-c): bool
|
--continue (-c): bool
|
||||||
--skip (-s): bool
|
--skip (-s): bool
|
||||||
@ -413,6 +413,14 @@ export def gcp [
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# copy file from other branch
|
||||||
|
export def gcf [
|
||||||
|
branch: string@"nu-complete git branches"
|
||||||
|
...file: string@"nu-complete git branch files"
|
||||||
|
] {
|
||||||
|
^git checkout $branch $file
|
||||||
|
}
|
||||||
|
|
||||||
# git reset
|
# git reset
|
||||||
export def grs [
|
export def grs [
|
||||||
commit?: string@"nu-complete git log"
|
commit?: string@"nu-complete git log"
|
||||||
@ -491,7 +499,7 @@ export def ggc [] {
|
|||||||
git gc --prune=now --aggressive
|
git gc --prune=now --aggressive
|
||||||
}
|
}
|
||||||
|
|
||||||
export alias gcf = git config --list
|
export alias gcl = git config --list
|
||||||
export alias gsw = git switch
|
export alias gsw = git switch
|
||||||
export alias gswc = git switch -c
|
export alias gswc = git switch -c
|
||||||
export alias gts = git tag -s
|
export alias gts = git tag -s
|
||||||
@ -593,7 +601,7 @@ export def _git_status [] {
|
|||||||
|
|
||||||
export def _git_log_stat [n] {
|
export def _git_log_stat [n] {
|
||||||
do -i {
|
do -i {
|
||||||
git log -n $n --pretty=»¦«%h --stat
|
git log --reverse -n $n --pretty=»¦«%h --stat
|
||||||
| lines
|
| lines
|
||||||
| reduce -f { c: '', r: [] } {|it, acc|
|
| reduce -f { c: '', r: [] } {|it, acc|
|
||||||
if ($it | str starts-with '»¦«') {
|
if ($it | str starts-with '»¦«') {
|
||||||
@ -631,15 +639,15 @@ export def _git_log [v num] {
|
|||||||
_git_log_stat $num
|
_git_log_stat $num
|
||||||
} else { {} }
|
} else { {} }
|
||||||
let r = (do -i {
|
let r = (do -i {
|
||||||
git log -n $num --pretty=%h»¦«%s»¦«%aN»¦«%aE»¦«%aD
|
git log --reverse -n $num --pretty=%h»¦«%s»¦«%aN»¦«%aE»¦«%aD
|
||||||
| lines
|
| lines
|
||||||
| split column "»¦«" sha message author email date
|
| split column "»¦«" sha message author email date
|
||||||
| each {|x| ($x| upsert date ($x.date | into datetime))}
|
| each {|x| ($x| upsert date ($x.date | into datetime))}
|
||||||
})
|
})
|
||||||
if $v {
|
if $v {
|
||||||
$r | merge $stat | reverse
|
$r | merge $stat
|
||||||
} else {
|
} else {
|
||||||
$r | reverse
|
$r
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -650,6 +658,22 @@ def "nu-complete git log" [] {
|
|||||||
| each {|x| $x | update value $"($x.value)"}
|
| each {|x| $x | update value $"($x.value)"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def "nu-complete git log all" [] {
|
||||||
|
git log --all -n 32 --pretty=%h»¦«%d»¦«%s
|
||||||
|
| lines
|
||||||
|
| split column "»¦«" value branch description
|
||||||
|
| each {|x| $x | update description $"($x.branch) ($x.description)" }
|
||||||
|
}
|
||||||
|
|
||||||
|
def "nu-complete git branch files" [context: string, offset:int] {
|
||||||
|
let token = $context | split row ' '
|
||||||
|
let branch = $token | get 1
|
||||||
|
let files = $token | skip 2
|
||||||
|
git ls-tree -r --name-only $branch
|
||||||
|
| lines
|
||||||
|
| filter {|x| not ($x in $files)}
|
||||||
|
}
|
||||||
|
|
||||||
def "nu-complete git branches" [] {
|
def "nu-complete git branches" [] {
|
||||||
git branch
|
git branch
|
||||||
| lines
|
| lines
|
||||||
|
Loading…
Reference in New Issue
Block a user