New port: devel/git-absorb: Git command for automating fixup/autosquash commits
You have a feature branch with a few commits. Your teammate reviewed the branch and pointed out a few bugs. You have fixes for the bugs, but you don't want to shove them all into an opaque commit that says fixes, because you believe in atomic commits. Instead of manually finding commit SHAs for git commit --fixup, or running a manual interactive rebase, do this: > git add $FILES_YOU_FIXED > git absorb > git rebase -i --autosquash master git absorb will automatically identify which commits are safe to modify, and which indexed changes belong to each of those commits. It will then write fixup! commits for each of those changes. You can check its output manually if you don't trust it, and then fold the fixups into your feature branch with git's built-in autosquash functionality. PR: 235436 Submitted by: Greg V <greg@unrelenting.technology>
This commit is contained in:
parent
c61335e905
commit
9a8aed1bfd
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=492487
@ -771,6 +771,7 @@
|
||||
SUBDIR += gindent
|
||||
SUBDIR += gio-sharp
|
||||
SUBDIR += git
|
||||
SUBDIR += git-absorb
|
||||
SUBDIR += git-bzr-ng
|
||||
SUBDIR += git-cinnabar
|
||||
SUBDIR += git-codereview
|
||||
|
87
devel/git-absorb/Makefile
Normal file
87
devel/git-absorb/Makefile
Normal file
@ -0,0 +1,87 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= git-absorb
|
||||
DISTVERSION= 0.3.0
|
||||
CATEGORIES= devel
|
||||
|
||||
MAINTAINER= greg@unrelenting.technology
|
||||
COMMENT= Git command for automating fixup/autosquash commits
|
||||
|
||||
LICENSE= BSD3CLAUSE
|
||||
LICENSE_FILE= ${WRKSRC}/LICENSE.md
|
||||
|
||||
USES= cargo
|
||||
USE_GITHUB= yes
|
||||
GH_ACCOUNT= tummychow
|
||||
|
||||
CARGO_CRATES= ansi_term-0.10.2 \
|
||||
atty-0.2.6 \
|
||||
backtrace-0.3.5 \
|
||||
backtrace-sys-0.1.16 \
|
||||
bitflags-1.0.1 \
|
||||
cc-1.0.25 \
|
||||
cfg-if-0.1.2 \
|
||||
chrono-0.4.0 \
|
||||
clap-2.30.0 \
|
||||
failure-0.1.1 \
|
||||
failure_derive-0.1.1 \
|
||||
fuchsia-zircon-0.3.3 \
|
||||
fuchsia-zircon-sys-0.3.3 \
|
||||
git2-0.7.5 \
|
||||
idna-0.1.4 \
|
||||
isatty-0.1.6 \
|
||||
kernel32-sys-0.2.2 \
|
||||
lazy_static-1.0.0 \
|
||||
libc-0.2.43 \
|
||||
libgit2-sys-0.7.10 \
|
||||
libz-sys-1.0.25 \
|
||||
log-0.4.6 \
|
||||
matches-0.1.6 \
|
||||
memchr-2.0.1 \
|
||||
num-0.1.42 \
|
||||
num-integer-0.1.36 \
|
||||
num-iter-0.1.35 \
|
||||
num-traits-0.2.0 \
|
||||
percent-encoding-1.0.1 \
|
||||
pkg-config-0.3.9 \
|
||||
quote-0.3.15 \
|
||||
rand-0.4.2 \
|
||||
redox_syscall-0.1.37 \
|
||||
redox_termios-0.1.1 \
|
||||
remove_dir_all-0.3.0 \
|
||||
rustc-demangle-0.1.5 \
|
||||
slog-2.1.1 \
|
||||
slog-async-2.2.0 \
|
||||
slog-term-2.3.0 \
|
||||
strsim-0.7.0 \
|
||||
syn-0.11.11 \
|
||||
synom-0.11.3 \
|
||||
synstructure-0.6.1 \
|
||||
take_mut-0.2.0 \
|
||||
tempdir-0.3.6 \
|
||||
term-0.4.6 \
|
||||
termion-1.5.1 \
|
||||
textwrap-0.9.0 \
|
||||
thread_local-0.3.5 \
|
||||
time-0.1.39 \
|
||||
unicode-bidi-0.3.4 \
|
||||
unicode-normalization-0.1.5 \
|
||||
unicode-width-0.1.4 \
|
||||
unicode-xid-0.0.4 \
|
||||
unreachable-1.0.0 \
|
||||
url-1.6.0 \
|
||||
vcpkg-0.2.2 \
|
||||
vec_map-0.8.0 \
|
||||
void-1.0.2 \
|
||||
winapi-0.2.8 \
|
||||
winapi-0.3.4 \
|
||||
winapi-build-0.1.1 \
|
||||
winapi-i686-pc-windows-gnu-0.4.0 \
|
||||
winapi-x86_64-pc-windows-gnu-0.4.0
|
||||
|
||||
PLIST_FILES= bin/git-absorb
|
||||
|
||||
post-install:
|
||||
${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/git-absorb
|
||||
|
||||
.include <bsd.port.mk>
|
131
devel/git-absorb/distinfo
Normal file
131
devel/git-absorb/distinfo
Normal file
@ -0,0 +1,131 @@
|
||||
TIMESTAMP = 1548801687
|
||||
SHA256 (rust/crates/ansi_term-0.10.2.tar.gz) = 6b3568b48b7cefa6b8ce125f9bb4989e52fbcc29ebea88df04cc7c5f12f70455
|
||||
SIZE (rust/crates/ansi_term-0.10.2.tar.gz) = 16642
|
||||
SHA256 (rust/crates/atty-0.2.6.tar.gz) = 8352656fd42c30a0c3c89d26dea01e3b77c0ab2af18230835c15e2e13cd51859
|
||||
SIZE (rust/crates/atty-0.2.6.tar.gz) = 5617
|
||||
SHA256 (rust/crates/backtrace-0.3.5.tar.gz) = ebbbf59b1c43eefa8c3ede390fcc36820b4999f7914104015be25025e0d62af2
|
||||
SIZE (rust/crates/backtrace-0.3.5.tar.gz) = 27636
|
||||
SHA256 (rust/crates/backtrace-sys-0.1.16.tar.gz) = 44585761d6161b0f57afc49482ab6bd067e4edef48c12a152c237eb0203f7661
|
||||
SIZE (rust/crates/backtrace-sys-0.1.16.tar.gz) = 283418
|
||||
SHA256 (rust/crates/bitflags-1.0.1.tar.gz) = b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf
|
||||
SIZE (rust/crates/bitflags-1.0.1.tar.gz) = 13451
|
||||
SHA256 (rust/crates/cc-1.0.25.tar.gz) = f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16
|
||||
SIZE (rust/crates/cc-1.0.25.tar.gz) = 43191
|
||||
SHA256 (rust/crates/cfg-if-0.1.2.tar.gz) = d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de
|
||||
SIZE (rust/crates/cfg-if-0.1.2.tar.gz) = 6668
|
||||
SHA256 (rust/crates/chrono-0.4.0.tar.gz) = 7c20ebe0b2b08b0aeddba49c609fe7957ba2e33449882cb186a180bc60682fa9
|
||||
SIZE (rust/crates/chrono-0.4.0.tar.gz) = 118850
|
||||
SHA256 (rust/crates/clap-2.30.0.tar.gz) = 1c07b9257a00f3fc93b7f3c417fc15607ec7a56823bc2c37ec744e266387de5b
|
||||
SIZE (rust/crates/clap-2.30.0.tar.gz) = 190562
|
||||
SHA256 (rust/crates/failure-0.1.1.tar.gz) = 934799b6c1de475a012a02dab0ace1ace43789ee4b99bcfbf1a2e3e8ced5de82
|
||||
SIZE (rust/crates/failure-0.1.1.tar.gz) = 26782
|
||||
SHA256 (rust/crates/failure_derive-0.1.1.tar.gz) = c7cdda555bb90c9bb67a3b670a0f42de8e73f5981524123ad8578aafec8ddb8b
|
||||
SIZE (rust/crates/failure_derive-0.1.1.tar.gz) = 9312
|
||||
SHA256 (rust/crates/fuchsia-zircon-0.3.3.tar.gz) = 2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82
|
||||
SIZE (rust/crates/fuchsia-zircon-0.3.3.tar.gz) = 22565
|
||||
SHA256 (rust/crates/fuchsia-zircon-sys-0.3.3.tar.gz) = 3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7
|
||||
SIZE (rust/crates/fuchsia-zircon-sys-0.3.3.tar.gz) = 7191
|
||||
SHA256 (rust/crates/git2-0.7.5.tar.gz) = 591f8be1674b421644b6c030969520bc3fa12114d2eb467471982ed3e9584e71
|
||||
SIZE (rust/crates/git2-0.7.5.tar.gz) = 145895
|
||||
SHA256 (rust/crates/idna-0.1.4.tar.gz) = 014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d
|
||||
SIZE (rust/crates/idna-0.1.4.tar.gz) = 289112
|
||||
SHA256 (rust/crates/isatty-0.1.6.tar.gz) = 8f2a233726c7bb76995cec749d59582e5664823b7245d4970354408f1d79a7a2
|
||||
SIZE (rust/crates/isatty-0.1.6.tar.gz) = 7752
|
||||
SHA256 (rust/crates/kernel32-sys-0.2.2.tar.gz) = 7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d
|
||||
SIZE (rust/crates/kernel32-sys-0.2.2.tar.gz) = 24537
|
||||
SHA256 (rust/crates/lazy_static-1.0.0.tar.gz) = c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d
|
||||
SIZE (rust/crates/lazy_static-1.0.0.tar.gz) = 12611
|
||||
SHA256 (rust/crates/libc-0.2.43.tar.gz) = 76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d
|
||||
SIZE (rust/crates/libc-0.2.43.tar.gz) = 353810
|
||||
SHA256 (rust/crates/libgit2-sys-0.7.10.tar.gz) = 4916b5addc78ec36cc309acfcdf0b9f9d97ab7b84083118b248709c5b7029356
|
||||
SIZE (rust/crates/libgit2-sys-0.7.10.tar.gz) = 1176435
|
||||
SHA256 (rust/crates/libz-sys-1.0.25.tar.gz) = 2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe
|
||||
SIZE (rust/crates/libz-sys-1.0.25.tar.gz) = 650151
|
||||
SHA256 (rust/crates/log-0.4.6.tar.gz) = c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6
|
||||
SIZE (rust/crates/log-0.4.6.tar.gz) = 22303
|
||||
SHA256 (rust/crates/matches-0.1.6.tar.gz) = 100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376
|
||||
SIZE (rust/crates/matches-0.1.6.tar.gz) = 1916
|
||||
SHA256 (rust/crates/memchr-2.0.1.tar.gz) = 796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d
|
||||
SIZE (rust/crates/memchr-2.0.1.tar.gz) = 9858
|
||||
SHA256 (rust/crates/num-0.1.42.tar.gz) = 4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e
|
||||
SIZE (rust/crates/num-0.1.42.tar.gz) = 8323
|
||||
SHA256 (rust/crates/num-integer-0.1.36.tar.gz) = f8d26da319fb45674985c78f1d1caf99aa4941f785d384a2ae36d0740bc3e2fe
|
||||
SIZE (rust/crates/num-integer-0.1.36.tar.gz) = 12168
|
||||
SHA256 (rust/crates/num-iter-0.1.35.tar.gz) = 4b226df12c5a59b63569dd57fafb926d91b385dfce33d8074a412411b689d593
|
||||
SIZE (rust/crates/num-iter-0.1.35.tar.gz) = 9013
|
||||
SHA256 (rust/crates/num-traits-0.2.0.tar.gz) = e7de20f146db9d920c45ee8ed8f71681fd9ade71909b48c3acbd766aa504cf10
|
||||
SIZE (rust/crates/num-traits-0.2.0.tar.gz) = 29853
|
||||
SHA256 (rust/crates/percent-encoding-1.0.1.tar.gz) = 31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831
|
||||
SIZE (rust/crates/percent-encoding-1.0.1.tar.gz) = 10057
|
||||
SHA256 (rust/crates/pkg-config-0.3.9.tar.gz) = 3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903
|
||||
SIZE (rust/crates/pkg-config-0.3.9.tar.gz) = 11055
|
||||
SHA256 (rust/crates/quote-0.3.15.tar.gz) = 7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a
|
||||
SIZE (rust/crates/quote-0.3.15.tar.gz) = 12041
|
||||
SHA256 (rust/crates/rand-0.4.2.tar.gz) = eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5
|
||||
SIZE (rust/crates/rand-0.4.2.tar.gz) = 76170
|
||||
SHA256 (rust/crates/redox_syscall-0.1.37.tar.gz) = 0d92eecebad22b767915e4d529f89f28ee96dbbf5a4810d2b844373f136417fd
|
||||
SIZE (rust/crates/redox_syscall-0.1.37.tar.gz) = 13980
|
||||
SHA256 (rust/crates/redox_termios-0.1.1.tar.gz) = 7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76
|
||||
SIZE (rust/crates/redox_termios-0.1.1.tar.gz) = 3227
|
||||
SHA256 (rust/crates/remove_dir_all-0.3.0.tar.gz) = b5d2f806b0fcdabd98acd380dc8daef485e22bcb7cddc811d1337967f2528cf5
|
||||
SIZE (rust/crates/remove_dir_all-0.3.0.tar.gz) = 8579
|
||||
SHA256 (rust/crates/rustc-demangle-0.1.5.tar.gz) = aee45432acc62f7b9a108cc054142dac51f979e69e71ddce7d6fc7adf29e817e
|
||||
SIZE (rust/crates/rustc-demangle-0.1.5.tar.gz) = 10099
|
||||
SHA256 (rust/crates/slog-2.1.1.tar.gz) = 0a6b13b17f4225771f7f15cece704a4e68d3a5f31278ed26367f497133398a18
|
||||
SIZE (rust/crates/slog-2.1.1.tar.gz) = 38752
|
||||
SHA256 (rust/crates/slog-async-2.2.0.tar.gz) = 5e319a30c08b004618d5f7ca2f2b1dad7b4623ba7fcb1a12846fc3b01e9eaa10
|
||||
SIZE (rust/crates/slog-async-2.2.0.tar.gz) = 12956
|
||||
SHA256 (rust/crates/slog-term-2.3.0.tar.gz) = 5bb5d9360b2b279b326824b3b4ca2402ead8a8138f0e5ec1900605c861bb6671
|
||||
SIZE (rust/crates/slog-term-2.3.0.tar.gz) = 17179
|
||||
SHA256 (rust/crates/strsim-0.7.0.tar.gz) = bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550
|
||||
SIZE (rust/crates/strsim-0.7.0.tar.gz) = 8435
|
||||
SHA256 (rust/crates/syn-0.11.11.tar.gz) = d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad
|
||||
SIZE (rust/crates/syn-0.11.11.tar.gz) = 63309
|
||||
SHA256 (rust/crates/synom-0.11.3.tar.gz) = a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6
|
||||
SIZE (rust/crates/synom-0.11.3.tar.gz) = 17120
|
||||
SHA256 (rust/crates/synstructure-0.6.1.tar.gz) = 3a761d12e6d8dcb4dcf952a7a89b475e3a9d69e4a69307e01a470977642914bd
|
||||
SIZE (rust/crates/synstructure-0.6.1.tar.gz) = 11257
|
||||
SHA256 (rust/crates/take_mut-0.2.0.tar.gz) = 50b910a1174df4aeb5738e8a0e7253883cf7801de40d094175a5a557e487f4c5
|
||||
SIZE (rust/crates/take_mut-0.2.0.tar.gz) = 4246
|
||||
SHA256 (rust/crates/tempdir-0.3.6.tar.gz) = f73eebdb68c14bcb24aef74ea96079830e7fa7b31a6106e42ea7ee887c1e134e
|
||||
SIZE (rust/crates/tempdir-0.3.6.tar.gz) = 11368
|
||||
SHA256 (rust/crates/term-0.4.6.tar.gz) = fa63644f74ce96fbeb9b794f66aff2a52d601cbd5e80f4b97123e3899f4570f1
|
||||
SIZE (rust/crates/term-0.4.6.tar.gz) = 38250
|
||||
SHA256 (rust/crates/termion-1.5.1.tar.gz) = 689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096
|
||||
SIZE (rust/crates/termion-1.5.1.tar.gz) = 20659
|
||||
SHA256 (rust/crates/textwrap-0.9.0.tar.gz) = c0b59b6b4b44d867f1370ef1bd91bfb262bf07bf0ae65c202ea2fbc16153b693
|
||||
SIZE (rust/crates/textwrap-0.9.0.tar.gz) = 15795
|
||||
SHA256 (rust/crates/thread_local-0.3.5.tar.gz) = 279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963
|
||||
SIZE (rust/crates/thread_local-0.3.5.tar.gz) = 11794
|
||||
SHA256 (rust/crates/time-0.1.39.tar.gz) = a15375f1df02096fb3317256ce2cee6a1f42fc84ea5ad5fc8c421cfe40c73098
|
||||
SIZE (rust/crates/time-0.1.39.tar.gz) = 29295
|
||||
SHA256 (rust/crates/unicode-bidi-0.3.4.tar.gz) = 49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5
|
||||
SIZE (rust/crates/unicode-bidi-0.3.4.tar.gz) = 32228
|
||||
SHA256 (rust/crates/unicode-normalization-0.1.5.tar.gz) = 51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f
|
||||
SIZE (rust/crates/unicode-normalization-0.1.5.tar.gz) = 290328
|
||||
SHA256 (rust/crates/unicode-width-0.1.4.tar.gz) = bf3a113775714a22dcb774d8ea3655c53a32debae63a063acc00a91cc586245f
|
||||
SIZE (rust/crates/unicode-width-0.1.4.tar.gz) = 15283
|
||||
SHA256 (rust/crates/unicode-xid-0.0.4.tar.gz) = 8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc
|
||||
SIZE (rust/crates/unicode-xid-0.0.4.tar.gz) = 16034
|
||||
SHA256 (rust/crates/unreachable-1.0.0.tar.gz) = 382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56
|
||||
SIZE (rust/crates/unreachable-1.0.0.tar.gz) = 6355
|
||||
SHA256 (rust/crates/url-1.6.0.tar.gz) = fa35e768d4daf1d85733418a49fb42e10d7f633e394fccab4ab7aba897053fe2
|
||||
SIZE (rust/crates/url-1.6.0.tar.gz) = 72377
|
||||
SHA256 (rust/crates/vcpkg-0.2.2.tar.gz) = 9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b
|
||||
SIZE (rust/crates/vcpkg-0.2.2.tar.gz) = 5870
|
||||
SHA256 (rust/crates/vec_map-0.8.0.tar.gz) = 887b5b631c2ad01628bbbaa7dd4c869f80d3186688f8d0b6f58774fbe324988c
|
||||
SIZE (rust/crates/vec_map-0.8.0.tar.gz) = 13742
|
||||
SHA256 (rust/crates/void-1.0.2.tar.gz) = 6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d
|
||||
SIZE (rust/crates/void-1.0.2.tar.gz) = 2356
|
||||
SHA256 (rust/crates/winapi-0.2.8.tar.gz) = 167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a
|
||||
SIZE (rust/crates/winapi-0.2.8.tar.gz) = 455145
|
||||
SHA256 (rust/crates/winapi-0.3.4.tar.gz) = 04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3
|
||||
SIZE (rust/crates/winapi-0.3.4.tar.gz) = 905247
|
||||
SHA256 (rust/crates/winapi-build-0.1.1.tar.gz) = 2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc
|
||||
SIZE (rust/crates/winapi-build-0.1.1.tar.gz) = 669
|
||||
SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
|
||||
SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) = 2918815
|
||||
SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
|
||||
SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) = 2947998
|
||||
SHA256 (tummychow-git-absorb-0.3.0_GH0.tar.gz) = 94d540a7febd37cd74e95e7cab71ee3514df020989208ce3fe83560699072730
|
||||
SIZE (tummychow-git-absorb-0.3.0_GH0.tar.gz) = 15726
|
9
devel/git-absorb/pkg-descr
Normal file
9
devel/git-absorb/pkg-descr
Normal file
@ -0,0 +1,9 @@
|
||||
This is a port of the hg absorb plugin to git.
|
||||
|
||||
git absorb will automatically identify which commits are safe to modify,
|
||||
and which indexed changes belong to each of those commits. It will then
|
||||
write fixup! commits for each of those changes. You can check its output
|
||||
manually if you don't trust it, and then fold the fixups into your
|
||||
feature branch with git's built-in autosquash functionality.
|
||||
|
||||
WWW: https://github.com/tummychow/git-absorb
|
Loading…
Reference in New Issue
Block a user