-
Notifications
You must be signed in to change notification settings - Fork 757
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
git: worktree, Fix file reported as Untracked
while it is committed
#1023
Conversation
…lding it empty. Fixes go-git#119
worktree_status.go
Outdated
for len(nodes) > 0 { | ||
var node noder.Noder | ||
node, nodes = nodes[0], nodes[1:] | ||
if node.IsDir() { | ||
children, err := node.Children() | ||
if err != nil { | ||
return nil, err | ||
} | ||
nodes = append(nodes, children...) | ||
continue | ||
} | ||
fs := status.File(node.Name()) | ||
fs.Worktree = Unmodified | ||
fs.Staging = Unmodified | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This may have a performance impact, as we need to go through all nodes while growing nodes
as part of that process.
What if instead, we amended File(path string)
to validate the returning s[path] and force a default value of Unmodified
if no value was currently set?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, I didn't understand what you proposed. Can you explain it a little more?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The issue here is that going through the entire worktree to create an initial state as unmodified can be quite costly - specially on large repositories. I tested this on a mid-sized repository and noticed that with these changes the .Status()
call took ~30% longer than before.
My initial suggestion was to amend Status
so that the File
func would effectively do the same thing as the pre-init you created. However, this won't really work in some cases, as when there are no changes the Status
returns an empty list. Besides, the existing logic is incorrect as whatever file we pass on to status.File(path)
it returns Untracked
even if that file does not exist across both the staging and the worktree.
In order to fix this, while keeping backwards compatibility and not introducing a performance regression, I think we have a few options:
- Introduce a new
Worktree.StatusWithOptions()
func which returns a new type that is more flexible and calculates the status of a given file on demand. I suspect this will need to have access to the worktree fs, so that it can handle the scenario I mentioned above, without needing to front-load the entire worktree. It may also need access to the exclusion rules. - Introduce a new
Worktree.StatusWithOptions()
func which returns a new type that is more flexible, but simply adds an option so users can opt-in to the front-loading this PR currently introduces. - Introduce a new
Worktree.FileStatus()
func which calls.Status
and ensure the given file is correctly loaded to the Status map.
What are your thoughts on the above?
The fix for go-git#119 improves the Worktree.Status() behaviour by preloading all existing files and setting their status to unmodified. Which makes it more reliable when doing per file status verification, however breaks backwards compatibility in two ways: - Increased execution time and space: the preloading can be slow in very large repositories and will increase memory usage when representing the state. - Behaviour: the previous behaviour returned a map with a small subset of entries. The new behaviour will include a new entry for every file within the repository. This commit introduces reverts the change in the default behaviour, and introduces StatusWithOptions so that users can opt-in the new option. Signed-off-by: Paulo Gomes <pjbgf@linux.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@rodrigocam thank you for working on this. I made some of the API changes we discussed before for improved extensibility, otherwise LGTM.
git: worktree, Fix file reported as `Untracked` while it is committed
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) | require | minor | `v5.11.0` -> `v5.13.1` | --- ### Release Notes <details> <summary>go-git/go-git (github.com/go-git/go-git/v5)</summary> ### [`v5.13.1`](https://github.com/go-git/go-git/releases/tag/v5.13.1) [Compare Source](go-git/go-git@v5.13.0...v5.13.1) #### What's Changed - build: bump github.com/go-git/go-billy/v5 from 5.6.0 to 5.6.1 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1327 - build: bump github.com/elazarl/goproxy from 1.2.1 to 1.2.2 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1329 - build: bump github.com/elazarl/goproxy from 1.2.2 to 1.2.3 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1340 - Revert "plumbing: transport/ssh, Add support for SSH [@​cert-authority](https://github.com/cert-authority)." by [@​pjbgf](https://github.com/pjbgf) in [#​1346](go-git/go-git#1346) **Full Changelog**: go-git/go-git@v5.13.0...v5.13.1 ### [`v5.13.0`](https://github.com/go-git/go-git/releases/tag/v5.13.0) [Compare Source](go-git/go-git@v5.12.0...v5.13.0) #### What's Changed - build: bump github.com/go-git/go-git/v5 from 5.11.0 to 5.12.0 in /cli/go-git by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1065 - build: bump golang.org/x/net from 0.22.0 to 0.23.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1068 - build: bump golang.org/x/net from 0.23.0 to 0.24.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1071 - Properly support skipping of non-mandatory extensions by [@​codablock](https://github.com/codablock) in go-git/go-git#1066 - git: Refine some codes in test and non-test. by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1077 - plumbing: protocol/packp, client-side filter capability support by [@​edigaryev](https://github.com/edigaryev) in go-git/go-git#1000 - build: bump golang.org/x/net from 0.22.0 to 0.23.0 in /cli/go-git by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1078 - plumbing: fix sideband demux on flush by [@​aymanbagabas](https://github.com/aymanbagabas) in go-git/go-git#1084 - storage: dotgit, head reference usually comes first by [@​aymanbagabas](https://github.com/aymanbagabas) in go-git/go-git#1085 - build: bump golang.org/x/text from 0.14.0 to 0.15.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1091 - build: bump golang.org/x/crypto from 0.22.0 to 0.23.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1094 - build: bump golang.org/x/net from 0.24.0 to 0.25.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1093 - git: Added an example for Repository.Branches by [@​johnmatthiggins](https://github.com/johnmatthiggins) in go-git/go-git#1088 - git: worktree_commit, Modify checking empty commit. Fixes [#​723](go-git/go-git#723) by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1050 - plumbing: transport/http, Wrap http errors to return reason. Fixes [#​1097](go-git/go-git#1097) by [@​ggambetti](https://github.com/ggambetti) in go-git/go-git#1100 - build: bump golang.org/x/sys from 0.20.0 to 0.21.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1106 - build: bump golang.org/x/text from 0.15.0 to 0.16.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1107 - Bumps Go versions and go-billy by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1056 - \_examples: Fixed a dead link COMPATIBILITY.md by [@​gecko655](https://github.com/gecko655) in go-git/go-git#1109 - build: bump github.com/jessevdk/go-flags from 1.5.0 to 1.6.1 in /cli/go-git by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1115 - build: bump github.com/elazarl/goproxy from v0.0.0-20230808193330-2592e75ae04a to v0.0.0-20240618083138-03be62527ccb by [@​hbelmiro](https://github.com/hbelmiro) in go-git/go-git#1124 - build: bump golang.org/x/net from 0.25.0 to 0.26.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1104 - Add option approximating `git clean -x` flag. by [@​msuozzo](https://github.com/msuozzo) in go-git/go-git#995 - Revert "Add option approximating `git clean -x` flag." by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1129 - Fix reference updated concurrently error for the filesystem storer by [@​Javier-varez](https://github.com/Javier-varez) in go-git/go-git#1116 - build: bump golang.org/x/net from 0.26.0 to 0.27.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1134 - utils: merkletrie, Align error message with upstream by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1142 - plumbing: transport/file, Change paths to absolute by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1141 - plumbing: gitignore, Fix loading of ignored .gitignore files. by [@​Achilleshiel](https://github.com/Achilleshiel) in go-git/go-git#1114 - build: bump github.com/skeema/knownhosts from 1.2.2 to 1.3.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1147 - plumbing: transport/ssh, Add support for SSH [@​cert-authority](https://github.com/cert-authority). by [@​Javier-varez](https://github.com/Javier-varez) in go-git/go-git#1157 - build: run example tests during CI workflow by [@​crazybolillo](https://github.com/crazybolillo) in go-git/go-git#1030 - storage: filesystem, Fix object cache not working due to uninitialised objects being put into cache by [@​SatelliteMind](https://github.com/SatelliteMind) in go-git/go-git#1138 - git: Fix fetching missing commits by [@​AriehSchneier](https://github.com/AriehSchneier) in go-git/go-git#1032 - plumbing: format/packfile, remove duplicate checks in findMatch() by [@​edigaryev](https://github.com/edigaryev) in go-git/go-git#1152 - git: worktree, Fix file reported as `Untracked` while it is committed by [@​rodrigocam](https://github.com/rodrigocam) in go-git/go-git#1023 - build: bump golang.org/x/sys from 0.22.0 to 0.23.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1160 - plumbing: filemode, Remove check for setting size of .git/index file by [@​nicholasSUSE](https://github.com/nicholasSUSE) in go-git/go-git#1159 - build: bump golang.org/x/net from 0.27.0 to 0.28.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1163 - Fix some lint warning and increase stalebot to 180 days by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1128 - adjust path extracted from file: url on Windows by [@​tomqwpl](https://github.com/tomqwpl) in go-git/go-git#416 - build: bump golang.org/x/sys from 0.23.0 to 0.24.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1164 - Add RestoreStaged to Worktree that mimics the behaviour of git restore --staged <file>... by [@​ben-tbotlabs](https://github.com/ben-tbotlabs) in go-git/go-git#493 - plumbing: signature, support the same x509 signature formats as git by [@​yoavamit](https://github.com/yoavamit) in go-git/go-git#1169 - fix: allow discovery of non bare repos in fsLoader by [@​jakobmoellerdev](https://github.com/jakobmoellerdev) in go-git/go-git#1170 - build: bump golang.org/x/sys from 0.24.0 to 0.25.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1178 - build: bump golang.org/x/text from 0.17.0 to 0.18.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1179 - build: bump golang.org/x/net from 0.28.0 to 0.29.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1184 - Consume push URLs when they are provided by [@​mcepl](https://github.com/mcepl) in go-git/go-git#1191 - \*: use gocheck's MkDir instead of TempDir for tests. Fixes [#​807](go-git/go-git#807) by [@​uragirii](https://github.com/uragirii) in go-git/go-git#1194 - build: bump golang.org/x/net from 0.29.0 to 0.30.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1200 - worktree: .git/index not correctly generated when running on Windows by [@​BeChris](https://github.com/BeChris) in go-git/go-git#1198 - git: worktree, Fix sparse reset. Fixes [#​90](go-git/go-git#90) by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1101 - git: worktree, Pass context on updateSubmodules. Fixes [#​1098](go-git/go-git#1098) by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1154 - build: bump github.com/go-git/go-billy/v5 from 5.5.1-0.20240427054813-8453aa90c6ec to 5.6.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1211 - Update contributing guidelines by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1217 - build: bump github.com/ProtonMail/go-crypto from 1.0.0 to 1.1.1 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1222 - build: bump golang.org/x/sys from 0.26.0 to 0.27.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1223 - build: bump golang.org/x/crypto from 0.28.0 to 0.29.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1221 - build: bump github.com/ProtonMail/go-crypto from 1.1.1 to 1.1.2 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1226 - build: bump github.com/stretchr/testify from 1.9.0 to 1.10.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1232 - build: bump github.com/ProtonMail/go-crypto from 1.1.2 to 1.1.3 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1231 - build: General improvements around fuzzing by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1229 - build: bump golang.org/x/net from 0.30.0 to 0.32.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1241 - build: group dependabot updates for golang.org by [@​AriehSchneier](https://github.com/AriehSchneier) in go-git/go-git#1243 - build: bump github/codeql-action from 2.22.11 to 3.27.6 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1244 - build: bump golang.org/x/crypto from 0.21.0 to 0.31.0 in /cli/go-git by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1246 - build: bump golang.org/x/crypto from 0.30.0 to 0.31.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1247 - build: bump github.com/gliderlabs/ssh from 0.3.7 to 0.3.8 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1248 - add comment preventing people from creating invalid trees by [@​petar](https://github.com/petar) in go-git/go-git#732 - build: bump github/codeql-action from 3.27.6 to 3.27.9 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1250 - plumbing: Properly encode index version 4 by [@​BeChris](https://github.com/BeChris) in go-git/go-git#1251 - Fix typos by [@​deining](https://github.com/deining) in go-git/go-git#1148 - Fix reset files in subfolders by [@​linglo](https://github.com/linglo) in go-git/go-git#1177 - git: update switch cases by [@​hezhizhen](https://github.com/hezhizhen) in go-git/go-git#1182 - build: bump golang.org/x/net from 0.32.0 to 0.33.0 in the golang-org group by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1256 - fix(1212): Fix invalid reference name error while cloning branches containing /- by [@​varmakarthik12](https://github.com/varmakarthik12) in go-git/go-git#1257 - pktline : accept upercase hexadecimal value as pktline length information by [@​BeChris](https://github.com/BeChris) in go-git/go-git#1220 - build: bump github/codeql-action from 3.27.9 to 3.28.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1260 - build: bump github.com/elazarl/goproxy from 0.0.0-20240618083138-03be62527ccb to 1.2.1 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1262 - git: worktree_commit, sanitize author and commiter name and email before creating the commit object. Fixes [#​680](go-git/go-git#680) by [@​BeChris](https://github.com/BeChris) in go-git/go-git#1261 #### New Contributors - [@​johnmatthiggins](https://github.com/johnmatthiggins) made their first contribution in go-git/go-git#1088 - [@​ggambetti](https://github.com/ggambetti) made their first contribution in go-git/go-git#1100 - [@​gecko655](https://github.com/gecko655) made their first contribution in go-git/go-git#1109 - [@​hbelmiro](https://github.com/hbelmiro) made their first contribution in go-git/go-git#1124 - [@​msuozzo](https://github.com/msuozzo) made their first contribution in go-git/go-git#995 - [@​Javier-varez](https://github.com/Javier-varez) made their first contribution in go-git/go-git#1116 - [@​Achilleshiel](https://github.com/Achilleshiel) made their first contribution in go-git/go-git#1114 - [@​crazybolillo](https://github.com/crazybolillo) made their first contribution in go-git/go-git#1030 - [@​SatelliteMind](https://github.com/SatelliteMind) made their first contribution in go-git/go-git#1138 - [@​rodrigocam](https://github.com/rodrigocam) made their first contribution in go-git/go-git#1023 - [@​nicholasSUSE](https://github.com/nicholasSUSE) made their first contribution in go-git/go-git#1159 - [@​tomqwpl](https://github.com/tomqwpl) made their first contribution in go-git/go-git#416 - [@​ben-tbotlabs](https://github.com/ben-tbotlabs) made their first contribution in go-git/go-git#493 - [@​yoavamit](https://github.com/yoavamit) made their first contribution in go-git/go-git#1169 - [@​uragirii](https://github.com/uragirii) made their first contribution in go-git/go-git#1194 - [@​petar](https://github.com/petar) made their first contribution in go-git/go-git#732 - [@​deining](https://github.com/deining) made their first contribution in go-git/go-git#1148 - [@​linglo](https://github.com/linglo) made their first contribution in go-git/go-git#1177 - [@​varmakarthik12](https://github.com/varmakarthik12) made their first contribution in go-git/go-git#1257 **Full Changelog**: go-git/go-git@v5.12.0...v5.13.0 ### [`v5.12.0`](https://github.com/go-git/go-git/releases/tag/v5.12.0) [Compare Source](go-git/go-git@v5.11.0...v5.12.0) #### What's Changed - git: Worktree.AddWithOptions: add skipStatus option when providing a specific path by [@​moranCohen26](https://github.com/moranCohen26) in go-git/go-git#994 - git: Signer: fix usage of crypto.Signer interface by [@​wlynch](https://github.com/wlynch) in go-git/go-git#1029 - git: Remote, fetch, adds the prune option. by [@​juliens](https://github.com/juliens) in go-git/go-git#366 - git: Add crypto.Signer option to CommitOptions. by [@​wlynch](https://github.com/wlynch) in go-git/go-git#996 - git: Worktree checkout tag hash id ([#​959](go-git/go-git#959)) by [@​aymanbagabas](https://github.com/aymanbagabas) in go-git/go-git#966 - git: Worktree, Don't panic on empty or root path when checking if it is valid by [@​tim775](https://github.com/tim775) in go-git/go-git#1042 - git: Add commit validation for Reset by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1048 - git: worktree_commit, Fix amend commit to apply changes. Fixes [#​1024](go-git/go-git#1024) by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1045 - git: Implement Merge function with initial `FastForwardMerge` support by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1044 - plumbing: object, Make first commit visible on logs filtered with filename. Fixes [#​191](go-git/go-git#191) by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1036 - plumbing: no panic in printStats function. Fixes [#​177](go-git/go-git#177) by [@​nodivbyzero](https://github.com/nodivbyzero) in go-git/go-git#971 - plumbing: object, Optimize logging with file. by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1046 - plumbing: object, check legitimacy in (\*Tree).Encode by [@​niukuo](https://github.com/niukuo) in go-git/go-git#967 - plumbing: format/gitattributes, close file in ReadAttributesFile by [@​prskr](https://github.com/prskr) in go-git/go-git#1018 - plumbing: check setAuth error. Fixes [#​185](go-git/go-git#185) by [@​nodivbyzero](https://github.com/nodivbyzero) in go-git/go-git#969 - plumbing: object, fix variable defaultUtf8CommitMessageEncoding name spell error by [@​Jerry-yz](https://github.com/Jerry-yz) in go-git/go-git#987 - utils: merkletrie, calculate filesystem node's hash lazily. by [@​candid82](https://github.com/candid82) in go-git/go-git#825 - utils: update comment in node.go's Hash() by [@​codablock](https://github.com/codablock) in go-git/go-git#992 - \_example: fix 404 link and added ssh-agent clone link by [@​grinish21](https://github.com/grinish21) in go-git/go-git#1022 - \_example: checkout-branch example by [@​dlambda](https://github.com/dlambda) in go-git/go-git#446 - \_example: example for git clone using ssh-agent by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#998 #### New Contributors - [@​candid82](https://github.com/candid82) made their first contribution in go-git/go-git#825 - [@​codablock](https://github.com/codablock) made their first contribution in go-git/go-git#992 - [@​Jerry-yz](https://github.com/Jerry-yz) made their first contribution in go-git/go-git#987 - [@​wlynch](https://github.com/wlynch) made their first contribution in go-git/go-git#996 - [@​moranCohen26](https://github.com/moranCohen26) made their first contribution in go-git/go-git#994 - [@​grinish21](https://github.com/grinish21) made their first contribution in go-git/go-git#1022 - [@​prskr](https://github.com/prskr) made their first contribution in go-git/go-git#1018 - [@​dlambda](https://github.com/dlambda) made their first contribution in go-git/go-git#446 - [@​juliens](https://github.com/juliens) made their first contribution in go-git/go-git#366 - [@​onee-only](https://github.com/onee-only) made their first contribution in go-git/go-git#1036 - [@​tim775](https://github.com/tim775) made their first contribution in go-git/go-git#1042 - [@​niukuo](https://github.com/niukuo) made their first contribution in go-git/go-git#967 - [@​avoidalone](https://github.com/avoidalone) made their first contribution in go-git/go-git#1047 **Full Changelog**: go-git/go-git@v5.11.0...v5.12.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45Mi4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTIuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19--> Co-authored-by: Earl Warren <contact@earl-warren.org> Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6495 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org> Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
…(#6496) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) | require | minor | `v5.11.0` -> `v5.13.1` | --- ### Release Notes <details> <summary>go-git/go-git (github.com/go-git/go-git/v5)</summary> ### [`v5.13.1`](https://github.com/go-git/go-git/releases/tag/v5.13.1) [Compare Source](go-git/go-git@v5.13.0...v5.13.1) #### What's Changed - build: bump github.com/go-git/go-billy/v5 from 5.6.0 to 5.6.1 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1327 - build: bump github.com/elazarl/goproxy from 1.2.1 to 1.2.2 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1329 - build: bump github.com/elazarl/goproxy from 1.2.2 to 1.2.3 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1340 - Revert "plumbing: transport/ssh, Add support for SSH [@​cert-authority](https://github.com/cert-authority)." by [@​pjbgf](https://github.com/pjbgf) in [#​1346](go-git/go-git#1346) **Full Changelog**: go-git/go-git@v5.13.0...v5.13.1 ### [`v5.13.0`](https://github.com/go-git/go-git/releases/tag/v5.13.0) [Compare Source](go-git/go-git@v5.12.0...v5.13.0) #### What's Changed - build: bump github.com/go-git/go-git/v5 from 5.11.0 to 5.12.0 in /cli/go-git by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1065 - build: bump golang.org/x/net from 0.22.0 to 0.23.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1068 - build: bump golang.org/x/net from 0.23.0 to 0.24.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1071 - Properly support skipping of non-mandatory extensions by [@​codablock](https://github.com/codablock) in go-git/go-git#1066 - git: Refine some codes in test and non-test. by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1077 - plumbing: protocol/packp, client-side filter capability support by [@​edigaryev](https://github.com/edigaryev) in go-git/go-git#1000 - build: bump golang.org/x/net from 0.22.0 to 0.23.0 in /cli/go-git by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1078 - plumbing: fix sideband demux on flush by [@​aymanbagabas](https://github.com/aymanbagabas) in go-git/go-git#1084 - storage: dotgit, head reference usually comes first by [@​aymanbagabas](https://github.com/aymanbagabas) in go-git/go-git#1085 - build: bump golang.org/x/text from 0.14.0 to 0.15.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1091 - build: bump golang.org/x/crypto from 0.22.0 to 0.23.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1094 - build: bump golang.org/x/net from 0.24.0 to 0.25.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1093 - git: Added an example for Repository.Branches by [@​johnmatthiggins](https://github.com/johnmatthiggins) in go-git/go-git#1088 - git: worktree_commit, Modify checking empty commit. Fixes [#​723](go-git/go-git#723) by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1050 - plumbing: transport/http, Wrap http errors to return reason. Fixes [#​1097](go-git/go-git#1097) by [@​ggambetti](https://github.com/ggambetti) in go-git/go-git#1100 - build: bump golang.org/x/sys from 0.20.0 to 0.21.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1106 - build: bump golang.org/x/text from 0.15.0 to 0.16.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1107 - Bumps Go versions and go-billy by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1056 - \_examples: Fixed a dead link COMPATIBILITY.md by [@​gecko655](https://github.com/gecko655) in go-git/go-git#1109 - build: bump github.com/jessevdk/go-flags from 1.5.0 to 1.6.1 in /cli/go-git by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1115 - build: bump github.com/elazarl/goproxy from v0.0.0-20230808193330-2592e75ae04a to v0.0.0-20240618083138-03be62527ccb by [@​hbelmiro](https://github.com/hbelmiro) in go-git/go-git#1124 - build: bump golang.org/x/net from 0.25.0 to 0.26.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1104 - Add option approximating `git clean -x` flag. by [@​msuozzo](https://github.com/msuozzo) in go-git/go-git#995 - Revert "Add option approximating `git clean -x` flag." by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1129 - Fix reference updated concurrently error for the filesystem storer by [@​Javier-varez](https://github.com/Javier-varez) in go-git/go-git#1116 - build: bump golang.org/x/net from 0.26.0 to 0.27.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1134 - utils: merkletrie, Align error message with upstream by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1142 - plumbing: transport/file, Change paths to absolute by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1141 - plumbing: gitignore, Fix loading of ignored .gitignore files. by [@​Achilleshiel](https://github.com/Achilleshiel) in go-git/go-git#1114 - build: bump github.com/skeema/knownhosts from 1.2.2 to 1.3.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1147 - plumbing: transport/ssh, Add support for SSH [@​cert-authority](https://github.com/cert-authority). by [@​Javier-varez](https://github.com/Javier-varez) in go-git/go-git#1157 - build: run example tests during CI workflow by [@​crazybolillo](https://github.com/crazybolillo) in go-git/go-git#1030 - storage: filesystem, Fix object cache not working due to uninitialised objects being put into cache by [@​SatelliteMind](https://github.com/SatelliteMind) in go-git/go-git#1138 - git: Fix fetching missing commits by [@​AriehSchneier](https://github.com/AriehSchneier) in go-git/go-git#1032 - plumbing: format/packfile, remove duplicate checks in findMatch() by [@​edigaryev](https://github.com/edigaryev) in go-git/go-git#1152 - git: worktree, Fix file reported as `Untracked` while it is committed by [@​rodrigocam](https://github.com/rodrigocam) in go-git/go-git#1023 - build: bump golang.org/x/sys from 0.22.0 to 0.23.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1160 - plumbing: filemode, Remove check for setting size of .git/index file by [@​nicholasSUSE](https://github.com/nicholasSUSE) in go-git/go-git#1159 - build: bump golang.org/x/net from 0.27.0 to 0.28.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1163 - Fix some lint warning and increase stalebot to 180 days by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1128 - adjust path extracted from file: url on Windows by [@​tomqwpl](https://github.com/tomqwpl) in go-git/go-git#416 - build: bump golang.org/x/sys from 0.23.0 to 0.24.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1164 - Add RestoreStaged to Worktree that mimics the behaviour of git restore --staged <file>... by [@​ben-tbotlabs](https://github.com/ben-tbotlabs) in go-git/go-git#493 - plumbing: signature, support the same x509 signature formats as git by [@​yoavamit](https://github.com/yoavamit) in go-git/go-git#1169 - fix: allow discovery of non bare repos in fsLoader by [@​jakobmoellerdev](https://github.com/jakobmoellerdev) in go-git/go-git#1170 - build: bump golang.org/x/sys from 0.24.0 to 0.25.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1178 - build: bump golang.org/x/text from 0.17.0 to 0.18.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1179 - build: bump golang.org/x/net from 0.28.0 to 0.29.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1184 - Consume push URLs when they are provided by [@​mcepl](https://github.com/mcepl) in go-git/go-git#1191 - \*: use gocheck's MkDir instead of TempDir for tests. Fixes [#​807](go-git/go-git#807) by [@​uragirii](https://github.com/uragirii) in go-git/go-git#1194 - build: bump golang.org/x/net from 0.29.0 to 0.30.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1200 - worktree: .git/index not correctly generated when running on Windows by [@​BeChris](https://github.com/BeChris) in go-git/go-git#1198 - git: worktree, Fix sparse reset. Fixes [#​90](go-git/go-git#90) by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1101 - git: worktree, Pass context on updateSubmodules. Fixes [#​1098](go-git/go-git#1098) by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1154 - build: bump github.com/go-git/go-billy/v5 from 5.5.1-0.20240427054813-8453aa90c6ec to 5.6.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1211 - Update contributing guidelines by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1217 - build: bump github.com/ProtonMail/go-crypto from 1.0.0 to 1.1.1 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1222 - build: bump golang.org/x/sys from 0.26.0 to 0.27.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1223 - build: bump golang.org/x/crypto from 0.28.0 to 0.29.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1221 - build: bump github.com/ProtonMail/go-crypto from 1.1.1 to 1.1.2 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1226 - build: bump github.com/stretchr/testify from 1.9.0 to 1.10.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1232 - build: bump github.com/ProtonMail/go-crypto from 1.1.2 to 1.1.3 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1231 - build: General improvements around fuzzing by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1229 - build: bump golang.org/x/net from 0.30.0 to 0.32.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1241 - build: group dependabot updates for golang.org by [@​AriehSchneier](https://github.com/AriehSchneier) in go-git/go-git#1243 - build: bump github/codeql-action from 2.22.11 to 3.27.6 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1244 - build: bump golang.org/x/crypto from 0.21.0 to 0.31.0 in /cli/go-git by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1246 - build: bump golang.org/x/crypto from 0.30.0 to 0.31.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1247 - build: bump github.com/gliderlabs/ssh from 0.3.7 to 0.3.8 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1248 - add comment preventing people from creating invalid trees by [@​petar](https://github.com/petar) in go-git/go-git#732 - build: bump github/codeql-action from 3.27.6 to 3.27.9 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1250 - plumbing: Properly encode index version 4 by [@​BeChris](https://github.com/BeChris) in go-git/go-git#1251 - Fix typos by [@​deining](https://github.com/deining) in go-git/go-git#1148 - Fix reset files in subfolders by [@​linglo](https://github.com/linglo) in go-git/go-git#1177 - git: update switch cases by [@​hezhizhen](https://github.com/hezhizhen) in go-git/go-git#1182 - build: bump golang.org/x/net from 0.32.0 to 0.33.0 in the golang-org group by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1256 - fix(1212): Fix invalid reference name error while cloning branches containing /- by [@​varmakarthik12](https://github.com/varmakarthik12) in go-git/go-git#1257 - pktline : accept upercase hexadecimal value as pktline length information by [@​BeChris](https://github.com/BeChris) in go-git/go-git#1220 - build: bump github/codeql-action from 3.27.9 to 3.28.0 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1260 - build: bump github.com/elazarl/goproxy from 0.0.0-20240618083138-03be62527ccb to 1.2.1 by [@​dependabot](https://github.com/dependabot) in go-git/go-git#1262 - git: worktree_commit, sanitize author and commiter name and email before creating the commit object. Fixes [#​680](go-git/go-git#680) by [@​BeChris](https://github.com/BeChris) in go-git/go-git#1261 #### New Contributors - [@​johnmatthiggins](https://github.com/johnmatthiggins) made their first contribution in go-git/go-git#1088 - [@​ggambetti](https://github.com/ggambetti) made their first contribution in go-git/go-git#1100 - [@​gecko655](https://github.com/gecko655) made their first contribution in go-git/go-git#1109 - [@​hbelmiro](https://github.com/hbelmiro) made their first contribution in go-git/go-git#1124 - [@​msuozzo](https://github.com/msuozzo) made their first contribution in go-git/go-git#995 - [@​Javier-varez](https://github.com/Javier-varez) made their first contribution in go-git/go-git#1116 - [@​Achilleshiel](https://github.com/Achilleshiel) made their first contribution in go-git/go-git#1114 - [@​crazybolillo](https://github.com/crazybolillo) made their first contribution in go-git/go-git#1030 - [@​SatelliteMind](https://github.com/SatelliteMind) made their first contribution in go-git/go-git#1138 - [@​rodrigocam](https://github.com/rodrigocam) made their first contribution in go-git/go-git#1023 - [@​nicholasSUSE](https://github.com/nicholasSUSE) made their first contribution in go-git/go-git#1159 - [@​tomqwpl](https://github.com/tomqwpl) made their first contribution in go-git/go-git#416 - [@​ben-tbotlabs](https://github.com/ben-tbotlabs) made their first contribution in go-git/go-git#493 - [@​yoavamit](https://github.com/yoavamit) made their first contribution in go-git/go-git#1169 - [@​uragirii](https://github.com/uragirii) made their first contribution in go-git/go-git#1194 - [@​petar](https://github.com/petar) made their first contribution in go-git/go-git#732 - [@​deining](https://github.com/deining) made their first contribution in go-git/go-git#1148 - [@​linglo](https://github.com/linglo) made their first contribution in go-git/go-git#1177 - [@​varmakarthik12](https://github.com/varmakarthik12) made their first contribution in go-git/go-git#1257 **Full Changelog**: go-git/go-git@v5.12.0...v5.13.0 ### [`v5.12.0`](https://github.com/go-git/go-git/releases/tag/v5.12.0) [Compare Source](go-git/go-git@v5.11.0...v5.12.0) #### What's Changed - git: Worktree.AddWithOptions: add skipStatus option when providing a specific path by [@​moranCohen26](https://github.com/moranCohen26) in go-git/go-git#994 - git: Signer: fix usage of crypto.Signer interface by [@​wlynch](https://github.com/wlynch) in go-git/go-git#1029 - git: Remote, fetch, adds the prune option. by [@​juliens](https://github.com/juliens) in go-git/go-git#366 - git: Add crypto.Signer option to CommitOptions. by [@​wlynch](https://github.com/wlynch) in go-git/go-git#996 - git: Worktree checkout tag hash id ([#​959](go-git/go-git#959)) by [@​aymanbagabas](https://github.com/aymanbagabas) in go-git/go-git#966 - git: Worktree, Don't panic on empty or root path when checking if it is valid by [@​tim775](https://github.com/tim775) in go-git/go-git#1042 - git: Add commit validation for Reset by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1048 - git: worktree_commit, Fix amend commit to apply changes. Fixes [#​1024](go-git/go-git#1024) by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1045 - git: Implement Merge function with initial `FastForwardMerge` support by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#1044 - plumbing: object, Make first commit visible on logs filtered with filename. Fixes [#​191](go-git/go-git#191) by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1036 - plumbing: no panic in printStats function. Fixes [#​177](go-git/go-git#177) by [@​nodivbyzero](https://github.com/nodivbyzero) in go-git/go-git#971 - plumbing: object, Optimize logging with file. by [@​onee-only](https://github.com/onee-only) in go-git/go-git#1046 - plumbing: object, check legitimacy in (\*Tree).Encode by [@​niukuo](https://github.com/niukuo) in go-git/go-git#967 - plumbing: format/gitattributes, close file in ReadAttributesFile by [@​prskr](https://github.com/prskr) in go-git/go-git#1018 - plumbing: check setAuth error. Fixes [#​185](go-git/go-git#185) by [@​nodivbyzero](https://github.com/nodivbyzero) in go-git/go-git#969 - plumbing: object, fix variable defaultUtf8CommitMessageEncoding name spell error by [@​Jerry-yz](https://github.com/Jerry-yz) in go-git/go-git#987 - utils: merkletrie, calculate filesystem node's hash lazily. by [@​candid82](https://github.com/candid82) in go-git/go-git#825 - utils: update comment in node.go's Hash() by [@​codablock](https://github.com/codablock) in go-git/go-git#992 - \_example: fix 404 link and added ssh-agent clone link by [@​grinish21](https://github.com/grinish21) in go-git/go-git#1022 - \_example: checkout-branch example by [@​dlambda](https://github.com/dlambda) in go-git/go-git#446 - \_example: example for git clone using ssh-agent by [@​pjbgf](https://github.com/pjbgf) in go-git/go-git#998 #### New Contributors - [@​candid82](https://github.com/candid82) made their first contribution in go-git/go-git#825 - [@​codablock](https://github.com/codablock) made their first contribution in go-git/go-git#992 - [@​Jerry-yz](https://github.com/Jerry-yz) made their first contribution in go-git/go-git#987 - [@​wlynch](https://github.com/wlynch) made their first contribution in go-git/go-git#996 - [@​moranCohen26](https://github.com/moranCohen26) made their first contribution in go-git/go-git#994 - [@​grinish21](https://github.com/grinish21) made their first contribution in go-git/go-git#1022 - [@​prskr](https://github.com/prskr) made their first contribution in go-git/go-git#1018 - [@​dlambda](https://github.com/dlambda) made their first contribution in go-git/go-git#446 - [@​juliens](https://github.com/juliens) made their first contribution in go-git/go-git#366 - [@​onee-only](https://github.com/onee-only) made their first contribution in go-git/go-git#1036 - [@​tim775](https://github.com/tim775) made their first contribution in go-git/go-git#1042 - [@​niukuo](https://github.com/niukuo) made their first contribution in go-git/go-git#967 - [@​avoidalone](https://github.com/avoidalone) made their first contribution in go-git/go-git#1047 **Full Changelog**: go-git/go-git@v5.11.0...v5.12.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - "* 0-3 * * *" (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45Mi4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTIuMCIsInRhcmdldEJyYW5jaCI6InYxMC4wL2Zvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19--> Co-authored-by: Earl Warren <contact@earl-warren.org> Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6496 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org> Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Overview
When using the lib I have also faced this problem #119. After looking into the code my understanding is that we were initializing the
status
empty before making the diff operations. This causes an empty status object when no diff is encountered. Which lead us to getUntracked
status for committed files.I manage to solve this by adding an initialization method for our
status
that iterates over thestorer
index building an initial status with all the unmodified files included. This way, when we usestatus.File
it will find it on the map and will return correctly theUnmodified
status.Fix #119