|
1 | 1 | # Git LFS Changelog
|
2 | 2 |
|
| 3 | +## 3.0.0 (24 Sep 2021) |
| 4 | + |
| 5 | +This release is a major new release and introduces several new features, such as |
| 6 | +a pure SSH-based protocol, packages for several new OS versions, support for |
| 7 | +ARM64 Windows, Git-compatible pattern matching, and locking multiple files on |
| 8 | +the command line, among other items. |
| 9 | + |
| 10 | +When connecting over SSH, the first attempt will be made to use |
| 11 | +`git-lfs-transfer`, the pure SSH protocol, and if it fails, Git LFS will fall |
| 12 | +back to the hybrid protocol using `git-lfs-authenticate`. Note that no major |
| 13 | +forges are known to support the pure SSH protocol at this time. |
| 14 | + |
| 15 | +Because it is a major release, we've made some backwards-incompatible changes. |
| 16 | +A (possibly incomplete) list of them is as follows: |
| 17 | + |
| 18 | +* NTLM support has been completely removed, since nobody volunteered to fix |
| 19 | + issues in it. Users are advised to use Kerberos or Basic authentication |
| 20 | + instead. |
| 21 | +* When using an SSH URL (that is, the syntax starting with `ssh://`), the |
| 22 | + leading slash is not stripped off when invoking `git-lfs-authenticate` or |
| 23 | + `git-lfs-transfer`. This is compatible with the behavior of Git when invoking |
| 24 | + commands over SSH. |
| 25 | +* `git lfs fsck` now additionally checks that pointers are canonical and that |
| 26 | + files that are supposed to be LFS files actually are. It also exits nonzero |
| 27 | + if any problem is found. |
| 28 | +* Pattern matching should be stricter and should either match the behavior of |
| 29 | + `.gitattributes` or `.gitignore`, as appropriate. Deviations from Git's |
| 30 | + behavior will henceforth be treated as bugs and fixed accordingly. |
| 31 | +* Git LFS will now write a Git LFS repository format version into the |
| 32 | + repository. This is designed to allow future extension with incompatible |
| 33 | + changes. Repositories without this version will be assumed to be version 0. |
| 34 | + Note that this is different from, but modeled on, Git's repository format |
| 35 | + version. |
| 36 | +* `git lfs lock` and `git lfs unlock` now handle multiple pathname arguments and |
| 37 | + the JSON format has changed to handle multiple responses. |
| 38 | +* The Go package name now contains a version number. This should have no effect |
| 39 | + on users because we don't provide a stable Go ABI. |
| 40 | +* Empty components in `PATH` are no longer treated as the current directory on |
| 41 | + Windows because unintentionally having such empty components is common and the |
| 42 | + behavior was surprising. |
| 43 | + |
| 44 | +We would like to extend a special thanks to the following open-source |
| 45 | +contributors: |
| 46 | + |
| 47 | +* @codykrieger for ensuring that we process includes correctly |
| 48 | +* @corngood for fixing a hang in prune |
| 49 | +* @dennisameling for adding support for Windows on ARM64 |
| 50 | +* @fh1ch for fixing our 429 handling |
| 51 | +* @geki-yaba for fixing problems with askpass on Cygwin |
| 52 | +* @gison93 for fixing a bug in our documentation |
| 53 | +* @jvimr for ensuring our Debian packages are built properly |
| 54 | +* @opohorel for ensuring our copyright notices were up to date |
| 55 | +* @rhansen for fixing systems where / is a repository |
| 56 | +* @sergiou87 for improving support for cross builds |
| 57 | +* @slonopotamus for improving our error handling |
| 58 | +* @stanhu for improving our handling of invalid OIDs |
| 59 | +* @Timmmm for improving our support of .lfsconfig |
| 60 | +* @tklauser for avoiding the need for cgo on macOS |
| 61 | + |
| 62 | +### Features |
| 63 | + |
| 64 | +* Advertise hash algorithm supported in batch request #4624 (@bk2204) |
| 65 | +* Bump package version to v3 #4611 (@bk2204) |
| 66 | +* Update OS versions #4610 (@bk2204) |
| 67 | +* Add support for Debian 11 #4592 (@bk2204) |
| 68 | +* Support for locking and unlocking multiple files #4604 (@bk2204) |
| 69 | +* Add support for Windows ARM64 #4586 (@dennisameling) |
| 70 | +* LFS repository format version #4552 (@bk2204) |
| 71 | +* Pure SSH-based protocol #4446 (@bk2204) |
| 72 | +* Make fsck able to check for invalid pointers #4525 (@bk2204) |
| 73 | +* Add --fixup option to migrate info command #4501 (@chrisd8088) |
| 74 | +* Allow reporting of LFS pointers separately in migrate info command #4436 (@chrisd8088) |
| 75 | +* Add config variables for default remotes #4469 (@bk2204) |
| 76 | +* Make lfshttp package builds more portable #4476 (@bk2204) |
| 77 | +* Mark skipdownloaderrors as safe #4468 (@Timmmm) |
| 78 | +* Make migrate commands default to preserving uncommitted changes #4454 (@chrisd8088) |
| 79 | +* Darwin ARM64 support #4437 (@bk2204) |
| 80 | +* tools: implement cloneFileSyscall on darwin without cgo #4387 (@tklauser) |
| 81 | +* prune: add options to be more aggressive about pruning #4368 (@bk2204) |
| 82 | + |
| 83 | +### Bugs |
| 84 | + |
| 85 | +* corrected debian 11 & 12 derived variants #4622 (@jvimr) |
| 86 | +* urlconfig: anchor regexp for key matching #4598 (@bk2204) |
| 87 | +* filepathfilter: always use Git-compatible pattern matching #4556 (@bk2204) |
| 88 | +* debian and rpm: Pass `--skip-repo` to `install` and `uninstall` #4594 (@rhansen) |
| 89 | +* Fix hang in prune #4557 (@corngood) |
| 90 | +* Disable ANSI color codes while log parsing and anchor diff regular expressions #4585 (@chrisd8088) |
| 91 | +* Fix 429 retry-after handling for LFS batch API endpoint #4573 (@fh1ch) |
| 92 | +* go.mod: bump gitobj to v2.0.2 #4555 (@bk2204) |
| 93 | +* Fix locking with multiple paths and absolute paths #4535 (@bk2204) |
| 94 | +* locking: avoid nil pointer dereference with invalid response #4509 (@bk2204) |
| 95 | +* migrate import: make --above affect only individual files #4512 (@bk2204) |
| 96 | +* fs: be a little less aggressive with cleanup #4490 (@bk2204) |
| 97 | +* Fix downloadFile in gitfilter_smudge.go to actually propagate all errors #4478 (@slonopotamus) |
| 98 | +* Translate Cygwin path patches for askpass helper and cert dir/file #4473 (@geki-yaba) |
| 99 | +* Avoid panic on SIGINT by skipping cleanup when config uninitialized #4463 (@chrisd8088) |
| 100 | +* Parse stash log entries parsimonously in prune command #4449 (@chrisd8088) |
| 101 | +* docs: note that -I and -X override configuration settings #4442 (@bk2204) |
| 102 | +* Make all checks of blobSizeCutoff consistent #4435 (@chrisd8088) |
| 103 | +* Fix up handling of the "migrate info" command's --top option #4434 (@chrisd8088) |
| 104 | +* Tighten LFS pointer regexp #4421 (@stanhu) |
| 105 | +* invoke git-config with --includes to ensure it always evaluates `include.*` directives #4420 (@codykrieger) |
| 106 | +* Canonicalize Windows paths like Git does #4418 (@bk2204) |
| 107 | +* lfsapi: don't warn about duplicate but identical aliases #4413 (@bk2204) |
| 108 | +* lfs: don't invoke diff drivers when pruning repositories #4407 (@bk2204) |
| 109 | +* Consider scheme of request URL, not proxy URL, when choosing proxy #4396 (@bk2204) |
| 110 | +* Makefile: allow make release to be run twice in a row #4344 (@bk2204) |
| 111 | +* Makefile: don't fail the second time macOS builds are built #4341 (@bk2204) |
| 112 | + |
| 113 | +### Misc |
| 114 | + |
| 115 | +* subprocess: don't treat empty PATH component as . on Windows #4603 (@bk2204) |
| 116 | +* Switch from which to command -v #4591 (@bk2204) |
| 117 | +* Bump Go to 1.17 #4584 (@dennisameling) |
| 118 | +* Add cautions about unstable Go API and fix GPG key link #4582 (@chrisd8088) |
| 119 | +* Update go.mod module path with explicit v2 #4575 (@chrisd8088) |
| 120 | +* Drop unused ClearTempStorage() transfer adapter method and tune stale comments #4554 (@chrisd8088) |
| 121 | +* README: improve steps for building from source #4527 (@bk2204) |
| 122 | +* Update license year #4513 (@opohorel) |
| 123 | +* docs/man: add note re post-import use of checkout #4504 (@chrisd8088) |
| 124 | +* Bump transitive dependencies #4502 (@bk2204) |
| 125 | +* script/packagecloud: update distros #4494 (@bk2204) |
| 126 | +* Use host architecture and OS when running `go generate` #4492 (@sergiou87) |
| 127 | +* Bump go-spnego to the latest version #4482 (@bk2204) |
| 128 | +* Update git-lfs-migrate man page and add description section #4458 (@chrisd8088) |
| 129 | +* update x/text and dependencies #4455 (@opohorel) |
| 130 | +* Use blobSizeCutoff in clean pointer buffer length check #4433 (@chrisd8088) |
| 131 | +* tools: unset XDG_CONFIG_HOME for filetools test #4432 (@chrisd8088) |
| 132 | +* vendor,go.{mod,sum}: update x/net and dependencies #4398 (@chrisd8088) |
| 133 | +* Remove NTLM #4384 (@bk2204) |
| 134 | +* gitobj 2.0.1 #4348 (@bk2204) |
| 135 | +* Fix numbered list in git lfs examples #4347 (@gison93) |
| 136 | +* Add test for download gzip transport compression #4345 (@bk2204) |
| 137 | + |
| 138 | +## 2.13.3 (26 Mar 2021) |
| 139 | + |
| 140 | +This release fixes two bugs that caused `git lfs prune` to hang, updates some |
| 141 | +dependencies to versions which lack a security issue (which did not affect Git |
| 142 | +LFS), and adds support for ARM64 builds on macOS. |
| 143 | + |
| 144 | +### Bugs |
| 145 | + |
| 146 | +* lfs: don't invoke diff drivers when pruning repositories #4407 (@bk2204) |
| 147 | +* Parse stash log entries parsimonously in prune command #4449 (@chrisd8088) |
| 148 | + |
| 149 | +### Misc |
| 150 | + |
| 151 | +* Darwin ARM64 support #4437 (@bk2204) |
| 152 | +* vendor,go.{mod,sum}: update x/net and dependencies #4398 (@chrisd8088) |
| 153 | + |
| 154 | +## 2.13.2 (13 Jan 2021) |
| 155 | + |
| 156 | +This release introduces a security fix for Windows systems, which has been |
| 157 | +assigned CVE-2021-21237. |
| 158 | + |
| 159 | +On Windows, if Git LFS operates on a malicious repository with a git.bat or |
| 160 | +git.exe file in the current directory, that program is executed, permitting the |
| 161 | +attacker to execute arbitrary code. This security problem does not affect Unix |
| 162 | +systems. This is the same issue as CVE-2020-27955, but the fix for that issue |
| 163 | +was incomplete and certain options can still cause the problem to occur. |
| 164 | + |
| 165 | +This occurs because on Windows, Go includes (and prefers) the current directory |
| 166 | +when the name of a command run does not contain a directory separator. This has |
| 167 | +been solved by always using PATH to pre-resolve paths before handing them to Go. |
| 168 | + |
| 169 | +We would like to extend a special thanks to the following open-source |
| 170 | +contributors: |
| 171 | + |
| 172 | +* @Ry0taK for reporting this to us responsibly |
| 173 | + |
| 174 | +### Bugs |
| 175 | + |
| 176 | +* Use subprocess for invoking all commands (@bk2204) |
| 177 | + |
| 178 | +## 2.13.1 (11 Dec 2020) |
| 179 | + |
| 180 | +This release fixes a bug in our build tooling that prevents our release process |
| 181 | +from working properly. This release is otherwise identical to 2.13.0. |
| 182 | + |
| 183 | +### Misc |
| 184 | + |
| 185 | +* Makefile: don't fail the second time macOS builds are built #4341 (@bk2204) |
| 186 | + |
3 | 187 | ## 2.13.0 (10 Dec 2020)
|
4 | 188 |
|
5 | 189 | This release introduces several new features, such as the `--above` option to
|
|
0 commit comments