1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-17 00:07:37 +02:00

add git-ls-remote parser

This commit is contained in:
Kelly Brazil
2022-11-07 13:02:55 -08:00
parent b884f6aacc
commit fd22c7dc3a
7 changed files with 453 additions and 2 deletions

View File

@ -186,6 +186,7 @@ option.
| ` --fstab` | `/etc/fstab` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/fstab) | | ` --fstab` | `/etc/fstab` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/fstab) |
| ` --git-log` | `git log` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/git_log) | | ` --git-log` | `git log` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/git_log) |
| ` --git-log-s` | `git log` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/git_log_s) | | ` --git-log-s` | `git log` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/git_log_s) |
| `--git-ls-remote` | `git ls-remote` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/git_ls_remote) |
| ` --gpg` | `gpg --with-colons` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/gpg) | | ` --gpg` | `gpg --with-colons` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/gpg) |
| ` --group` | `/etc/group` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/group) | | ` --group` | `/etc/group` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/group) |
| ` --gshadow` | `/etc/gshadow` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/gshadow) | | ` --gshadow` | `/etc/gshadow` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/gshadow) |

View File

@ -4,7 +4,7 @@ _jc()
jc_about_options jc_about_mod_options jc_help_options jc_special_options jc_about_options jc_about_mod_options jc_help_options jc_special_options
jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file findmnt finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss sshd stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 udevadm ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo) jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file findmnt finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss sshd stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 udevadm ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo)
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --datetime-iso --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --findmnt --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pci-ids --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --semver --sfdisk --shadow --ss --sshd-conf --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo) jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --datetime-iso --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --findmnt --finger --free --fstab --git-log --git-log-s --git-ls-remote --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pci-ids --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --semver --sfdisk --shadow --ss --sshd-conf --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
jc_options=(--force-color -C --debug -d --monochrome -m --meta-out -M --pretty -p --quiet -q --raw -r --unbuffer -u --yaml-out -y) jc_options=(--force-color -C --debug -d --monochrome -m --meta-out -M --pretty -p --quiet -q --raw -r --unbuffer -u --yaml-out -y)
jc_about_options=(--about -a) jc_about_options=(--about -a)
jc_about_mod_options=(--pretty -p --yaml-out -y --monochrome -m --force-color -C) jc_about_mod_options=(--pretty -p --yaml-out -y --monochrome -m --force-color -C)

View File

@ -99,7 +99,7 @@ _jc() {
'xrandr:run "xrandr" command with magic syntax.' 'xrandr:run "xrandr" command with magic syntax.'
'zipinfo:run "zipinfo" command with magic syntax.' 'zipinfo:run "zipinfo" command with magic syntax.'
) )
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --datetime-iso --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --findmnt --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pci-ids --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --semver --sfdisk --shadow --ss --sshd-conf --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo) jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --datetime-iso --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --findmnt --finger --free --fstab --git-log --git-log-s --git-ls-remote --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pci-ids --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --semver --sfdisk --shadow --ss --sshd-conf --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
jc_parsers_describe=( jc_parsers_describe=(
'--acpi:`acpi` command parser' '--acpi:`acpi` command parser'
'--airport:`airport -I` command parser' '--airport:`airport -I` command parser'
@ -133,6 +133,7 @@ _jc() {
'--fstab:`/etc/fstab` file parser' '--fstab:`/etc/fstab` file parser'
'--git-log:`git log` command parser' '--git-log:`git log` command parser'
'--git-log-s:`git log` command streaming parser' '--git-log-s:`git log` command streaming parser'
'--git-ls-remote:`git ls-remote` command parser'
'--gpg:`gpg --with-colons` command parser' '--gpg:`gpg --with-colons` command parser'
'--group:`/etc/group` file parser' '--group:`/etc/group` file parser'
'--gshadow:`/etc/gshadow` file parser' '--gshadow:`/etc/gshadow` file parser'

View File

@ -44,6 +44,7 @@ parsers: List[str] = [
'fstab', 'fstab',
'git-log', 'git-log',
'git-log-s', 'git-log-s',
'git-ls-remote',
'gpg', 'gpg',
'group', 'group',
'gshadow', 'gshadow',

138
jc/parsers/git_ls_remote.py Normal file
View File

@ -0,0 +1,138 @@
"""jc - JSON Convert `git ls-remote` command output parser
This parser outputs two schemas:
- Default: A single object with key/value pairs
- Raw: An array of objects (`--raw` (cli) or `raw=True (module))
See the Schema section for more details
Usage (cli):
$ git ls-remote | jc --git-ls-remote
or
$ jc git ls-remote
Usage (module):
import jc
result = jc.parse('git_ls_remote', git_ls_remote_command_output)
Schema:
Default:
{
<reference>: string
}
Raw:
[
{
"reference": string,
"commit": string
}
]
Examples:
$ git ls-remote | jc --git-ls-remote -p
{
"HEAD": "214cd6b9e09603b3c4fa02203b24fb2bc3d4e338",
"refs/heads/dev": "b884f6aacca39e05994596d8fdfa7e7c4f1e0389",
"refs/heads/master": "214cd6b9e09603b3c4fa02203b24fb2bc3d4e338",
"refs/pull/1/head": "e416c77bed1267254da972b0f95b7ff1d43fccef",
...
}
$ git ls-remote | jc --git-ls-remote -p -r
[
{
"reference": "HEAD",
"commit": "214cd6b9e09603b3c4fa02203b24fb2bc3d4e338"
},
{
"reference": "refs/heads/dev",
"commit": "b884f6aacca39e05994596d8fdfa7e7c4f1e0389"
},
...
]
"""
from typing import List, Dict
from jc.jc_types import JSONDictType
import jc.utils
class info():
"""Provides parser metadata (version, author, etc.)"""
version = '1.0'
description = '`git ls-remote` command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
compatible = ['linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd']
magic_commands = ['git ls-remote']
__version__ = info.version
def _process(proc_data: List[JSONDictType]) -> JSONDictType:
"""
Final processing to conform to the schema.
Parameters:
proc_data: (List of Dictionaries) raw structured data to process
Returns:
Dictionary. Structured to conform to the schema.
"""
new_dict: JSONDictType = {}
for item in proc_data:
new_dict.update(
{
item['reference']: item['commit'] # type: ignore
}
)
return new_dict
def parse(
data: str,
raw: bool = False,
quiet: bool = False
) -> List[JSONDictType]:
"""
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
Dictionary (default) or List of Dictionaries (raw)
"""
jc.utils.compatibility(__name__, info.compatible, quiet)
jc.utils.input_type_check(data)
raw_output: List[Dict] = []
if jc.utils.has_data(data):
for line in filter(None, data.splitlines()):
commit, reference = line.split()
output_line = {
'reference': reference,
'commit': commit
}
raw_output.append(output_line)
return raw_output if raw else _process(raw_output) # type: ignore

View File

@ -190,6 +190,11 @@ Email Address string parser
\fB--git-log-s\fP \fB--git-log-s\fP
`git log` command streaming parser `git log` command streaming parser
.TP
.B
\fB--git-ls-remote\fP
`git ls-remote` command parser
.TP .TP
.B .B
\fB--gpg\fP \fB--gpg\fP

305
tests/fixtures/generic/git-ls-remote.out vendored Normal file
View File

@ -0,0 +1,305 @@
214cd6b9e09603b3c4fa02203b24fb2bc3d4e338 HEAD
b884f6aacca39e05994596d8fdfa7e7c4f1e0389 refs/heads/dev
214cd6b9e09603b3c4fa02203b24fb2bc3d4e338 refs/heads/master
e416c77bed1267254da972b0f95b7ff1d43fccef refs/pull/1/head
283b89e37c38a3082203e43e38569c8b0bb11e12 refs/pull/101/head
cc6a19adccea3e10243a166b87d852b6f95414b5 refs/pull/102/head
325fab2de7b8a4bfc452ab8d3cf333d47fdf4989 refs/pull/106/head
5b60c7445a3f8bd2ae1587aa0ffaeaf093966f9a refs/pull/107/head
a73fdb7478965f0f2c841ac01b2762db80ad0786 refs/pull/114/head
5285e699c30fdeaf56068f5a03ef1d1d33fa673c refs/pull/115/head
5d8f8365e24a7c3a587d4e71ebba4876de08203b refs/pull/116/head
605353fdce3b8b5986d20a35d05f7210a6df0730 refs/pull/117/head
13deb8bfb6e77aaf86942f0be87b59d06ee2a97c refs/pull/118/head
aef54705f5267c633e0778e8dce0065978083139 refs/pull/119/head
e0681eebb9881dc0ffddb478224455f434919104 refs/pull/120/head
6c838460752c7131f75cdab2da07266fee492060 refs/pull/121/head
3ab9d480149a692510ab9e0ac8e745b674683e3d refs/pull/123/head
35464bbbfb6b424ef3ee1c855557ada1bf3769fa refs/pull/127/head
92e2252bee00482bb0eeae3074b107d4c8553e4c refs/pull/128/head
56e041aa260b2daf2f5662fae98645a93137adb5 refs/pull/129/head
bd428a9fd75327710dce96f3c95f74ab9d1beaad refs/pull/130/head
d24f9a885d3954035a98a488671486408f509dca refs/pull/131/head
6150aae0aeabafba26d9f119406b0660d9221cb6 refs/pull/135/head
efb1d3e6b2db920423511a9dcf4c5e5fd9d6af43 refs/pull/136/head
9c57c09c00e64a9031391b9b70083ad6ecf0bc0b refs/pull/138/head
95aec9c6f9aa8fb4d0dae227410a1346d550f47f refs/pull/139/head
ff7ab0a1ed7f468d0e84eb3bf0636f53913c490d refs/pull/141/head
3b22ce41105387e7f46a410460cf04759feef197 refs/pull/147/head
7a1be905bb8654558afb5979b0bd78d4a8488874 refs/pull/149/head
0dbd2702f6ab2640b2ccdea92411ac0789673e66 refs/pull/154/head
2689697b4c21758903e5f74ec069e89be585aba2 refs/pull/155/head
473f70668f04a38765559c5dbf0468af24d625c9 refs/pull/156/head
834e52369ceb479776ddc8fc2931790af53b9c18 refs/pull/159/head
4867655eb297b1da7a55e0d3a24c7ed7c8af55c7 refs/pull/16/head
e08b61fa81b1bd2304d04db5cdc8b809fe9c6032 refs/pull/163/head
aac553950d3bdd8fbd60f3df81cc67686622ed9a refs/pull/167/head
528aac7ad87feae2093aba563c83a29ebf75e5f9 refs/pull/168/head
a6f859a55edae50fcc185948736218404cfaa929 refs/pull/169/head
4f118559356edc1da866e1bec80830e7a75a0b26 refs/pull/17/head
77dcbc544da271edab5de5ad209117e98c846f9c refs/pull/170/head
9b160f6279bbbf0c15413c98922eef137ba2f3f4 refs/pull/172/head
5ba22dae597b9d154ca0a82f71cfbd8d8a6325db refs/pull/176/head
7fa5391b6613e62689c624041e03f9750c9c7972 refs/pull/179/head
eb888dcbbcf83c9197bd59aab72f65ea6eb622ba refs/pull/180/head
7933dfdbe7bf400833d6f6b771362dfc518b9a8d refs/pull/183/head
b4506976e3c865397bc657183d49c484d8bcfd7a refs/pull/184/head
9c1eaa938934269fe4179da798acf5f119cde0cf refs/pull/185/head
2e4f5a508b6c90f9e03dcbcf64efc0e2fc446666 refs/pull/186/head
433c7cc0f05e321ffe024845a908f3e856d4cd2b refs/pull/187/head
b7d439cb870e443e4f4e4a2137ab170835e77eff refs/pull/188/head
f7331001d4ab976e311458a16b6e5337da2e3aab refs/pull/189/head
53cdf863acc72dbdb671773e30277f42e9eadc0e refs/pull/19/head
65d96e26b59e231c77c1dbba1dc91708c33de30c refs/pull/190/head
bc7973af36e13006230b5faa9e201e300d468912 refs/pull/192/head
78672bd7ad66c418e0ecf31add73f887b0946d29 refs/pull/193/head
e6900e2000bf265dfcfc09ffbfda39e9238661af refs/pull/194/head
830674cc6f19e107347a743baff7bbaab7f80b75 refs/pull/195/head
027c231097a002526350a93322407582a85db0cb refs/pull/198/head
b3896650c230b4acc73704a50c93ee74e4034eef refs/pull/199/head
30080c01659cf611666876b7b063b7b329822352 refs/pull/2/head
8bb266352207f95040b72750e5b3ae3b8ceb2b98 refs/pull/203/head
cbdc66623671da335eafe132b7af79f884856f1d refs/pull/204/head
3afaa48eee081e28262d1762c5ec23d318012822 refs/pull/207/head
961968a0fcaf37b64bc850c4945ba4b805a1fe54 refs/pull/208/head
98619834818c181cb50a9605fe166b6153c46095 refs/pull/209/head
ac61e9ad2c9c4e864db02db04cbf907fb0efd99b refs/pull/211/head
789f0735dfd63e728b8716d97cf0c6045ede5011 refs/pull/213/head
4140939bbf74bada6e062143ceba777c129f1955 refs/pull/215/head
14d6d8b84f0ddeff984aff486e2e697a91ac6fb6 refs/pull/22/head
7138eef3d137bc64286d4af453d8d4e7b3f4408d refs/pull/220/head
a1afed8d95e33fbbc618c7b5778a9faeea2f628f refs/pull/223/head
4ee8a69337b24e199983fe657643abcb0a56a8e6 refs/pull/225/head
dcca7a57d558721a61fbba44f07b1d53116827e1 refs/pull/226/head
8bc2ea14a3c83df0c46a16384cffd10f4fa5880b refs/pull/233/head
46af3bd0c0f699a45e2e12bab43fffca8fe44b77 refs/pull/234/head
148f2fb6dba660bd5211f946ca9321e0e3ac874a refs/pull/235/head
49ca0cecf42212e1036cd2234bdbf48701d25041 refs/pull/236/head
7608823ea7bf1a444b6e6d85c58bc733d969bb9d refs/pull/238/head
1f236dc02aff63e7575df7b67ed0824d6d7f5eb3 refs/pull/240/head
0bf69713abd312998cd28b7ec721aa7b79564984 refs/pull/242/head
c12b48537a7a0f7d47cd655940ab7ba091a78243 refs/pull/244/head
176ca2f75d5bfa8353cc22b233653dbe34d11922 refs/pull/247/head
9bf2cd06915ae232c3db133d0a50640dc99f4b3e refs/pull/249/head
f857523ca756864211b6b18af5a8886e5db200bb refs/pull/25/head
57142d899c2261ae02b7f5797f412113cd79f510 refs/pull/250/head
776ee66baef425517b8c9e4ba39a25539bf6673c refs/pull/251/head
7583f315cee2930c5e6e5faec697d59c8b2063cd refs/pull/256/head
f1ed8035252d30e2637b6d38de740b1351b89f97 refs/pull/258/head
b0e9d9fa9d13f3db7118a22fe0774ef84cd0f2e4 refs/pull/260/head
eaa36a6a319f85eed9f80fb04eb0287306b4774a refs/pull/262/head
8b3228797ef357678be900d9a4b13c3f875f8738 refs/pull/266/head
73d0bb8bbdd37aa9691df7e2d6290e17fbea04a1 refs/pull/267/head
cd2f139409d1901d13f3a91e2a0f6240aa1782f4 refs/pull/273/head
4746cb381424864bfdecbed86237c6018ab053fe refs/pull/274/head
0b726f7accf819c69c18d582682f11494c321cb1 refs/pull/275/head
00e497828e251de1188e012cb2534e39e911bf1b refs/pull/277/head
4ebde3af5f8d6019db51c7c3e9d53dcecebb667a refs/pull/284/head
f1383b5c66538db858b0de0bf1197d47353c0f29 refs/pull/286/head
c348fa89a938099662c4fe8f89bdfd9422230ab5 refs/pull/287/head
aeb494703e19b4041e16c86db926d4db53e26d4f refs/pull/289/head
8bfa0bddec9ff1c21972019467dcf5738ab3afd2 refs/pull/29/head
9c290b5e115c59db14f6629f8221767756c41651 refs/pull/290/head
32fddce8fbb42eb1040fe123c66523122fe9aa72 refs/pull/292/head
6f1ef09d2a24de2a0a33e174cf36830952c98c52 refs/pull/299/head
976fd7d9bd49190a8b28ea5acf5af8979cdec537 refs/pull/3/head
6770892acd49aced225dbccf39290f33522c9001 refs/pull/30/head
2caa10e0af48c4fc1d75ccca27ff45b9ff5e8452 refs/pull/304/head
45859b01e50164123ff689730d77cc416a14a4d3 refs/pull/306/head
73c280de3a1aaa04caefedc7f4dcb1ab807326a6 refs/pull/310/head
22ff2964e9889587711e779ac24f8f8034212f5e refs/pull/32/head
a63408c8cf3f99646be2b375f651d6cf417f7ae0 refs/pull/33/head
065276805f0f2dd23a6382f0120ca07e9eae116f refs/pull/34/head
c01bcd3734382a0c388d9f4041fc888171ca7675 refs/pull/35/head
065276805f0f2dd23a6382f0120ca07e9eae116f refs/pull/36/head
51d5c3892d6ff1e2e6ac7c4f3e496e7d9ed4b6a7 refs/pull/37/head
2cc1b1bd5451f31d71b0e2236bdee0ce2b25b5d7 refs/pull/4/head
ddc8ae70c5b3345053810144ce9a2d8e482ba333 refs/pull/43/head
65bd7e2904016141c1ed53cdd437865c66d7628e refs/pull/44/head
5bc5596f604fb87dffbfdf44ce2395b16bf01297 refs/pull/45/head
a2ab5bab91ea980399df1afb9d8071fa3282d04e refs/pull/48/head
c29e7cfe5cc4b2151912c6f618137d1b6c39c7be refs/pull/49/head
c9849ce0db1f864d33739f8f6f942bf5672bc3b7 refs/pull/5/head
c02811356153c2b4f8b2d7efb7f48bf8f7748068 refs/pull/50/head
5b697dc38141cdd47fcdd63bf295a80a7da86697 refs/pull/52/head
3f5279b97c386c736e0e2faa5c39d68ef89c46aa refs/pull/53/head
07b8d9e0c0d723d93e6c652f5b6156c467c451c7 refs/pull/56/head
4a77ec63a46554c84e646d31564230774ed87431 refs/pull/57/head
a3d9213a1e2fd52ba2cbc863d4d01d3ffeebe230 refs/pull/6/head
d98e43dc78205d3224bfc1e67de2da3c5fb7ea9a refs/pull/61/head
84f48aa369a458f534523ecc1e3aaaf403d06f1c refs/pull/62/head
fa44d48c094a55e499c2c780d109bf277736b42e refs/pull/64/head
9f2279d5867eb89d4b4b7b4ffca290166ec97c48 refs/pull/65/head
f6478fb636ead8d1e53e4a88d59e55222df37a8f refs/pull/66/head
054422d8373e7b8def18ddabd447062cb9cc3137 refs/pull/67/head
83f41b83dc01c462c6a2295e9fc56ad42a3b62f4 refs/pull/68/head
8a134065dff429551449c1ea16a36d745fdab580 refs/pull/70/head
847e346602789bf58e3515319e9d080dfb897fc9 refs/pull/71/head
ce0b43d919f07d96d1b94e9d14d03e935e80011d refs/pull/72/head
94b12b57aaa56170d1f31f4910fd1239f88de137 refs/pull/73/head
6badd3fb1e1cf6d1ee99614fadc20d54be8039aa refs/pull/74/head
85ad5cfd0bfb903ce35e37b343244fed88dbd979 refs/pull/76/head
b12217466e906829d19be4cfd80dfe7cf4008e57 refs/pull/91/head
996d394e89c732f327323ca340fce405bd5fb2e4 refs/pull/97/head
58246e33b71bae0ca4a42ad5bdf31134948b1014 refs/pull/98/head
92fdd51788536ca3b163af87698b362c42d01ef2 refs/tags/v.1.7.2
028e136161ac15f588845f87907b4565a6ee7be2 refs/tags/v.1.7.2^{}
ef906f46da0b92af7b2bbfaa47d18341cb9a4b05 refs/tags/v0.2.0
3b74afc39e58f801e75b7105e521c1469d30f991 refs/tags/v0.2.0^{}
0d89e870ccce11f0dca4ce85c14c9f17b8aac4aa refs/tags/v0.5.5
0040febbf099ed8ab35f6ee343750fcf89f2e739 refs/tags/v0.5.5^{}
b9f8dd20bb1d461cb8c0114fd9ac57dbf5aad733 refs/tags/v0.6.2
59238c85408117748e78c5e87157381a828f3782 refs/tags/v0.6.2^{}
a30131ed88a94183bd0ac01aac1fa030dff009b4 refs/tags/v0.6.3
4c8610c54ff4b643237d8f0e4c5781c277fc39f5 refs/tags/v0.6.3^{}
150a3c7819fdca2b0571326b88b7941b0cecfbcc refs/tags/v0.6.4
b5ea08e55bfd22c9da5ba73c124791012df119a0 refs/tags/v0.6.4^{}
5a7e77f7fa50a1b79561dfe3ac0c6bba1daf3213 refs/tags/v0.8.1
976fd7d9bd49190a8b28ea5acf5af8979cdec537 refs/tags/v0.8.1^{}
2d6a1ed2a0e423e9c4fd770c644331e86a7fa613 refs/tags/v0.9.1
e7921b65f5a250c10b08f78939f74968047af430 refs/tags/v0.9.1^{}
3d653caf11f65a72de974e7f6baccc5af79198af refs/tags/v1.0.1
c3eaf59836538f4ab4c745e87b70115b4a4c5421 refs/tags/v1.0.1^{}
0f85dd49a165885592fbbf84023cb99127fe87c0 refs/tags/v1.1.1
d1927456b02e6c2a6e6395cd6ce873b6565ec37d refs/tags/v1.1.1^{}
dc709cbaf59a51fa92431ed005c4f5d1fc16b36e refs/tags/v1.10.0
a43e2e19916662d509883457c160d7f95f97ae12 refs/tags/v1.10.0^{}
015af5415cf4d20a946a1c835a01ff483aec5ffa refs/tags/v1.10.1
606904d48b1c7e0c19a940b5be0b564d1b5be6c8 refs/tags/v1.10.1^{}
186dcced5716351159cac4f8638282b4513fdfea refs/tags/v1.10.10
2c1935115de03a28fe92674b04b2542b0eccb8fe refs/tags/v1.10.10^{}
f10f2af68d562763c42d8269f5c9551a0657b6e9 refs/tags/v1.10.12
f5627a45947e5e76e5f3e64d9b30099fe0b962a2 refs/tags/v1.10.12^{}
9c270d623a393a36c954dc717bd008dfc90d3bf7 refs/tags/v1.10.2
7f869b4b187d70752207a7e74c13b858446f898f refs/tags/v1.10.2^{}
5e0a2be9cd470cc7a505eb974d3c2b475e978159 refs/tags/v1.10.3
99f7842dee0f79cf933fae185cf8b0ed7c8b210f refs/tags/v1.10.3^{}
8b995d8f4dbe8b75a463836f5fbcb7ea19a22b2b refs/tags/v1.10.4
c87b722aec6e6964c516bbb8e80667ad7d9c6bc7 refs/tags/v1.10.4^{}
a61503737869559aa6e848d42b88a1a488b45905 refs/tags/v1.10.5
a06a89cbd11026aa3910fadd1eff7fe388d02507 refs/tags/v1.10.5^{}
44ae0f54fc9230dfa849726139317733c969c365 refs/tags/v1.10.6
b7756d92501a7b8ba8e77d77d9d3718a58425beb refs/tags/v1.10.6^{}
b73ca6db2654551a8055003aead61ad45d4c9c5f refs/tags/v1.10.7
5b08469b874553744bd5c5b1fa6581f4dcffacd0 refs/tags/v1.10.7^{}
34f81a6985533ade66f222b81537b5427d614ca1 refs/tags/v1.10.8
c72562524b2b9aaca0be372bb24343158829ba5a refs/tags/v1.10.8^{}
c50c31c006b9c7b4ebab69964182c30e7a020545 refs/tags/v1.10.9
99070fa6073c4415a6faf8ca69dd6aa089af4062 refs/tags/v1.10.9^{}
57a6a7527c81fdbdaa9cabc0de32ea239fc77642 refs/tags/v1.11.0
c7fdce5d3b7566a7d290627767c47d9c196e02ad refs/tags/v1.11.0^{}
5a5c0374e77bfe05867d24e47d032c98e5cf3fde refs/tags/v1.11.1
3f9164ea77ec41e1b0671d0a642900d8e36faf9b refs/tags/v1.11.1^{}
978241b9d367e9d2b5e4a01a76babb3854eaa9c8 refs/tags/v1.11.2
bed694fcf5c8c31bbd4f3e88759fe7ab82382d24 refs/tags/v1.11.2^{}
c79fe15ca31741f8ba40308152557279b1a4a9c9 refs/tags/v1.11.3
ee7ff9a09d3373f60ae1645376ccc0057803147e refs/tags/v1.11.3^{}
279b0cb778381bc8e8ca0d842116f0694793101c refs/tags/v1.11.4
07b179cd7f8853ff6aca0b27a703e198c158ca72 refs/tags/v1.11.4^{}
22aed2d43f3a0196a8588a9b2e0a20fe9162fb2b refs/tags/v1.11.5
2af61730f0f5b9bc6f1f4c5d9d808ff6ccb0faeb refs/tags/v1.11.5^{}
5dea7ffda62fc9bc605444bb58361fba523fd26b refs/tags/v1.11.6
d0d7254c6acc7be4341618d231a5b166f640b287 refs/tags/v1.11.6^{}
0a2221b6fb4f2a83f99d0364eb46d268dc6d0576 refs/tags/v1.11.7
d20b795137036f8b889eb231cb4f14b756ec6479 refs/tags/v1.11.7^{}
2af89405635505d3ad8c3313f1f037018d4e6840 refs/tags/v1.11.8
de3b91a36cfcaf565b26b1da42f1e87835da4dc3 refs/tags/v1.11.8^{}
4b784c04f4ecf71b484a7e8c66fbefd82c219aee refs/tags/v1.12.0
ffb3a0ee5fb30a3f61d6cbedf877ab04acdbf624 refs/tags/v1.12.0^{}
4d9cebff16bb9bfca9477dbac20d0c8b48afdda3 refs/tags/v1.12.1
34ed772775f1f02ed148f24a3bfff532bc811607 refs/tags/v1.12.1^{}
a97c8eefd0fc830d0cb7a2b36a41fb61df9452be refs/tags/v1.13.0
032cda8b3db096b690d2557e3b918c50c716c543 refs/tags/v1.13.0^{}
1d2feb42517aa4efc1337a9837bacc19ec7d8dec refs/tags/v1.13.1
339238ab364d8735892a11cb16a62a651edae169 refs/tags/v1.13.1^{}
9b4880c39522965de02daabfd647c1f22433be58 refs/tags/v1.13.2
e30a75e25c4b43969bf9f874f89e18512a5e3a34 refs/tags/v1.13.2^{}
5075a9b7752e82d706868320346ea7ba75aecd0d refs/tags/v1.13.3
5c538816cf76686bac1a86a7c06e24664d25a2dc refs/tags/v1.13.3^{}
cae0e57b32f6324fdd6f92d3c0d9b14d378013da refs/tags/v1.13.4
5344883394a0662ee16bb5edd68df8e4410025f6 refs/tags/v1.13.4^{}
37c3d8d2ea57a7f21efac7a72942310c570d959f refs/tags/v1.14.0
9e3b88727cd439e15f235dddb9dd5796e010797a refs/tags/v1.14.0^{}
999b4c4468048a07198a44b0eb56ca3397fa113a refs/tags/v1.14.1
3c25839350800c7e7d2c48fc032bb21efa0ac213 refs/tags/v1.14.1^{}
97a3bc99175cffe62b710f640e8de4d9087fd269 refs/tags/v1.14.2
87b506dc9b4831d11b4fd04fd6849532db074f90 refs/tags/v1.14.2^{}
7746edaa7175f4b9da2333ab0a5c49cab71e959e refs/tags/v1.14.3
fb723ae8bd7bb51f9a4bab380ec1bc54cda0445b refs/tags/v1.14.3^{}
15196cb46637418943d66ef39e45289906db4f98 refs/tags/v1.14.4
1e18dd30a824b0463f0cad86e0da7094c47d34f9 refs/tags/v1.14.4^{}
49ec8ce6acc6993f1f755320f7ff5528e373d9ed refs/tags/v1.15.0
5285e699c30fdeaf56068f5a03ef1d1d33fa673c refs/tags/v1.15.0^{}
e043a1e1496ef0a1129e14fd2b453fd070ae4c52 refs/tags/v1.15.1
6c838460752c7131f75cdab2da07266fee492060 refs/tags/v1.15.1^{}
0152c26cb8c0da1526b287fe949fa299d6ba59bc refs/tags/v1.15.2
fcc7e5294973d1a18943fa2ce2e836b0fe757d95 refs/tags/v1.15.2^{}
c3d5d92f87d7c0a2d67aef926caf0072a0caab2d refs/tags/v1.15.3
fd7861db11e5aaa17c4e7bbce942c0c096116e30 refs/tags/v1.15.3^{}
260661d53da9f08b731a87e2d302266b4c3fdef5 refs/tags/v1.15.4
773b7f4b1f23e04c90e602aab05bc1a7e5aae37b refs/tags/v1.15.4^{}
48de1293a0167366a14b5fde21436314e7c4574b refs/tags/v1.15.5
572548b42fb6ed9d32a392503d44fac1a8f146d3 refs/tags/v1.15.5^{}
3c19f4c6e26e5954f57dcbc81fcfab52e5ee486d refs/tags/v1.15.6
3b22ce41105387e7f46a410460cf04759feef197 refs/tags/v1.15.6^{}
5df24c1861d76c5d9ca05d405a9d322ae0a2b474 refs/tags/v1.16.0
c5b7aaca25d6b66d3e44256c2c6760a4cf2956ec refs/tags/v1.16.0^{}
948302dcd3349d76e8fc11682e0aa920c11872e6 refs/tags/v1.16.1
834e52369ceb479776ddc8fc2931790af53b9c18 refs/tags/v1.16.1^{}
53847835a919262ca497906613c7bca5d0957753 refs/tags/v1.16.2
ab482e521d4cecfffa5393805b1d7de4389db49a refs/tags/v1.16.2^{}
aca99f9944c0f759505fb9eb65d8fe3cf81cbda2 refs/tags/v1.17.0
73e5ea98c1ca2b9299085e3832791162eca3b9ff refs/tags/v1.17.0^{}
d443374208e241b52b8cb5875454cb690e289c1d refs/tags/v1.17.1
b59e38cfd2c8a7f5868e05d5562557b1c27e5e56 refs/tags/v1.17.1^{}
0f230bf425ca9547f2e4231e0eb4afa22371f451 refs/tags/v1.17.2
597d39c28ea0c0fe3b072413e9d91ab5e27b62bd refs/tags/v1.17.2^{}
a7de9111d97e687cafbc0709ec3ff7453d658a80 refs/tags/v1.17.3
a73d0d26cbe2860b8374661068e09e0717a3bab2 refs/tags/v1.17.4
d753e71a7452310d45fa605a2e4c70320ed60dbb refs/tags/v1.17.5
0ee244756bf39123e4873eb231156edbe7f0e0ec refs/tags/v1.17.6
70cb4453bebb235130e2c287633ecb1de6c2b0aa refs/tags/v1.17.7
6e7b6afe87355e96422bb2560ffcbd5e79d28f04 refs/tags/v1.18.0
8e6a31d3da19926ac46744e02b27a899ca5fbd7c refs/tags/v1.18.1
681176e4c958157ef1f2151b3e57963a6ba48e09 refs/tags/v1.18.2
2f7c03eb35520be916c28a687031f8c6425839ba refs/tags/v1.18.3
6afb1d389ca9dfd7880386d380fee032b7eb92e2 refs/tags/v1.18.4
727fc9a701e9aae75d3d2b708010da1d0dc8781a refs/tags/v1.18.5
e05be3f08beae1b600fc55a3a7b4e28163e15bc0 refs/tags/v1.18.6
fecb2193ae6a939e70294841782cff106c675adb refs/tags/v1.18.7
4f8c1a2ca2cb4c81938973f54c08bb4fa5f146c1 refs/tags/v1.18.8
c12b48537a7a0f7d47cd655940ab7ba091a78243 refs/tags/v1.19.0
776ee66baef425517b8c9e4ba39a25539bf6673c refs/tags/v1.20.0
7fd67fda136b99e68dba4cf56c31b042e7217870 refs/tags/v1.20.1
9b33a50bb0a034a792d1dfdbb7d2e0cdeae72c96 refs/tags/v1.20.2
2683dbb20a2f30afbd9c007b4af600a1eae59a2e refs/tags/v1.20.3
e2f1b16cb9e920968c093bd1f371b191aa7107bf refs/tags/v1.20.4
37835c197268d98736e5f253a763cd4fe4e95274 refs/tags/v1.21.0
ea78b389c950c6f54a9f2ccd446d3314cbf77804 refs/tags/v1.21.1
f1383b5c66538db858b0de0bf1197d47353c0f29 refs/tags/v1.21.2
b877cc9509b9828a13e4513c8241164e2fc9b37c refs/tags/v1.22.0
81ea83064ce380515b804e40f403c599a376f00a refs/tags/v1.22.1
3c3fb6dc6dd64d268e23c72a08b177ceb97dd78f refs/tags/v1.5.1
9c1b8bacf9a59a86feb2a91eb44919e800491d1e refs/tags/v1.5.1^{}
33a55c4230623266dd0ca0020191c7602ce4d435 refs/tags/v1.6.1
4de8f42664379570392552796e34324abb39fdc2 refs/tags/v1.6.1^{}
21cbe50c30bd4d2322f6653419e06e1bd1c90416 refs/tags/v1.7.1
77d334f7f386f79ec0571325500054fdab207f31 refs/tags/v1.7.1^{}
5701feb36c13cda4db303435bbb3cf397816c559 refs/tags/v1.7.3
c2450b27b079b02ed3f4ece9e36547f01cd4b139 refs/tags/v1.7.3^{}
5c9ab693385d307876f95e7a9adbb27086418b31 refs/tags/v1.7.4
ddabfaa05c63f886b17e5b4d37cd83fcfdb9b221 refs/tags/v1.7.4^{}
b13e31474fa4f981091a4ffed4be66f753fb9af9 refs/tags/v1.7.5
53ee2c36310cb84390ef96644aee6871769151c9 refs/tags/v1.7.5^{}
a4723556f1e589cc1a8cc10a2964b8b78bcbf562 refs/tags/v1.8.0
4989445ef4bb8919d9b3b95e2fcee77ca7692aec refs/tags/v1.8.0^{}
94a757689a05cfe6fb3473494ec21e27a37080e4 refs/tags/v1.8.1
f0528ea83112e71ff51c89be27fc9bbdfbbf1951 refs/tags/v1.8.1^{}
a6bba1dcb183a487c9d99bd7c6d0c991eadcbea5 refs/tags/v1.9.0
400f5a44ece280cb0097d806b78a9490d2905600 refs/tags/v1.9.0^{}
e2b1099e4288597f2e2f0140433e77c5478831ce refs/tags/v1.9.1
e5bea9ae3b0a70b38f7da7dd9184343dbbd18887 refs/tags/v1.9.1^{}
8299d4c9dac5943d4f393241e60ead586a5f162d refs/tags/v1.9.2
8ec8cd62944c59c462ab9f520c1dcfd14218b1ed refs/tags/v1.9.2^{}
1848db2562c1a22f439538daff3a167ccb8603e2 refs/tags/v1.9.3
6b4ba662317629839aa62fbcfefb8ed3337c37ef refs/tags/v1.9.3^{}