remove old closed bugs and todo items to speed up wiki updates and reduce size

Remove closed bugs and todos that were last edited or commented before 2024.

Except for ones tagged projects/* since projects like datalad want to keep
around records of old deleted bugs longer.

Command line used:

	for f in $(grep -l '|done\]\]' -- ./*.mdwn); do if ! grep -q "projects/" "$f"; then d="$(echo "$f" | sed 's/.mdwn$//')"; if [ -z "$(git log --since=01-01-2024 --pretty=oneline -- "$f")" -a -z "$(git log --since=01-01-2024 --pretty=oneline -- "$d")" ]; then git rm -- "./$f" ; git rm -rf "./$d"; fi; fi; done
	for f in $(grep -l '\[\[done\]\]' -- ./*.mdwn); do if ! grep -q "projects/" "$f"; then d="$(echo "$f" | sed 's/.mdwn$//')"; if [ -z "$(git log --since=01-01-2024 --pretty=oneline -- "$f")" -a -z "$(git log --since=01-01-2024 --pretty=oneline -- "$d")" ]; then git rm -- "./$f" ; git rm -rf "./$d"; fi; fi; done
This commit is contained in:
Joey Hess 2025-01-01 13:09:36 -04:00
parent 0000c3f325
commit 2fe36b35a2
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
871 changed files with 0 additions and 27861 deletions

View file

@ -1,5 +0,0 @@
since there is no generic 'fuse' mode, I would like to request to have `--get` (or `--auto-get`) option for diffdriver. I am trying to compare files across two branches on a repo I just cloned. I cannot download all the files and downloading differing keys across branches for the same file is a bit painful. So I felt that it would be super nice if git annex could auto get those files from somewhere (well -- original clone)
[[!tag confirmed]]
> [[done]] --[[Joey]]

View file

@ -1,17 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2018-02-08T17:28:21Z"
content="""
This is a good idea. I wonder what to do about the objects it downloads for
a diff; should they be left in the annex for later use/dropunused, or
immediately deleted after the diff completes.
My inclination is to keep
them around, for one thing when I'm diffing stuff I often run diff more
than once, perhaps to widen the diff or because I want to take a second
look at it, and re-downloading a bunch of big files would be painful then.
By the way, what diffdriver program are you using? I've had a hard time
finding any real-life examples of git diffdrivers.
"""]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="comment 2"
date="2023-08-09T05:31:26Z"
content="""
How about handling them as if they were manually fetched with `git annex get`? The next run of `satisfy`, `sync`, etc. will then take care of dropping.
"""]]

View file

@ -1,95 +0,0 @@
Thank you for `git-annex`, it's awesome!
I recently figured I could add `git-annex metadata` to my research data files that contains the start and end date of timeseries data inside the files so a quick lookup by date range (”which files contain data in that time range”) is possible.
This is possible when using numeric timestamps (e.g. unix timestamp like `1669981463`) but not with stringy dates (e.g. `2022-11-12T20:10:14+0200`) as `--metadata fieldname>=VALUE` does _numeric_ comparison.
## Proposal: How about when `--metadata fieldname>=VALUE` falls back to string comparison when `VALUE` can't be parsed as a number?
## Test case
Consider this script `make-git-annex-dir-with-timestamps.sh`:
```sh
#/bin/sh
fmt="$1";test -n "$fmt" || fmt="%FT%T%z"
# make a new git annex repository
d=git-annex-with-times-"$fmt";chmod +w -R "$d";rm -rf "$d";mkdir "$d";cd "$d"
git init
git annex init
# create some files
for i in `seq 1 9`;do echo "File $i" > "file$i";done
git annex add .
git commit -m "Add files"
# add metadata to files
for i in `seq 1 9`;do
time_start="$(date -d"$((-20 + $i)) hours" +"$fmt")"
(set -x;git annex metadata --set time-start="$time_start" "file$i")
time_end="$(date -d"$((-10 + $i)) hours" +"$fmt")"
(set -x;git annex metadata --set time-end="$time_end" "file$i")
done
timerange_start="$(date -d "-16 hours -5 minutes" +"$fmt")"
timerange_end="$(date -d "-12 hours +5 minutes" +"$fmt")"
(
set -x
git annex find \
"-(" --metadata "time-start>=$timerange_start" --and --metadata "time-start<=$timerange_end" "-)" \
--or \
"-(" --metadata "time-end>=$timerange_start" --and --metadata "time-end<=$timerange_end" "-)"
)
echo "⬆⬆⬆ This should only output file4 through file8 ⬆⬆⬆"
```
Invoked with unix timestamps time format, it works as expected:
```sh
> ./make-git-annex-dir-with-timestamps.sh '%s'
# ...
+ git annex find '-(' --metadata 'time-start>=1669923315' --and --metadata 'time-start<=1669938315' '-)' --or '-(' --metadata 'time-end>=1669923315' --and --metadata 'time-end<=1669938315' '-)'
file4
file5
file6
file7
file8
⬆⬆⬆ This should only output file4 through file8 ⬆⬆⬆
```
However, other stringy date formats match all files:
```bash
# typical ISO-ish time format
> ./make-git-annex-dir-with-timestamps.sh "%FT%T%z"
# ...
+ git annex find '-(' --metadata 'time-start>=2022-12-01T20:49:37+0100' --and --metadata 'time-start<=2022-12-02T00:59:37+0100' '-)' --or '-(' --metadata 'time-end>=2022-12-01T20:49:37+0100' --and --metadata 'time-end<=2022-12-02T00:59:37+0100' '-)'
file1
file2
file3
file4
file5
file6
file7
file8
file9
⬆⬆⬆ This should only output file4 through file8 ⬆⬆⬆
```
```sh
# git-annex's own time format for 'FIELDNAME-lastchanged'
> ./make-git-annex-dir-with-timestamps.sh "%Y-%m-%d@%H-%M-%S"
# ...
+ git annex find '-(' --metadata 'time-start>=2022-12-01@20-38-04' --and --metadata 'time-start<=2022-12-02@00-38-04' '-)' --or '-(' --metadata 'time-end>=2022-12-01@20-38-04' --and --metadata 'time-end<=2022-12-02@00-38-04' '-)'
file1
file2
file3
file4
file5
file6
file7
file8
file9
⬆⬆⬆ This should only output file4 through file8 ⬆⬆⬆
```
Yann / @nobodyinperson
> [[fixed|done]] --[[Joey]]

View file

@ -1,10 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2022-12-12T17:06:40Z"
content="""
I think this is a good idea. Particularly there was no good reason for
it to default to false when either value is not a number.
I've implemented this.
"""]]

View file

@ -1,37 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="comment 2"
date="2022-12-22T11:39:41Z"
content="""
Thanks joey! However I don't think it works quite now. Slightly modifying the script above I made a [testsuite](https://gitlab.com/-/snippets/2475815) and it seems metadata fields are still interpreted as numbers somehow:
```bash
# old version without lexicographical ordering
git annex version --raw
10.20221212-gab11fd70e
bash make-git-annex-dir-with-timestamps.sh %s %Y%m%d%H%M%S %Y.%m%d%H%M%S %Y:%m%d%H%M%S %Y-%m-%dT%H%:M:%S %Y-%m-%dT%H%:M:%S%z %FT%T %FT%T%z
%s ok
%Y%m%d%H%M%S ok
%Y.%m%d%H%M%S ok
%Y:%m%d%H%M%S fail
%Y-%m-%dT%H%:M:%S fail
%Y-%m-%dT%H%:M:%S%z fail
%FT%T fail
%FT%T%z fail
# new version apparently with lexicographical ordering but no change
git annex version --raw
10.20221213-gac6ccb513
bash make-git-annex-dir-with-timestamps.sh %s %Y%m%d%H%M%S %Y.%m%d%H%M%S %Y:%m%d%H%M%S %Y-%m-%dT%H%:M:%S %Y-%m-%dT%H%:M:%S%z %FT%T %FT%T%z
%s ok
%Y%m%d%H%M%S ok
%Y.%m%d%H%M%S ok
%Y:%m%d%H%M%S fail
%Y-%m-%dT%H%:M:%S fail
%Y-%m-%dT%H%:M:%S%z fail
%FT%T fail
%FT%T%z fail
```
"""]]

View file

@ -1,10 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 3"""
date="2022-12-22T18:30:46Z"
content="""
Thanks for double-checking. I have not tried your test but I think I see
what is going on from the pattern. Strings starting with a number but then
subsequently not a number were still being parsed to numbers and compared
numerically. I've fixed that now.
"""]]

View file

@ -1,24 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="comment 4"
date="2022-12-23T09:39:57Z"
content="""
Now it works, thank you very much joey! 🎉
```bash
./make-git-annex-dir-with-timestamps.sh
+ git annex version --raw
10.20221213-g29176f131
%s ok
%Y%m%d%H%M%S ok
%Y.%m%d%H%M%S ok
%Y:%m%d%H%M%S ok
%Y-%m-%dT%H:%M:%S ok
%Y-%m-%dT%H:%M:%S%z ok
%FT%T ok
%FT%T%z ok
```
(I had a typo in the above tests - a `%` out of place - but it didn't change the picture, now everything works as expected anyway.)
"""]]

View file

@ -1,16 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="comment 5"
date="2022-12-23T10:05:26Z"
content="""
A very nice benefit of this feature is that we can now `git annex find` files depending on when their metadata was changed:
```sh
# annexed files which have recently had their metadata changed
git annex find --metadata \"lastchanged>=$(date -d'2 days ago' +%Y-%m-%d@%H-%M-%S)\"
# annexed files which have their tag changed in a specific week
git annex find --metadata \"tag-lastchanged>=2022-12-18\" --and --metadata \"tag-lastchanged<=2022-12-25\"
```
"""]]

View file

@ -1,11 +0,0 @@
I have some Git Annex repos that I keep copies of on both NTFS on Linux and on ecryptfs (which Ubuntu uses for home directory encryption) on Linux. Now, ecryptfs allows each path component of a filename to be only up to 140-ish characters, because it has to encrypt that filename, add some encryption info to it, and store it inside another filename on a backing ext4 filesystem (which limits path components to 255 characters).
Several times now I've added a bunch of stuff to my annex on the NTFS checkout, where path components are allowed to be longer than 140 characters, synced it over to my other annex checkout on ecryptfs, and then had Git Annex fail during the sync, trying to create these empty symlinks with path components too long for the filesystem it is on. When in this state, I don't really know how to fix it. I can't just "git mv" the offending file to a valid name, both because "git mv" needs the source file to be on disk in the first place and because the failed "git checkout" leaves my repo thinking it has thousands of untracked files (because some stuff did get created, but git refused to officially move to the commit it was trying to check out, because the checkout failed).
I am looking for a solution for this inside Git Annex. The simplest thing, I think, would be to set a max path component length for the whole set of repos, so I could get an error when I go to "git annex add" on the NTFS checkout that the filenames being added are too long for some of the repos that will eventually want to check them out. Is it possible to do this with a pre-commit hook somehow?
The next simplest thing would be for Git Annex to look at the filesystem it is running on and do something smarter than exploding and leaving my repo in a weird out-of-sync state if some of the filenames it wants to create can't be created. Maybe it should fail the sync earlier, in Git Annex itself rather than in git checkout. Maybe it should just leave those files out of the checkout, or force/allow me to rename them right then.
The most complex thing would be to somehow make it work anyway and check out the symlinks under different, valid names. Perhaps it could just truncate those path components in the symlink view? There's already support for different metadata views; this would be sort of like that. You get a special view of the repo subject to the constraints of your filesystem.
> [[rejected|done]] --[[Joey]]

View file

@ -1,11 +0,0 @@
Thank you for your previous message here: [[/todo/Copy-on-Write__47__reflink_support_for_unlocked_files/]].
I indeed discovered it was done for Linux after I posted it, but macOS with APFS also supports reflinks, under the `-c` (clonefile) option, which does the same as the `--reflink=always` option on Linux.
The biggest problem is that there is no auto option, but in theory its possible to first try the clone option, and then fall back if it doesnt work, although that would be inefficient.
I can try to code something, although I am not that proficient in Haskell, or run test code if needed on macOS 12.
-- Lena Wildervanck
> [[dup|done]] --[[Joey]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2022-11-21T19:11:52Z"
content="""
This todo aleady exists for the same thing:
<https://git-annex.branchable.com/todo/support_macOS__39___cp_-c___40__cp_--reflink_equivalent__41__/>
"""]]

View file

@ -1,3 +0,0 @@
Some filesystems, like BTRFS or ZFS have copy on write support, which means that if files are copied in a special way they share sectors until one of the files is edited. Implementing support would make files take up less space if they are in unlocked mode and not significantly edited.
> Already [[done]]. I did add a mention of it to the tip. --[[Joey]]

View file

@ -1,13 +0,0 @@
[[!comment format=mdwn
username="lena.wildervanck@4b6aac156870f72a36b090e210e4747f702b69cb"
nickname="lena.wildervanck"
avatar="http://cdn.libravatar.org/avatar/8a423528476e6f6dc6a06588b5bbf457"
subject="comment 1"
date="2022-11-13T19:03:48Z"
content="""
Oh, nvm, there already seem to be some references in the code to it.
Maybe it should be added that it does that under [[https://git-annex.branchable.com/tips/unlocked_files/]] under using less disk space?
Also, macOS uses a `-c` flag instead of `reflink`, according to [the cp man page](https://www.unix.com/man-page/mojave/1/cp/).
"""]]

View file

@ -1,13 +0,0 @@
Currently, git-annex handles merge conflicts of annexed files well. It makes two differently named versions of the conflicting files (A more descriptive naming scheme including date and commit hash would be nice, but that's a different topic).
However, a conflict of git-tracked files is not resolved, leading to merge conflicts being left open after a `git annex sync` (thus leaving file contents with the weird merge markers `<<<<<` etc., breaking file contents.)
Could `git annex [resolve]merge` be extended to also handle those git conflicts and leave the repo in a clean, merged state after `git annex sync|pull|assist`?
To not confuse users, it could be opt-in (`git annex --set annex.resolvegitmerge true`), but maybe the default for `git annex assist`?
On conflict, it would remove the conflicting file and instead create two versions with suffixes either like annexed files or better the commit hash and/or date.
Submodule conflicts can't be resolved like this, in that case I would use the most recent commit of the two in question.
> [[rejected|done]] --[[Joey]]

View file

@ -1,19 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2023-06-05T18:49:43Z"
content="""
I think this would violate least surprise. Users expect git-annex
to behave like git, and that means merge conflicts like git handles them,
when the files are text files tracked by git.
Consider that, if the file is a config file, applying git-annex's
resolvemerge to it would make 2 files with different names be in the
repository. So the config file would stop taking effect for whatever it was
supposed to configure. It would be easy for the user to miss that, because
the repository would not be left in a conflicted state.
When you check a file into git rather than git-annex, you are
choosing to have git manage that file normally. If you want the git-annex
behavior, you can check the file into git-annex.
"""]]

View file

@ -1,7 +0,0 @@
When fsck'ing a remote repo, files seem to be copied from the remote to a local dir (thus written to disk), read back again for checksumming and then deleted.
This is very time-inefficient and wastes precious SSD erase cycles which is especially problematic in the case of special remotes because they can only be fsck'd "remotely" (AFAIK).
Instead, remote files should be directly piped into an in-memory checksum function and never written to disk on the machine performing the fsck.
> [[done]] per my comments --[[Joey]]

View file

@ -1,28 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2021-04-14T17:07:50Z"
content="""
Only some remotes support checksums in-flight; this recently includes
downloads from other git-annex repositories over ssh. Progress
on that front is being tracked at
<https://git-annex.branchable.com/todo/OPT__58_____34__bundle__34___get_+_check___40__of_checksum__41___in_a_single_operation/>
Most special remotes can't yet, but that should change eventually
for at least some of them.
I've made fsck notice when content was able to be verified as part of a
transfer, and avoid a redundant checksum of them.
What I've not done, and don't think I will be able to, is make the file
not be written to disk by fsck in that case. Since the `retrieveKeyFile`
interface is explicitly about writing to a file on disk, it would take ether
a whole separate interface being implemented for all remotes that avoids
writing to the file when they can checksum in flight, or it would need
some change to the `retrieveKeyFile` interface to do the same.
Neither seems worth the complication to implement just to reduce disk IO in
this particular case. And it seems likely that, for files that fit in
memory, it never actually reaches disk before it's deleted. Also if this is
a concern for you, you can I guess avoid fscking remotes too frequently or
use a less fragile medium?
"""]]

View file

@ -1,29 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 2"""
date="2021-10-14T15:55:14Z"
content="""
Checksum during transfer is now implemented for as many remotes as it
reasonably can be, which is almost all of them. But not 100% of all
remotes in all circumstances. And there's no way to know if a remote
will support it before doing the transfer.
To avoid changing the API, it occurs to me that retrieveKeyFile could be
passed `/dev/null`. But any remote that does not support resuming and tries
to overwrite the existing destination file would fail.
Also some kinds of remotes download to the file in one process or thread
and while the download is happening, git-annex checksums the file as new
data appears in it. External special remotes in particular do this.
That would break with `/dev/null` too.
Putting the temp file on some other medium seems like the only way to
address this. If there were a config of a directory to use, you could point
it at a disk rather than the SSD, or even at a ram disk, if you have
sufficient memory. Unsure if it's worth adding such an option though,
probably few people would use it. And cloning the repository onto the other
medium and running the remote fsck from there would have the same result
without needing an option.
I'm inclined to close this, since I don't think it can be addressed.
"""]]

View file

@ -1,38 +0,0 @@
Hey joey,
Currently, there is no one-command-to-rule-them-all to actually 'get the repo synced entirely'. Current workarounds:
[[!format bash """
# plain git-annex
git annex add
(git add -A) # for the weird filter issues, see https://github.com/datalad/datalad/issues/7268
git annex sync --content
# with DataLad
datalad save # no way around the weird filter issues currently
git annex sync --content
"""]]
Whenever I introduce new people to git annex, it's always a pain point to explain these multiple steps. It would be awesome to have just one command that syncs everything. Especially for beginners.
`git annex sync` already does quite a bit including `git add`ing and `git commit`ting changes to tracked files. However it doesn't add new files. It would be awesome if `git annex sync` could optionally also do `git annex add`:
[[!format bash """
# configure 'git annex sync' to run 'git annex add' before as well (opt-in)
git annex config --set annex.syncadd true
# have it sync the content as well
git annex config --set annex.synccontent true
# From then on, 'git annex sync' does a *real* sync: everything that's new/changed here gets pushed elsewhere and new changes get pulled as well.
git annex sync
# This would then basically be a poor-mans-git-annex-assistant 😛
while true;do git annex sync --content;done
"""]]
What do you think?
Cheers, Yann
> [[done]] as `git-annex assist` --[[Joey]]

View file

@ -1,31 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 10"""
date="2023-05-18T17:45:44Z"
content="""
Implementing `git-annex assist` now...
A tricky point is, should it add files only in the current directory and
below, or all files in the repository? Note that the assistant can be run
in a directory and it will only add changed/new files in that directory,
although it can receive pulls that change files in other directories
(and will then download those files content).
OTOH, `git-annex sync` commits all changes, not only those in the
current directory. (The assistant does in some circumstanges commit
changes made outside the current directory. Its behavior is a bit
inconsistent in this area.)
So I think it makes sense for `git-annex assist` to only add files in the
current directory by default. (Of course an option like -A could be added
later.)
And while I'm a bit ambivilant about it, I'm making it commit all staged
changes, not only those in the current directory. As well as following the
behavior of `git-annex sync` and to an extent the assistant, it seems to
me that if you run `git-annex add ../foo; git-annex assist`, you are
intentionally building up a commit that includes file "foo". The same
as if you ran `git-annex add ../foo; git-annex add .` ... If you're not,
and you care about what files get added in what commit, you can of course
commit manually.
"""]]

View file

@ -1,14 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="👍 git annex assist"
date="2023-05-19T05:54:43Z"
content="""
Cool, joey!
I personally would like `assist` to add all changes in the entire repo by default. For beginners it's always a hassle to know what directory one is in and if one opens a terminal in a subfolder via a file manager, then run `git annex assist`, it won't sync all changes.
But I see that this would be inconsistent with `git annex add`... On the other hand, `assist` should help you easily sync the repo state without typing too much. One can always do `git annex assist .` for only this directory. A `-A` option is also an option, but effectively one would need to use it every time. As you said in the other comment - if you want more control, use the lower level commands. The assistant makes syncing a no-brainer, `git annex assist` should do so, too.
That the assistant can operate on only a subdir (do people do this?) itself is again an inconsistency then... A config like `annex.assistaddall` could be introduced, but meh...
"""]]

View file

@ -1,15 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 12"""
date="2023-05-19T18:37:28Z"
content="""
I'm also not too happy with the inconsistency of assist committing all staged
changes and syncing all file contents, but only adding files in the cwd.
I suppose that consistency with the assistant doesn't really matter. The
assistant's behavior when ran in a subdirectory is surprising,
inconsistent, and undocumented.
So I'm going to change assist to add all files. Except when -C is used,
then only add files in the specified directory.
"""]]

View file

@ -1,9 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="comment 13"
date="2023-05-20T06:03:30Z"
content="""
Sounds good! Maybe also a `-m` short form of `--message` for less typing. Consistent with sync and datalad save.
"""]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 14"""
date="2023-05-23T15:46:27Z"
content="""
Oh, this new command and sync always supported -m. I've added it to the man
page.
"""]]

View file

@ -1,18 +0,0 @@
[[!comment format=mdwn
username="ewen"
avatar="http://cdn.libravatar.org/avatar/605b2981cb52b4af268455dee7a4f64e"
subject="Breaking change to &quot;sync&quot;"
date="2023-07-12T10:21:03Z"
content="""
Via a comment on [my bug about the new `sync` warning suddenly appearing in 10.20230626](https://git-annex.branchable.com/bugs/Changing_sync_to_include_content_breaks_UX/?updated) I see that this fairly hidden discussion seems to have been the rationale for completely changing what \"sync\" does \"because some users expect it to do everything\".
At the beginning of the design I might have agreed with you about \"what the sync command should do\" (and having another, eg, \"metasync\" command for the smaller version). But changing a fundamental command, a decade later, to do something different, based entirely on a \"wouldn't it have been nice (for some use cases) if...\" seems quite a stretch.
As per the other bug, if you want to implement new behaviour for such a fundamental command (\"git annex sync\" is something one runs pretty constantly if using git annex actively from the command line) then it'd be best to implement it in another command name, instead of dramatically changing an existing one. (The other thread has a few more suggestions; I personally still like \"fullsync\" for the expanded version.)
Either way, such a major -- behaviour breaking -- change needs to be much better documented than \"discussion in a bug that a few people saw\", and a note in passing in a changelog (which people have to find by noticing strange new output in probably scripted git annex usage).
Ewen
PS: I too think it's a terrible idea to have git annex default to auto-adding any files it can find. Maybe that makes some \"Dropbox-like\" use cases nicer, but it also entirely breaks other long standing use cases.
"""]]

View file

@ -1,24 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="Clarification"
date="2023-07-12T11:29:41Z"
content="""
@ewen for the record:
I never suggested that `git annex sync` auto-adds new files by default, see [my comment above](http://git-annex.branchable.com/todo/Having___39__git_annex_sync__39___optionally_add/#comment-37c3eb24df11d85c07b78c0297447c45):
> Exactly, I also would never want git annex sync to do the adding by default - strictly as an opt-in configuration.
As `git annex sync` already had so many options for configuring its behaviour, I thought having one more that runs `git annex add` in the beginning wouldn't hurt. I never suggested changing `git annex sync`'s default behaviour. Purely opt-in. Same for the existing options like `annex.synccontent` etc.
Changing `git annex sync`'s default behaviour of now syncing content was joey's idea, not mine.
> if you want to implement new behaviour for such a fundamental command
There is already `git annex assist` to do exactly that. See above or the changelogs.
Just to clarify. Please read the discussions you're referring to thoroughly before claiming things between the lines. 🙂
Now back to constructive discussion.
"""]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="adding all files or only in current directory?"
date="2023-05-03T14:23:04Z"
content="""
`git annex add` only adds files in the current directory and below and has no flag to do a `git add -A` equivalent. For the purpose of making `git annex sync` also adding all files (e.g. with `git annex sync --add` or with prior `git annex config --set annex.syncadd true`), such an `git annex add --all|-A` option would be handy (which would also be used by `git annex sync --add`). It would also make `git annex add` more consistent with `git add`.
"""]]

View file

@ -1,17 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="Git Alias for a 'full sync'"
date="2023-05-15T07:31:41Z"
content="""
This alias pretty much does what I mean:
[[!format perl \"\"\"
# set the alias
git config --global alias.sync '!sh -xc '\"'\"'cd \"$(git rev-parse --show-toplevel)\";git annex add;git add -A;git annex sync'\"'\"''
# This then goes into the repo root, adds stuff with git annex, adds the rest git-annex didn't add and syncs with git annex
git sync
\"\"\"]]
"""]]

View file

@ -1,18 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 3"""
date="2023-05-15T20:09:30Z"
content="""
I don't think this can possibly become the default behavior, because plenty
of users will have temporary files that they don't want to add (and haven't
gitignored), or even sensitive files that happen to be in the same
repository that it would be a security hole level surprise for `git-annex
sync` to start adding, when it has not before.
For the same reason, `git-annex config` couldn't be used to make this a
default `git-annex sync` behavior. A local git config to enable it would be
ok.
It would would need to look at annex.largefiles, and add small files to git
directly.
"""]]

View file

@ -1,37 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="comment 4"
date="2023-05-15T21:13:34Z"
content="""
Exactly, I also would never want `git annex sync` to do the adding by default - strictly as an opt-in configuration.
I see your point that people might have sensitive files in a repo that they don't have `.gitignore`d and would not want to get pushed. However, I argue:
- If you clone a git annex repo and do `git annex sync` on it, you're pretty much already trusting that repo and the remotes. You either already have push access (that doesn't happen easily unless you're in control of the repo) or you don't, but then it's not a problem when you add your sensitive files because your changes won't ever get synced back. Even if they do at some later point: You `git annex drop --force` them (or just `git rebase -i`) to remove them from the repo entirely and worst case is that the file metadata is leaked back into the repo collection. Again, something I'd consider OK if you trust the repo.
- When you trust a git annex repo, you also trust its `git annex config` settings like `synccontent` and consent with it.
- Thus, if that repo has a `git annex config --set annex.syncadd true` setting that has `git annex sync` also do a prior `git annex add`, that's fine.
I think that only having a local `git config annex.syncadd true` setting is basically the same as having a customized alias like mine above, so that doesn't really improve the situation: in both cases users of the repo need to do local configs. A `git annex config` will be stored in the repo and be immediately effective for everybody using it - a major benefit for collaboration, for which git annex is a golden tool. If I understand correctly, any `annex.*` config can be overridden locally with a `git config annex.*` setting (right?). So cautious users can have `git config --global annex.syncadd false` to prevent `git annex sync` from ever adding files, even if the repo is configured to do so.
If the `git config annex.syncadd true` setting would just literally run `git annex add`, it automatically obeys the largefiles settings (also from the .gitattributes file).
All in all I'd consider the `syncadd` a matching feature considering how much `git annex sync` is already doing: committing, pulling, merging, pushing all over the place - only the adding it doesn't do.
The more behaviour can be configured in the repo directly, the better the out-of-the-box experience for (inexperienced) end users of a repo will be. I maintain many git annex repos and collaborate with different students like this on scientific projects. Together with [default preferred content expressions](https://git-annex.branchable.com/todo/Setting_default_preferred_content_expressions/) the workflow would be extremely straight-forward:
[[!format bash \"\"\"
# get the repo
git clone URL/repo
cd repo
# ”whenever you're done, run”:
git annex sync
# - auto-enables common remotes
# - auto-sets preferred content expressions (to prevent the repos from uselessly downloading EVERYTHING - just what's sensible by default)
# - auto-adds/commits/pulls/merges/pushes changes
# - auto-syncs content around
\"\"\"]]
Sensible settings for largefiles in `.gitattributes` or the `git annex config` can be set by those who understand it, others just do `git annex sync` and are done with it.
"""]]

View file

@ -1,32 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 5"""
date="2023-05-16T16:32:51Z"
content="""
sync's intent is to replicate as close as possible the following common
git workflow:
first stage some changes, and then run:
git commit -m foo
git pull
git push
Since git-annex has some complications involving pulling and pushing
the git-annex branch, and transferring the content, it adds a learning
curve that was too high. Giving users one new command to learn minimizes
the learning curve. (It's unfortunate it didn't originally send content,
and annex.synccontent aims to fix that oversight and I hope it may eventually
become default.)
For git-annex sync to default to doing something not in the above
pull+commit+push workflow would be surprising, because that's the workflow
users have been told it handles.
Notice that the git-annex assistant will happily add all files to the
repository and send their content. That's because it's *not* targeting
users who expect to use that git workflow. So it's not surprising that it
does what it does.
In conclusion, if having this behavior enabled by git config is not useful,
then it does not belong in `git-annex sync`. It could go in a new command.
"""]]

View file

@ -1,21 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 6"""
date="2023-05-16T17:05:35Z"
content="""
I also generally feel like `git-annex sync` was probably a bad conflation
of 3 git commands into 1 command when there could have just been `git-annex
pull` and `git-annex push`. The fact that it conflates several things makes
users think of it as just a big "does all the things" command, which makes
users want it to do more things.
It is not too late to split it up, and eventually deprecating it would be a
good path to making annex.synccontent default.
Update: Implemented `git-annex pull` and `git-annex push`, although I have
no plans yet to deprecate `git-annex sync`.
Update: I found a better path to transition to sync --content by
default, and have started that transition. `git-annex pull/push` sync
content by default already.
"""]]

View file

@ -1,23 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 7"""
date="2023-05-17T17:24:03Z"
content="""
Brainstorming some names for a new command that is `git add -A` + sync...
`git-annex publish` kind of implies more exposure of local files to others
than just syncing. But it more implies sending data, not also receiving it.
`git-annex addsync` is clear what it does, but not very memorable.
`git-annex assist` has a nice analogy to the `git-annex assistant`,
which is close in behavior. Users who don't know about the assistant
will miss the analogy though. "assist" also suggests git-annex will take
care of everything, even more broadly than sync.
`git-annex share` also implies more exposure of local files than git-annex
sync, and sharing goes both ways so it's better than `git-annex publish`.
I'd be inclined toward `git-annex share` or `git-annex assist`, but welcome
better ideas.
"""]]

View file

@ -1,12 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="comment 7"
date="2023-05-17T10:41:18Z"
content="""
Cool, thanks joey!
If you want to go as far as deprecating `git annex sync` (a huge change in habits for git-annex users if that one goes away), I wonder how adding the `annex.syncadd` config (a strictly opt-in consensus for users of a repo) is too much of a disruption 😅 But okay, you're the maintainer.
I still think that having **one command** that does what the assistant does, but as a one-shot manual step, would benefit git-annex immensely. I recently tried running the assistant on my SailfishOS phone (https://fosstodon.org/@nobodyinperson/110203412944552425) and realised that having the assistant running in the background all the time is not ideal due to e.g. the power consumption - maybe due to the permanent SSH connection to the remotes. I am now using a systemd service that basically does `git annex add;git annex sync`. Would be awesome and certainly good for the understanding of new users if there was a command that basically one-steps the assistant - This is something I as a previous Syncthing user was dearly missing: one-stepping the syncing to see what's the bottleneck/problem/what it does exactly, etc. If you'd rather put this into a new command, I'm fine with that, though I still think `git annex sync` is a perfect candidate also due to the name.
"""]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="comment 9"
date="2023-05-18T08:40:37Z"
content="""
Good suggestions, I'd prefer `assist`, as it'll be one step of what the assistant does. I'll also through `git annex update` into the ring. `update`ing goes both ways, `share`ing also sounds more like you getting your stuff out there, not necessarily others' stuff to you.
"""]]

View file

@ -1,32 +0,0 @@
Thank you joey for `git annex diffdriver --text`, that is a big step towards easier diffing of annexed files. The following is now a copy-paste solution to 'make git diff work with git annex':
```
echo '* diff=annextextdiff' >> .git/info/attributes && git config diff.annextextdiff.command "git annex diffdriver --text"
```
This however then has `git diff` use git-annex' diffing mechanism for *all* files, including normal git-tracked files. There probably is no gitattributes-way of applying a diff command only to annexed files, right?
## Customizing `diff` options
Apparently, `git annex diffdriver --text` uses the system's `diff` command and doesn't (allow to) give it any specific options. The below points could be worked around by having something like `git annex diffdriver --text --diffopts='--color=auto'` so that the user can customize the `diff` invocation. Alternatively you could introduce an environment variable like `GIT_ANNEX_DIFFDRIVER_DIFF_OPTIONS` or shorter `GIT_ANNEX_DIFF_FLAGS` that could also be used to temporarily diff *that one file* with specific options.
## Coloring the output
How about passing the (sanitized, `false`→`never` and `true`→`auto`) `git config color.diff` (and fallback `color.ui`) setting as the `diff --color=...` option? The experience would then match the users configured expectation.
## Handling all files as text
`diff` detects some files as binary, although it can make sense to text-diff them (e.g. PDFs), just to get an impression of the changes. `diff` (and `git diff` as well, AFAIK without any good workaround without an external driver again) then just displays the unhelpful message that the 'binary files differ' (you don't say...🙄).
How about having `git annex diffdriver --text` always using `diff --text`? That would deviate from the usual `git diff` behaviour, but I argue that:
- a) People *explicitly* configure (a subset of) files in `.gitattributes` to be diffed with `git annex diffdriver --text`.
- b) If they wouldn't care about the diff between files, then they wouldn't configure it.
- c) Tracking binary(-like) files is something git-annex is explicitly designed for, it makes sense that git just skips over those, but git-annex could add value here
Thanks again a ton for git-annex, the Tübix2023-Workshop was well appreciated and lots of fun. 👍
Yann
> [[done]] --[[Joey]]

View file

@ -1,26 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2023-07-05T18:55:33Z"
content="""
If your annexed files have a common extension you can match them in
.gitattributes that way.
I've added support for passing options for diff. Eg:
git annex diffdriver --text -- --color --text --
As for passing --color automatically, I don't know if every diff(1) supports
--color, and this would be more complexity.
I doubt that most users would appreciate diff --text by default for large
binary files. That is really getting into territory that an external
diff driver program can handle much better. Eg, if you're diffing jpegs and
also zip files, you can write a diff driver program that lists the contents of
zip files and passes that to diff, and that uses imagemagick
`compare -compose` or <https://github.com/x1ddos/imgdiff>
to show a visual diff between two jpegs.
The point off the --text option is that sometimes you know you have plain
text and so writing such a program is not necessary.
"""]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="comment 2"
date="2023-07-06T05:44:57Z"
content="""
Wonderful, thank you joey!
"""]]

View file

@ -1,24 +0,0 @@
Hello,
while reading the release notes of git 2.11 I noticed a cool new feature has been merged:
> If the filter command (a string value) is defined via
> `filter.<driver>.process` then Git can process all blobs with a
> single filter invocation for the entire life of a single Git
> command.
see the [git documentation][1].
This has been developed in the context of git-lfs (see [PR 1382] [2]).
If I understand correctly how it works this could speed up v6 repos. Looking at the history/website
of git-annex there doesn't seem to be yet any work on this so I though it was worth calling the
attention on the feature.
Thanks a lot for all the work on git-annex, it's a really amazing project! The more I study it the more cool features I discover :)
[1]: https://github.com/git/git/blob/v2.11.0/Documentation/gitattributes.txt#L384
[2]: https://github.com/git-lfs/git-lfs/pull/1382
> [[done]] --[[Joey]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2016-12-13T15:57:05Z"
content="""
Yes, this will make [[smudge]] faster when eg checking out a lot of working
tree changes. I will need to add support for it.
"""]]

View file

@ -1,16 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 3"""
date="2018-08-13T20:24:02Z"
content="""
The "filterdriver" branch implements support for these.
However, it's actually slower than the old interface, because the new
interface requires git-annex read the whole file content from git when
adding a file, and the old interface let it not read any content.
Since the new interface does have capabilities, a new capability could
prevent schepping the content over the pipe, and let the filter driver
refer to the worktree file instead, and respond with the path of a file.
This would be similar to my old patch set for the old interface.
"""]]

View file

@ -1,21 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 3"""
date="2018-10-26T16:21:28Z"
content="""
While `git add` would be a lot slower when using this interface to add
large files, it would make `git checkout` and other commands that update
the work tree a lot faster.
Since the smudge filter is not providing git with the file content any more,
using filterdriver would avoid git running many git-annex smudge processes,
greatly speeding up large checkouts.
Unfortunately, `git annex smudge --update` ends up running the smudge filter
on all files that the clean filter earlier acted on, so even if filterdriver were
used to speed up the clean filter, there would still be one process spawned per
file for the smudge filter.
So some interface improvement is needed before git-annex can usefully use
this.
"""]]

View file

@ -1,45 +0,0 @@
Hi joey,
How about making `annex.addunlocked` configurable similar to `annex.largefiles` so different file types can be configured to be added unlocked and others locked?
The following illustrates a use case:
[[!format bash """
#!/bin/sh -x
# make a repo
export LC_ALL=C.UTF-8
chmod -R +w addunlocked;rm -rf addunlocked
git init addunlocked
cd addunlocked
git annex init
# configure *.txt files to be added unlocked so they stay editable
echo '*.txt annex.addunlocked=true' > .gitattributes
git add .gitattributes
git commit -m "Add .gitattributes"
# make a note
echo bla > notes.txt
git annex add
git annex sync -m "add notes.txt"
# However editing doesn't work as it was added locked
echo blubb >> notes.txt # fails as it was not added unlocked
"""]]
Probably not all matching options (like `copies` for example) make sense or work at all in this context, but at least `include=` would be useful („all files in that dir should be added unlocked always”). For example, in a synced folder for collaboration, PDFs could stay locked to save space, but Spreadsheets and ODT documents for example make sense to be added unlocked by default to stay editable. This could be achieved with something like this:
[[!format bash """
# repo-wide stored in git-annex branch
git annex config --set annex.addunlocked 'include=*.odt or include=**.pdf'
# folder-specific via .gitattributes
echo '*.pdf annex.addunlocked=true' >> .gitattributes # (or 'anything')
echo '*.odt annex.addunlocked=true' >> .gitattributes # (or 'anything')
# repo-specific
git config annex.addunlocked 'include=**/*.odt or include=**/*.pdf'
"""]]
What do you think?
Cheers, Yann
> [[notabug|done]] --[[Joey]]

View file

@ -1,19 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="comment 1"
date="2023-06-06T12:54:35Z"
content="""
[git annex matching options](https://git-annex.branchable.com/git-annex-matching-options/) that make sense for `annex.addunlocked`:
- include
- exclude
- mimetype
- mimeencoding
- largerthan
- smallerthan
- (securehash)
- (inbackend)
All the others won't work AFAICS because location tracking hasn't yet happened at adding time.
"""]]

View file

@ -1,22 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 2"""
date="2023-06-06T16:50:16Z"
content="""
annex.addunlocked can already be set to a [[git-annex-matching-expression]]
and this allows configuring it differently for different filenames, etc.
This has been supported since 7.20191230.
You can already configure annex.addunlocked with `git-annex config`.
Adding gitattributes for configs is problimatic because querying
for them is not fast. They have to be queried for every file. Also the
gitattributes format is not well suited to complex expressions since the
value cannot contain spaces.
The only benefit to supporting it in gitattributes would be to configure it
differently in different branches of the repository.
There was a todo already suggesting this,
[[annex.addunlocked_in_gitattributes]] and I decided to close it.
"""]]

View file

@ -1,10 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="comment 3"
date="2023-06-07T04:49:04Z"
content="""
Heh, didn't check that as I assumed when gitattributes does't work, git annex config won't either. Different branch config is a point but I guess not a huge one, right.
Maybe a note about addunlocked would fit into the docs: https://git-annex.branchable.com/git-annex-add/
"""]]

View file

@ -1,7 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 4"""
date="2023-06-12T20:29:05Z"
content="""
I've updated the man page to document annex.addunlocked.
"""]]

View file

@ -1,33 +0,0 @@
### Please describe the problem.
Changing metadata while being in an active view will not update the view.
### What steps will reproduce the problem?
(inside a repository)
1. Create a file
$ uuidgen >file
2. switch into a view
$ git annex view !blah
$ ls
file
3. changed the metadata the view is based upon
$ git annex metadata -t blah file
$ ls
file
It would be nice/expected that the view gets updated when the metadata changes, hiding 'file' now
### What version of git-annex are you using? On what operating system?
git-annex version: 5.20141024~bpo70+1
on debian wheezy with backports
### Please provide any additional information below.
> [[fixed|done]] --[[Joey]]

View file

@ -1,18 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2015-07-20T17:45:13Z"
content="""
This might be worth adding. But, one of the ways views can be used
is to use file operations to adjust the metadata that is being viewed.
So, when you delete a file from a view, and git commit, git-annex
will remove the metadata that had made the file be in the view.
And, if you copy or move a file in a view to a different subdirectory,
and add and git commit the change, the metadata will be updated to
update the metadata to reflect the files new location.
As such, I see this as a wishlist todo item at best, and will move it from
the bugs list to the todo list.
"""]]

View file

@ -1,10 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="👍 +1 for updating the view when committing"
date="2023-02-03T13:25:21Z"
content="""
I'd also love to see the current view being updated to reflect the new metadata after committing. Workaround is currently to `git switch` back to the main branch and re-make the view with `git annex view bla='*'`.
BTW views are **really** cool, what an awesome idea, joey!
"""]]

View file

@ -1,27 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 3"""
date="2023-02-08T16:29:36Z"
content="""
Another time it would make sense to update the view is after git pull from
elsewhere, which could change the metadata, or change the files present in
the parent branch. I think it would make sense for `git-annex sync` run in
a view to update the view after pulling.
Updating the branch after `git-annex metadata` is run locally is of course
also possible. There is a similarity to updating an adjusted branch after
get/drop. Which has a config annex.adjustedbranchrefresh to tune how
frequently to update the branch. Or the user could just run
`git-annex sync --no-pull --no-push` themselves.
There is probably a lot of scope for optimisation in updating the view
branch, that might be able to get it reasonably quick.
I have not fully thought through it, but basically diffing from the old
parent branch to the new parent to find files that have changed, and
adding/removing those from the view. And also diffing from the old
git-annex branch tree to the new one to get changes to metadata logs,
parsing those and using changes to metadata to also move/delete/add
files to the view branch.
But it would be ok to start with a simple, slow implementation.
"""]]

View file

@ -1,29 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 4"""
date="2023-02-08T19:32:34Z"
content="""
`git-annex sync` when in a view branch will now update it.
Leaving this open for optimising it.
Also because of this problem:
joey@darkstar:~/tmp/m#master(author=_)>git-annex sync
commit
On branch views/master(author=_)
nothing to commit, working tree clean
ok
merge synced/master
fatal: refusing to merge unrelated histories
failed
Looks like it should not be trying to merge the synced/master
branch into the view branch. But, this makes me wonder, does the master branch
get updated with new files pulled from remotes? If not, the view branch
won't be updated to have them either.
Also, I think that it may try to import trees from importree special remotes,
into the view branch. Perhaps those should also get imported but merged into
the master branch...
"""]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="`git annex sync` when in view"
date="2023-02-08T20:17:12Z"
content="""
Right, git refusing to merge unrelated histories is something I also bumped into while developing `thunar-plugins`. There I worked around it by having the *Synchronize* menu item do `git add -A;git commit -m ...;git annex sync --only-annex`, which works fine.
"""]]

View file

@ -1,12 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 6"""
date="2023-02-10T19:49:51Z"
content="""
I've now fixed `git-annex sync`'s other behavior when ran in a view branch
to be acceptable.
I'm going to close this as fixed. But have opened
[[faster_incremental_update_of_view_branch_by_git-annex_sync]] as the
performance could be improved.
"""]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="👍 This made it easier for the Thunar plugin!"
date="2023-02-14T09:35:32Z"
content="""
[`thunar-plugins`](https://gitlab.com/nobodyinperson/thunar-plugins) now detect git annex' support for this (checking if `view` appears in `git annex help sync`, which it didn't before) and does `git annex sync` instead of the `git add -A;git commit;git annex sync --only-annex` workaround in that case. Very nice, joey!
"""]]

View file

@ -1,9 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 8"""
date="2023-02-14T16:17:05Z"
content="""
I'd recommend not relying on the `git-annex help sync` to detect this,
since man pages may not be available. Look for '?=' in
`git-annex view --help`
"""]]

View file

@ -1,3 +0,0 @@
Would it be possible to create a package for Lacie's NacOS?
> [[closing|done]] --[[Joey]]

View file

@ -1,12 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2016-01-20T18:56:36Z"
content="""
If that is a Linux-based NAS, there's a reasonably good chance that one
of the [Linux standalone builds](https://git-annex.branchable.com/install/Linux_standalone/)
of git-annex will run on it.
Actually, from what I can see, it's based on Debian, so you might be able
to just apt-get install git-annex
"""]]

View file

@ -1,14 +0,0 @@
[[!comment format=mdwn
username="db"
subject="comment 2"
date="2016-01-22T19:00:57Z"
content="""
Yes it is Linux:
$ uname -a
Linux nas 3.10.59-svn15282 #1 SMP Fri Jul 31 13:36:10 UTC 2015 x86_64 GNU/Linux
But it does not have apt. And probably not a compiler either.
Is it complicated to install a compiled version manually? Or is it \"self-containing\"? Any instructions for cross compiling on a Mac?
"""]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 3"""
date="2016-01-22T19:39:17Z"
content="""
Get a build from
<https://git-annex.branchable.com/install/Linux_standalone/>
"""]]

View file

@ -1,3 +0,0 @@
I'd like to be able to set a fixed limit on how much storage can be uploaded to a special remote. A use case for this may be that I want to spend no more than Y dollars, on a storage service that charges $X per gigabyte. I would thus set a limit where I a upload would be interrupted with a warning about the limit, and to continue I would need to use a --force option.
> dup of [[Specify_maximum_usable_space_per_remote]]; [[done]] --[[Joey]]

View file

@ -1,9 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2015-07-02T20:01:42Z"
content="""
This totally makes sense to want, but it's rather difficult to implement since
multiple git-annex repos can all be uploading content to the same special
remote, while disconnected from each other.
"""]]

View file

@ -1,11 +0,0 @@
[[!comment format=mdwn
username="mawillcockson"
subject="comment 2"
date="2015-07-18T19:13:03Z"
content="""
Perhaps server-side [git hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks)?
Maybe a git hook script that uses [inotify](https://en.wikipedia.org/wiki/Inotify) for inode size notifications.
I would have no idea how to implement this, though.
"""]]

View file

@ -1,9 +0,0 @@
I noticed that `git annex diffdriver` doesn't make sure that files it tries to diff are actually present. Would it make sense that `git annex diffdriver ...` runs `git annex get` to ensure files are present? 🤔 A `git diff` could then result in a lot of traffic if the user configured the `diffdriver`. But I'd say that users who took their time to configure would be are aware of this or even expect that to happen - after all they want to see the differences to a past version.
A manual workaround is to handle the `get`ting in a custom supplied diffing program.
Context:
- [recently added `git annex diffdriver --text`](https://git-annex.branchable.com/todo/Improving_diffdriver_--text/)
> Duplicate of [[--get_option_for_diffdriver]], so closing [[done]]. --[[Joey]]

View file

@ -1,5 +0,0 @@
It would be nice to be able to upload and download git history with special remotes. This could be a move towards full special remote syncing.
> I feel this is out of scope. git has its own interface to let a program
> be registered as performing a transport, to store a git repository
> anywhere. [[wontfix|done]] --[[Joey]]

View file

@ -1,29 +0,0 @@
Hi joey,
Currently, getting a useful diff between annexed file versions is quite involved [(setting up git-annex diffdriver)](https://git-annex.branchable.com/forum/git-like_git-annex_diff/).
It would be very nice if showing changes between annexed files was a little more straight-forward and ideally without any user config needed. UI suggestions:
- `git annex diff`: would behave exactly like `git diff`, but operatign on both unannexed and annexed contents
- ideally re-implementing all its options (e.g. `--word-diff`, `--word-diff-regex`, etc.)
- would need a diff implementation in Haskell (surely there is one)
- sounds complicated to do TBH
- Teaching `git diff` to use the annexed content instead of the pointer links/files
- software like [`nbstripout`](https://github.com/kynan/nbstripout) passes the git-tracked contents through a filter before diffing. This sounds like git-annex could do the same to add straight-forward `git diff` support without user configuration.
- git-annex already has a `* filter=annex` attribute in place, for text diffing there apparently needs to be a `* diff=annex` attribute and a `[diff "annex"] textconv=git-annex-output-content-instead-of-pointer` config.
- even if the above works, I don't know how to temporarily switch this off without uncommenting the `textconv` e.g. with `git config --edit`. Sometimes you just want to see the actual hashes of old and new file.
Maybe `git annex diffdriver` kind of does part of this, but I don't really understand what it actually does.
Here other posts related to diffing:
- https://git-annex.branchable.com/forum/enabling_git-annex-diffdriver_for_gitk/
- https://git-annex.branchable.com/todo/--get_option_for_diffdriver/
What do you think?
Cheers, Yann
PS: Thank you very much for git-annex, it's awesome! I'm giving a git-annex workshop next weekend [@Tuebix](https://cfp.tuebix.org/tuebix-2023/talk/review/GWRP3UKE3VFKVDG8RNQ8ZZPCZPNZYYWM), really looking forward to it.
> [[fixed|done]] --[[Joey]]

View file

@ -1,28 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2023-06-28T17:43:19Z"
content="""
This works:
echo * diff=text >>.gitattributes
git config diff.text.command "git-annex diffdriver -- sh -c 'echo diff a/\$0 b/\$0; echo \$0; diff -u \$1 \$4 || true' --"
Unfortunatly, the textconv approach will not work for locked files, because
git does not apply the textconv to symlinks. It could be made to work for
unlocked files but the above works for all annexed files.
diffing like this is only useful on text files, and most annexed files
are not text files. That's why the diffdriver command focuses on using some
external diff driver that knows how to diff whatever type of binary file is
being stored in git-annex. So this should certianly not be enabled by
default. It makes sense to enable it in .gitattributes when you have
annexed some textual files.
That command is a bit hard to come up with, with the complex shell quoting.
So rather than try to document it, I made an easier way to do the same
thing:
echo * diff=text >>.gitattributes
git config diff.text.command "git annex diffdriver --text"
"""]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="Awesome, thanks!"
date="2023-06-28T21:09:50Z"
content="""
Awesome, thanks joey!
"""]]

View file

@ -1,21 +0,0 @@
Hi there,
I'm a relatively new to `git-annex` and quite impressed so far.
I've found the command to be somewhat less self-documenting than I'd like it to be for a new user.
Particularly, since it's a `git` subcommand, I'd wish for annex to 'mirror' as many subcommands as possible
with `annex`-enabled equivalents. My chief complaint at the moment is that it is a bit hard to remember the
specific commands for showing remotes (`git annex info` has no equivalent `git info`) and `git annex remote`
should ideally return a list of remotes for parallelism.
Similarly, it'd be nice if some of the commands were a bit nested to match `git` semantics. This would increase discoverability:
For instance, `git annex enableremote` -> `git annex remote enable` or `git annex renameremote -> git annex remote rename`. Then subcommands for dealing with remotes
could be more easily summarized on a single page in the `git-annex-remote` section.
It's worth noting that such changes could happen alongside the current commands without a loss of functionality. Git core
has recently gone through a similar process to simplify the semantics of some of its commands. I'd ask for such changes to be considered.
Daven
> [[wontfix|done]] at least for the listed things, for reasons explained
> in my comment below. --[[Joey]]

View file

@ -1,37 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2023-01-16T17:16:54Z"
content="""
> `git annex info` has no equivalent `git info`
git-annex can't be limited to commands that happen to have equivilant git
commands. `git annex drop` also has no equivilant in git, but is
fundamental to git-annex.
If you're thinking of `git annex info` as equivilant to `git remote` in
listing remotes, that does not consider everything the info command does.
> git annex remote should ideally return a list of remotes for parallelism
`git remote` lists all remotes including git-annex special remotes,
so `git annex remote` would be unnecessary duplication.
> git annex renameremote -> git annex remote rename
This would encourage drawing a false equivilance with `git remote rename`.
I'm also not convinced that stacking subcommands 3 levels deep is a good
idea. The user has to dig through every level to find something then.
There's also an intentional similarity in naming between `git annex init`
and `git annex initremote`, which I think makes sense and helps users
learn and remember the latter command after having first learned the former.
And `enableremote` and `renameremote` then flow naturally from that.
This is, IMHO, a more natural learning flow than searching for strained
equivilances to `git remote` commands.
I do think that `git annex add` has a very good reason to parallel `git
add`, and if there are other git-annnex commands that could directly
parallel a git command like that and don't, that would be worth addressing.
"""]]

View file

@ -1,29 +0,0 @@
[[!comment format=mdwn
username="daven.quinn@d0ed4e0e5e4462d9a74a5d5a8fbd1b17f85db13e"
nickname="daven.quinn"
avatar="http://cdn.libravatar.org/avatar/4811a26fff610f0c9668d183481a7158"
subject="comment 1 response"
date="2023-01-16T21:45:35Z"
content="""
Fair enough, I suppose. However, I think that feedback from early-stage users should be weighted highly, as we interact with \"onboarding\"/\"discoverability\" problems that eventually fade from being users' primary impediments to use.
> git-annex can't be limited to commands that happen to have equivalant git commands.
I'm not suggesting that all commands should have `git` equivalents. Instead, when a commonly used equivalent (or close relative) is available, the name should be mirrored to increase discoverability of common idioms.
> This would encourage drawing a false equivilance with git remote rename.
I'm not quite sure why the equivalence would be false — yes, the commands do somewhat different things. But they both fundamentally rename a remote.
> searching for strained equivilances to git remote commands.
Again, I am not sure the equivalences are so strained. Users should not (and I think broadly won't) expect a git-annex subcommand to do exactly the same thing as a git equivalent. But semantic-level parallelism with git top-level commands, and adopting git's pattern of grouping like functionality into subcommands, could greatly improve discoverability. As it stands, the goals of *preventing confusion between similarly named functionality* and *allowing functionality to be easily found* are in tension.
Another way to frame my suggestion is to consider the layout of the `git-annex` command line help output. Right now, when seeking assistance, the user is presented with a long list of commands and has to hunt for related functionality (`renameremote`, `enableremote`, etc.) within it. In contrast, when I type `git remote --help`, I see all of the commands for managing remotes in a single, shorter output. It is another nesting level, true, but I think a help page entry of `remote - manages git-annex special remotes` would be easier to parse than the current output.
Anyway, I appreciate your work on this system and consideration of user feedback.
Regards,
Daven
"""]]

View file

@ -1,36 +0,0 @@
I think the assistant should have a delay before starting so it doesn't impact on the system boot performance.
I know this can be configured per user (I have it set to 5min), but I think 2min is a sane default.
I don't really know how to submit patches (I can't attach it), so I simply copy it here. It's trivial enough.
[[!format txt """
From bc6b90ce333659bd2511eedd4ab9067241f73780 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jon=20Ander=20Pe=C3=B1alba?= <jonander.penalba@gmail.com>
Date: Wed, 28 Oct 2015 12:00:51 +0100
Subject: [PATCH] When autostarting the assistant on boot delay the execution
2min
---
Assistant/Install/AutoStart.hs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Assistant/Install/AutoStart.hs b/Assistant/Install/AutoStart.hs
index 5745030..6a09c3a 100644
--- a/Assistant/Install/AutoStart.hs
+++ b/Assistant/Install/AutoStart.hs
@@ -35,6 +35,6 @@ fdoAutostart command = genDesktopEntry
"Git Annex Assistant"
"Autostart"
False
- (command ++ " assistant --autostart")
+ (command ++ " assistant --autostart --startdelay=120")
Nothing
[]
--
2.6.2
"""]]
> [[done]] --[[Joey]]

View file

@ -1,17 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2015-11-02T15:14:20Z"
content="""
There's actually an undocumented default startdelay of 5 seconds when using
autostart. I've now documented it.
Maybe 5 seconds is too little. OTOH, 2 minutes may be a bit too much;
if the user is booting up their computer to access a new file in their
annex they'd expect it to start syncing ASAP.
I think my justification for the 5 seconds default was that about how long
it seems to take a typical desktop system to get loaded (after the login
screen) and for the user to open a web browser, on reasonably modern
hardware. Even windows in an emulator doesn't take much longer than that.
"""]]

View file

@ -1,19 +0,0 @@
It would be nice if a couple of additional environment variables to be set for hook uses.
In particular:
GIT_ANNEX_DIRECT=`git config annex.direct`
and
GIT_TOP_LEVEL=`git rev-parse --show-toplevel`
I've made some changes to flickrannex to allow the sub-directories above the uploaded image to be added as tags. This change has been merged into trunk: [[https://github.com/TobiasTheViking/flickrannex]]
What I needed was both the environment variables mentioned above. One is set as part of the annex-hook and the other I guestimate from the file path. If it was set in git-annex it would be much cleaner (and accurate). So...I think this info would be useful for other hook.
> I think this was referring to the old hook special remote. External
> special remotes have supplanted that. And when using an external special
> remote you can query for such data once when starting your special remote
> program, so no need for git-annex to do it. [[wontfix|done]] --[[Joey]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="209.250.56.154"
subject="comment 1"
date="2014-03-18T19:36:08Z"
content="""
Is this still relevant?
"""]]

View file

@ -1,9 +0,0 @@
In certain situations different client annexes might get the same remote repository added, but before being synced.
Once the two clients sync they will both have two remotes with the same name. But only one UUID will have any content(Assuming only one client pushed).
It would be nice to have some (automatic?) way to resolve this conflict.
Not sure if anything sane can be done if both clients have pushed?
> [[done]] see comment --[[Joey]]

View file

@ -1,16 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2023-01-16T17:54:51Z"
content="""
This does not make sense to me. If the remote is a git repo,
it will be initialized by git-annex only once, so there will only be one
UUID. The second "client" that uses that remote will see the earlier UUID.
Unless there were some kind of a race in initializing the same repo
concurrently, but that seems unlikely and if so this is lacking in any
details about it.
I'm going to close this since it does not make sense, but do followup if
you remember what this was supposed to be about.
"""]]

View file

@ -1,30 +0,0 @@
```
From 1a67bc14aa74262a304e7b6bd6372b0eca40486e Mon Sep 17 00:00:00 2001
From: Reiko Asakura <asakurareiko@protonmail.ch>
Date: Fri, 30 Sep 2022 10:56:17 -0400
Subject: [PATCH] Fix annex.adviceNoSshCaching having no effect
git will always return option names in lowercase
---
Types/GitConfig.hs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Types/GitConfig.hs b/Types/GitConfig.hs
index 44629d412..4b892bd5f 100644
--- a/Types/GitConfig.hs
+++ b/Types/GitConfig.hs
@@ -265,7 +265,7 @@ extractGitConfig configsource r = GitConfig
| otherwise = Nothing
in mapMaybe get (M.toList (Git.config r))
]
- , annexAdviceNoSshCaching = getbool (annexConfig "adviceNoSshCaching") True
+ , annexAdviceNoSshCaching = getbool (annexConfig "advicenosshcaching") True
}
where
getbool k d = fromMaybe d $ getmaybebool k
--
2.30.2
```
> Thanks for the fix! [[done]] --[[Joey]]

View file

@ -1,76 +0,0 @@
This patch allows hooks to be run in WSL1 for a repo created on an NTFS volume but I think it also applies in general.
```
From d4587806d8fd1ea767a8effc06edc1a4e10f5bca Mon Sep 17 00:00:00 2001
From: Reiko Asakura <asakurareiko@protonmail.ch>
Date: Sun, 25 Sep 2022 15:21:24 -0400
Subject: [PATCH] Run freeze and thaw hooks on crippled filesystems
The user sets these hooks deliberately so they should always be run. For
example this allows hooks to be used to manage file permissions on NTFS
volumes in WSL1.
---
Annex/Perms.hs | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/Annex/Perms.hs b/Annex/Perms.hs
index 6681da7e0..69e344452 100644
--- a/Annex/Perms.hs
+++ b/Annex/Perms.hs
@@ -154,7 +154,7 @@ createWorkTreeDirectory dir = do
- that happens with write permissions.
-}
freezeContent :: RawFilePath -> Annex ()
-freezeContent file = unlessM crippledFileSystem $
+freezeContent file =
withShared $ \sr -> freezeContent' sr file
freezeContent' :: SharedRepository -> RawFilePath -> Annex ()
@@ -163,7 +163,7 @@ freezeContent' sr file = freezeContent'' sr file =<< getVersion
freezeContent'' :: SharedRepository -> RawFilePath -> Maybe RepoVersion -> Annex ()
freezeContent'' sr file rv = do
fastDebug "Annex.Perms" ("freezing content " ++ fromRawFilePath file)
- go sr
+ unlessM crippledFileSystem $ go sr
freezeHook file
where
go GroupShared = if versionNeedsWritableContentFiles rv
@@ -253,7 +253,7 @@ thawContent' sr file = do
- permissions. -}
thawPerms :: Annex () -> Annex () -> Annex ()
thawPerms a hook = ifM crippledFileSystem
- ( void (tryNonAsync a)
+ ( hook >> void (tryNonAsync a)
, hook >> a
)
@@ -263,9 +263,9 @@ thawPerms a hook = ifM crippledFileSystem
- file.
-}
freezeContentDir :: RawFilePath -> Annex ()
-freezeContentDir file = unlessM crippledFileSystem $ do
+freezeContentDir file = do
fastDebug "Annex.Perms" ("freezing content directory " ++ fromRawFilePath dir)
- withShared go
+ unlessM crippledFileSystem $ withShared go
freezeHook dir
where
dir = parentDir file
@@ -287,9 +287,9 @@ createContentDir dest = do
unlessM (liftIO $ R.doesPathExist dir) $
createAnnexDirectory dir
-- might have already existed with restricted perms
- unlessM crippledFileSystem $ do
+ do
thawHook dir
- liftIO $ allowWrite dir
+ unlessM crippledFileSystem $ liftIO $ allowWrite dir
where
dir = parentDir dest
--
2.30.2
```
> [[done]] --[[Joey]]

View file

@ -1,7 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2022-09-26T17:01:33Z"
content="""
Thank you for this patch. I've applied it.
"""]]

View file

@ -1,3 +0,0 @@
Simple "drop" have it, but no for "dropunused". Missed?
> [[fixed|done]] --[[Joey]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="nobodyinperson"
avatar="http://cdn.libravatar.org/avatar/736a41cd4988ede057bae805d000f4f5"
subject="git annex drop --unused --jobs=cpus works"
date="2023-07-15T05:53:43Z"
content="""
If you want to drop all unused files, `git annex unused;git annex drop --unused --jobs=cpus` works.
"""]]

View file

@ -1,17 +0,0 @@
Please add the feature/switch `--json-progress` to `git annex fsck --json`.
For a basic version, it would be nice to show the percentage using the number of processed chunks / total number of chunks for a given file while calculating checksum.
Let's not forget that a file on a remote can be fsck-ed when using `--from <remote>`. In this case if the file is not present locally, the file must be downloaded first (`--json-progress` is already supported for `get`). Usually this takes much-much longer as the checksum calculation. When checking a large file (~1Gb) on a not too fast remote, it's quite a time for the first "response" that something is happening when using the `--json` switch. To be exact, the first and only response is that the check has finished (happy way). It would be nice to see the json progress of the download+checksum calculation.
Test environment:
Docker Community 20.10.5
Ubuntu 20.04.2 LTS (Focal Fossa)
git-annex version: 8.20210224-gf951847c6 (kitenet: SHA256E-s51232145--1e57d2e334cffdb3c3874785cfba4f6d5fc521808d0b1deef4fb68160dd88d48.tar.gz)
> [[done]] via incremental checksum while downloading, for nearly all
> remotes. --[[Joey]]

View file

@ -1,11 +0,0 @@
[[!comment format=mdwn
username="parhuzamos"
avatar="http://cdn.libravatar.org/avatar/79ed445f40e89bd8ba696bab3942ec56"
subject="comment 1"
date="2021-05-24T09:33:50Z"
content="""
Is this possible? Or makes no sense? Do you plan implementing this?
Thank you,
Bence
"""]]

View file

@ -1,19 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 2"""
date="2022-06-28T17:00:33Z"
content="""
It seems problimatic to have json progress for both downloading the file
and for checksumming it. I don't know how that json would look.
In the meantime, though, git-annex has changed to checksum files while they
are being downloaded from most remotes, and when it can do that, fsck
--from avoids the separate checksumming step.
While some special remotes do not support that, it's a very limited list:
only bittorrent on linux, and adb, external, gcrypt, hook, and rsync on
other OSs.
This makes me think that complicating the json output to display two
different kinds of progress is probably not worth the complication.
"""]]

View file

@ -1,20 +0,0 @@
[[!comment format=mdwn
username="jstritch"
avatar="http://cdn.libravatar.org/avatar/56756b34ff409071074762951d270002"
subject="comment 3"
date="2023-07-11T18:56:39Z"
content="""
The --json-progress flag should produce progress. I do not understand why it would be a problem to intermix types of 'action' in the output. If file A is uploaded and file B is downloaded and checksummed, that's (at least) three different progress objects to produce. This is exactly the type of information I want to see on the screen instead of wondering if it's stuck. I would also apply this pattern to sync and friends.
Upload A 35%
Upload A 100%
Download B 100%
Checksum B 50%
Checksum B 100%
Go ahead and make per-file json error results available and describe in the documentation.
"""]]

View file

@ -1,3 +0,0 @@
Add an armel build like the i386ancient build.
> [[wontfix|done]] --[[Joey]]

View file

@ -1,14 +0,0 @@
[[!comment format=mdwn
username="rustikus@9db90d0c115a1825e2f1e5f15257ec1298a6c7b6"
nickname="rustikus"
avatar="http://cdn.libravatar.org/avatar/6fe372a7a46198829723c408af75c8cc"
subject="Any update or help needed?"
date="2017-01-12T13:40:38Z"
content="""
Hi,
is there any update? I do have an older version of Synology DiskStation (DS211+) which does have this CPU. Anything I can do to help?
Disclaimer: I am quite familiar with Linux but I am no expert in programming with haskel.
Thanks!
"""]]

View file

@ -1,9 +0,0 @@
[[!comment format=mdwn
username="http://schnouki.net/"
nickname="Schnouki"
avatar="http://cdn.libravatar.org/avatar/5f6406e9db28564121169f0051645b8c30a12a20ca7bc40287ac9bf2cd3ad283"
subject="comment 2"
date="2017-02-02T22:05:23Z"
content="""
+1. Can't upgrade the kernel on my NAS (Synology DS413j, running Linux 2.6.32...), so I'm stuck with git-annex 5.20150731...
"""]]

View file

@ -1,8 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 3"""
date="2017-02-20T16:22:58Z"
content="""
The build is set up; it's not run to completion yet, but fingers crossed it
will eventually.
"""]]

View file

@ -1,12 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 4"""
date="2018-10-03T16:58:26Z"
content="""
Unfortunately the build failed in an obscure way while installing the deps
of git-annex back when I tried to set it up.
I tried it again today, and there's no longer a binary of stack for armel,
only for armhf, so I don't think this build can be provided, at least not
without quite a lot of backporting.
"""]]

View file

@ -1,8 +0,0 @@
I have a bunch of files I want to track with `git-annex` that are sitting in an external drive. I have a repository sitting on my laptop, but I don't actually have enough free disk space on my laptop to import the files. Really, I just want the file content to be sitting in a special remote. I was thinking the following workflow could be useful:
cd ~/my-laptop-repo
git-annex import --to=s3-remote /mnt/usb-drive/myfiles
The proposed `--to=remote` option would add the files to my repo as `import` normally does, but it wouldn't every keep the content in the repo, the only copy would now sit in `s3-remote`. As little disk space as possible would be staged temporarily in `~/my-laptop-repo`. Perhaps the easiest option would be to import a file normally, but them immediately do a `move` to `s3-remote`? But, ideally for larger files, we would want to stream them directly from `/mnt/usb-drive/myfiles` to `s3-remote` without ever staging them at `~/my-laptop-repo`.
> [[done]] --[[Joey]]

View file

@ -1,9 +0,0 @@
[[!comment format=mdwn
username="Ilya_Shlyakhter"
avatar="http://cdn.libravatar.org/avatar/1647044369aa7747829c38b9dcc84df0"
subject="comment 1"
date="2019-01-14T16:11:39Z"
content="""
Cf. [[todo/import_tree]].
"""]]

View file

@ -1,9 +0,0 @@
[[!comment format=mdwn
username="lykos@d125a37d89b1cfac20829f12911656c40cb70018"
nickname="lykos"
avatar="http://cdn.libravatar.org/avatar/085df7b04d3408ba23c19f9c49be9ea2"
subject="comment 2"
date="2019-01-21T11:57:07Z"
content="""
Import tree won't help here. Actually I've got the same problem on one of my machines. I'm currently using a script that imports a bunch of files and moves them to the remote, then imports some more files and so on. It's quite cumbersome, to be honest. So yes, I'd appreciate `git annex import --to <remote>` as well. (Same with `git annex move --from remote-a --to remote-b` actually.)
"""]]

View file

@ -1,14 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 3"""
date="2019-01-22T15:39:49Z"
content="""
Import tree + move --from --to would be equivilant functionality to import --to.
The directory you want to import "to" would be set up as a directory
special remote and import tree used on it.
However, it seems to me that if I wanted to accomplish this today, I'd
simply make a clone of my git-annex repository onto the external drive,
move the files I want into that clone (a cheap operation as it's the same
drive), and `git annex copy --to s3-remote`
"""]]

View file

@ -1,40 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 4"""
date="2019-11-19T16:58:06Z"
content="""
Since git-annex does now support importtree from directory special remotes,
you can almost get what you said you want by:
git annex initremote usb-drive type=directory directory=/mnt/usb-drive/myfiles \
exporttree=yes importtree=yes encryption=none
Then `git annex import master --from usb-drive` will import the files
into a usb-drive/master branch that you can merge. And you can run it
repeatedly to import new and changed files from the directory.
So then you have the files sitting in a special remote like you wanted.
Namely the directory special remote on the USB drive. Only problem is that
importing the files does also copy them into the git-annex repo. So you'd
have to drop the files again, assuming you had disk space for them all
to begin with.
I wonder, if it were possible to import the files without add their content
to the repo you ran the import from, leaving them on the special remote,
would that meet your use case? That seems like something it would be
possible to add.
It would still probably have to copy the file into the local repo, in order
to hash it, and then just delete the content from the local repo. Of course
when the file is in a directory on the local system, that's not strictly
necessary; it could do the hashing of the file in place. But that would
need an extension to the special remote API to hash a file.
But like I said in my other comment, I'd just clone my git-annex repo onto the
drive and add the files to the repo there. Avoids all this complication.
You'd need to provide a good justification for why you can't do that for
me to pursue this any further.
(As far as adding a --to switch to import, [[transitive_transfers]]
discusses this kind of thing, and some issues with implementing that.)
"""]]

View file

@ -1,14 +0,0 @@
[[!comment format=mdwn
username="joey"
subject="""comment 5"""
date="2023-06-23T16:38:50Z"
content="""
It's now possible to `git-annex import --no-content --from
a-directory-special-remote`. So then you have the files sitting on the
external drive and not filling up the git repository.
And `git-annex copy --from foo --to bar` is also supported, so you can
use that to send the files over the S3 or wherever.
So, I think this todo can be closed.
"""]]

View file

@ -1,5 +0,0 @@
Should `annex.gitaddtoannex` and `annex.addsmallfiles` be [[`git-annex-config`|git-annex-config]] settings, given that `annex.largefiles`, `annex.dotfiles` and `annex.addunlocked` already are?
Also, [maybe](https://git-annex.branchable.com/todo/Avoid_lengthy___34__Scanning_for_unlocked_files_...__34__/#comment-85cb4d3eac345df7b08a31ea4bd810f6) make `annex.supportunlocked` a `git-annex-config` setting as well.
> [[rejected|done]] --[[Joey]]

View file

@ -1,11 +0,0 @@
[[!comment format=mdwn
username="https://christian.amsuess.com/chrysn"
nickname="chrysn"
avatar="http://christian.amsuess.com/avatar/c6c0d57d63ac88f3541522c4b21198c3c7169a665a2f2d733b4f78670322ffdc"
subject="+1 on supportunlocked in git-annex config"
date="2021-07-09T15:25:53Z"
content="""
supportunlocked would definitely make sense; it can help protect against users accidentally checking in a file in the wrong mode even though it doesn't fit the repo's workflows.
The alternative to setting this across all repos using git-annex config, at least in my workflows, would be to set a git hook to reject pushes (to master or synced/master) that contain unlocked files, but that sounds way more complex.
"""]]

Some files were not shown because too many files have changed in this diff Show more