git-annex/Command
Joey Hess a673fc7cfd
recompute: stage new version of file in git
When writing doc/tips/computing_annexed_files.mdwn, I noticed
that a recompute --reproducible followed by a drop and a re-get did not
actually test if the file could be reproducible computed again.

Turns out that get and drop both operate on staged files. If there is an
unstaged modification in the work tree, that's ignored. Somewhat
surprisingly, other commands like info do operate on staged files. So
behavior is inconsistent, and fairly surprising really, when there are
unstaged modifications to files.

Probably this is rarely noticed because `git-annex add` is used to add a
new version of a file, and then it's staged. Or `git mv` is used to move
a file, rather than `mv` of a file over top of an existing file. So it's
uncommon to have an unstaged annexed file in a worktree.

It might be worth making things more consistent, but that's out of scope
for what I'm working on currently.

Also, I anticipate that supporting unlocked files with recompute will
require it to stage changes anyway.

So, make recompute stage the new version of the file.

I considered having recompute refuse to overwrite an existing staged
file. After all, whatever version was staged before will get lost when
the new version is staged over top of it. But, that's no different than
`git-annex addcomputed` being run with the name of an existing staged
file. Or `git-annex add` being run with a new file content when there is
an existing staged file. Or, for that matter, `git add` being ran with a
new content when there is an existing staged file.
2025-03-12 13:42:00 -04:00
..
Add.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
AddComputed.hs recompute: stage new version of file in git 2025-03-12 13:42:00 -04:00
AddUnused.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
AddUrl.hs OsPath build flag no longer depends on filepath-bytestring 2025-02-10 16:39:55 -04:00
Adjust.hs adjust: Allow any order of options when combining --hide-missing with options like --unlock. 2024-10-21 16:03:39 -04:00
Assist.hs more OsPath conversion (650/749) 2025-02-07 17:03:31 -04:00
Assistant.hs more OsPath conversion (749/749) 2025-02-10 14:59:20 -04:00
Benchmark.hs improve benchmark --databases 2019-11-21 17:25:20 -04:00
CalcKey.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
CheckPresentKey.hs fix --from overriding annex-ignore 2023-11-30 15:12:07 -04:00
Config.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
ConfigList.hs remove dead nodes when loading the cluster log 2024-06-16 14:39:44 -04:00
ConfigRemote.hs configremote: Support --json and --json-error-messages 2023-05-10 14:21:42 -04:00
ContentLocation.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
Copy.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
Dead.hs Tab completion of many commands like info and trust now includes remotes 2024-06-30 12:39:18 -04:00
Describe.hs Tab completion of many commands like info and trust now includes remotes 2024-06-30 12:39:18 -04:00
DiffDriver.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
Direct.hs Automatically convert direct mode repositories to v7 with adjusted unlocked branches 2019-08-26 15:05:25 -04:00
Drop.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
DropKey.hs plumb in LiveUpdate (WIP) 2024-08-23 16:35:12 -04:00
DropUnused.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
EnableRemote.hs initremote, enableremote: Added --with-url to enable using git-remote-annex 2024-05-24 14:29:36 -04:00
EnableTor.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
ExamineKey.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
Expire.hs newtype MapLog 2023-11-13 14:37:22 -04:00
Export.hs factor out Annex.GitShaKey 2025-03-03 11:09:28 -04:00
ExtendCluster.hs use annex+http for accessing proxies 2024-07-25 12:00:57 -04:00
FilterBranch.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
FilterProcess.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
Find.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
FindKeys.hs add startAction parameter for KeySha 2023-12-06 13:28:02 -04:00
FindRef.hs remove --backend from global options 2022-06-29 13:33:25 -04:00
Fix.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
Forget.hs filter out control characters in all other Messages 2023-04-11 12:58:01 -04:00
FromKey.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
Fsck.hs replace removeLink with removeFile 2025-02-11 13:41:26 -04:00
FuzzTest.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
GCryptSetup.hs eliminate s2w8 and w82s 2023-10-26 13:12:57 -04:00
Get.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
Group.hs Tab completion of many commands like info and trust now includes remotes 2024-06-30 12:39:18 -04:00
GroupWanted.hs git style quoting for ActionItemOther 2023-04-08 16:30:01 -04:00
Help.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Import.hs more OsPath conversion (650/749) 2025-02-07 17:03:31 -04:00
ImportFeed.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
InAnnex.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Indirect.hs Automatically convert direct mode repositories to v7 with adjusted unlocked branches 2019-08-26 15:05:25 -04:00
Info.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
Init.hs remove dead nodes when loading the cluster log 2024-06-16 14:39:44 -04:00
InitCluster.hs broke out initcluster 2024-06-14 17:23:11 -04:00
InitRemote.hs git-remote-annex: Display full url when using remote with the shorthand url 2024-05-24 17:15:31 -04:00
Inprogress.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
List.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
Lock.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
Log.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
LookupKey.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
Map.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
MatchExpression.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
MaxSize.hs use live reposizes in balanced preferred content 2024-08-27 10:17:43 -04:00
Merge.hs sync: When in an adjusted branch, merge changes from the original branch 2023-07-06 12:42:24 -04:00
MetaData.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
Migrate.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
MinCopies.hs git style quoting for ActionItemOther 2023-04-08 16:30:01 -04:00
Mirror.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
Move.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
Multicast.hs remove unused adjustedBranchRefresh associated file parameter 2025-02-21 14:51:02 -04:00
NotifyChanges.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
NumCopies.hs git style quoting for ActionItemOther 2023-04-08 16:30:01 -04:00
OldKeys.hs oldkeys: check associated files by default and add --unchecked 2023-08-23 13:46:41 -04:00
P2P.hs more OsPath conversion (572/749) 2025-02-06 16:18:52 -04:00
P2PHttp.hs more OsPath conversion (572/749) 2025-02-06 16:18:52 -04:00
P2PStdIO.hs clean up protocol version for proxying 2024-07-26 13:49:05 -04:00
PostReceive.hs more OsPath conversion (650/749) 2025-02-07 17:03:31 -04:00
PreCommit.hs more OsPath conversion (602/749) 2025-02-07 14:46:11 -04:00
Proxy.hs Automatically convert direct mode repositories to v7 with adjusted unlocked branches 2019-08-26 15:05:25 -04:00
Pull.hs git-annex pull and push 2023-05-16 16:51:07 -04:00
Push.hs git-annex pull and push 2023-05-16 16:51:07 -04:00
ReadPresentKey.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Recompute.hs recompute: stage new version of file in git 2025-03-12 13:42:00 -04:00
RecvKey.hs remove unused adjustedBranchRefresh associated file parameter 2025-02-21 14:51:02 -04:00
RegisterUrl.hs plumb in LiveUpdate (WIP) 2024-08-23 16:35:12 -04:00
Reinit.hs remove dead nodes when loading the cluster log 2024-06-16 14:39:44 -04:00
Reinject.hs remove unused adjustedBranchRefresh associated file parameter 2025-02-21 14:51:02 -04:00
ReKey.hs remove unused adjustedBranchRefresh associated file parameter 2025-02-21 14:51:02 -04:00
RemoteDaemon.hs more OsPath conversion (572/749) 2025-02-06 16:18:52 -04:00
RenameRemote.hs renameremote: Support --json and --json-error-messages 2023-05-08 16:25:40 -04:00
Repair.hs more OsPath conversion (572/749) 2025-02-06 16:18:52 -04:00
Required.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
ReregisterUrl.hs add reregisterurl command 2024-03-05 15:06:14 -04:00
ResolveMerge.hs more OsPath conversion (572/749) 2025-02-06 16:18:52 -04:00
Restage.hs restage: New git-annex command, handles restaging unlocked files 2022-09-23 16:29:59 -04:00
RmUrl.hs more OsPath conversion (572/749) 2025-02-06 16:18:52 -04:00
Satisfy.hs added git-annex satisfy 2023-06-29 15:34:53 -04:00
Schedule.hs filter out control characters and quote filenames 2023-04-11 14:27:22 -04:00
Semitrust.hs Tab completion of many commands like info and trust now includes remotes 2024-06-30 12:39:18 -04:00
SendKey.hs more OsPath conversion (572/749) 2025-02-06 16:18:52 -04:00
SetKey.hs remove unused adjustedBranchRefresh associated file parameter 2025-02-21 14:51:02 -04:00
SetPresentKey.hs plumb in LiveUpdate (WIP) 2024-08-23 16:35:12 -04:00
Sim.hs more OsPath conversion (658/749) 2025-02-08 15:27:44 -04:00
Smudge.hs more OsPath conversion (572/749) 2025-02-06 16:18:52 -04:00
Status.hs more OsPath conversion (572/749) 2025-02-06 16:18:52 -04:00
Sync.hs more OsPath conversion (650/749) 2025-02-07 17:03:31 -04:00
Test.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
TestRemote.hs remove unused adjustedBranchRefresh associated file parameter 2025-02-21 14:51:02 -04:00
TransferKey.hs remove unused adjustedBranchRefresh associated file parameter 2025-02-21 14:51:02 -04:00
TransferKeys.hs remove unused adjustedBranchRefresh associated file parameter 2025-02-21 14:51:02 -04:00
Transferrer.hs remove unused adjustedBranchRefresh associated file parameter 2025-02-21 14:51:02 -04:00
Trust.hs Tab completion of many commands like info and trust now includes remotes 2024-06-30 12:39:18 -04:00
Unannex.hs more OsPath conversion (542/749) 2025-02-06 11:38:14 -04:00
Undo.hs more OsPath conversion (542/749) 2025-02-06 11:38:14 -04:00
Ungroup.hs Tab completion of many commands like info and trust now includes remotes 2024-06-30 12:39:18 -04:00
Uninit.hs more OsPath conversion (542/749) 2025-02-06 11:38:14 -04:00
Unlock.hs more OsPath conversion (542/749) 2025-02-06 11:38:14 -04:00
UnregisterUrl.hs restore old registerurl location tracking behavior 2023-04-05 17:06:44 -04:00
Untrust.hs Tab completion of many commands like info and trust now includes remotes 2024-06-30 12:39:18 -04:00
Unused.hs more OsPath conversion (542/749) 2025-02-06 11:38:14 -04:00
UpdateCluster.hs updateproxy, updatecluster check annexobjects=yes 2024-08-07 12:27:24 -04:00
UpdateProxy.hs updateproxy, updatecluster check annexobjects=yes 2024-08-07 12:27:24 -04:00
Upgrade.hs remove dead nodes when loading the cluster log 2024-06-16 14:39:44 -04:00
VAdd.hs filter out control characters in all other Messages 2023-04-11 12:58:01 -04:00
VCycle.hs filter out control characters in all other Messages 2023-04-11 12:58:01 -04:00
Version.hs version: Avoid error message when entire output is not read 2023-05-19 15:00:57 -04:00
VFilter.hs understand adjusted view branch names 2023-02-27 14:57:58 -04:00
Vicfg.hs more OsPath conversion (542/749) 2025-02-06 11:38:14 -04:00
View.hs more OsPath conversion (542/749) 2025-02-06 11:38:14 -04:00
VPop.hs vpop: Only update state after successful checkout 2024-11-11 14:15:51 -04:00
Wanted.hs improve usage 2024-08-11 14:37:18 -04:00
Watch.hs webapp: Added --port option, and annex.port config 2024-01-25 14:08:36 -04:00
WebApp.hs more OsPath conversion (749/749) 2025-02-10 14:59:20 -04:00
Whereis.hs more OsPath conversion (639/749) 2025-02-07 16:07:05 -04:00
WhereUsed.hs more OsPath conversion (542/749) 2025-02-06 11:38:14 -04:00