summaryrefslogtreecommitdiff
path: root/Command
Commit message (Collapse)AuthorAge
* sync: Fix committing when in a direct mode repo that has no HEAD ref.Gravatar Joey Hess2015-03-04
| | | | | | | | Seen for example, a newly checked out git submodule. In this case, .git/HEAD is a raw sha, rather than the usual reference to a ref. Removed currentSha in passing, since it was a more roundabout way of doing what headSha does, and headSha is more robust.
* fix innaccurate commentGravatar Joey Hess2015-03-04
|
* When re-execing git-annex, use current program location, rather than ↵Gravatar Joey Hess2015-02-28
| | | | | | | | | | | | | | | | | | ~/.config/git-annex/program, when possible. Most of the time, there will be no discreprancy between programPath and readProgramFile. But, the programFile might have been written by an old version of git-annex that is still installed, while a newer one is currently running. In this case, we want to run the same one that's currently running. This is especially important for things like the GIT_SSH=git-annex used for ssh connection caching. The only code that still uses readProgramFile directly is the upgrade code, which needs to know where the standalone git-annex was installed, in order to upgrade it.
* sync: As well as the synced/git-annex push, attempt a git-annex:git-annex ↵Gravatar Joey Hess2015-02-27
| | | | | | | | | | | push, as long as the remote branch is an ancestor of the local branch, to better support bare git repos. See my comment in the bug report for analysis; basically this is safe because it's a non-forced push, so won't lose history. Even if it was a forced push or somehow races, things will eventually become consistent and no git-annex branch info will be lost. (This used to be done, but it forgot to do it since version 4.20130909.)
* unannex: Refuse to unannex when repo is too new to have a HEADGravatar Joey Hess2015-02-25
| | | | | | In this case there must be staged changes in the index (if there is anything to unannex), and the unannex code path needs to run with a clean index.
* fsck: Multiple incremental fscks of different repos (some remote) can now be ↵Gravatar Joey Hess2015-02-17
| | | | in progress at the same time in the same repo without it getting confused about which files have been checked for which remotes.
* avoid crash when starting fsck --incremental when one is already runningGravatar Joey Hess2015-02-17
| | | | | | | | | | | Turns out sqlite does not like having its database deleted out from underneath it. It might suffice to empty the table, but I would rather start each fsck over with a new database, so I added a lock file, and running incremental fscks use a shared lock. This leaves one concurrency bug left; running two concurrent fsck --more will lead to: "SQLite3 returned ErrorBusy while attempting to perform step." and one or both will fail. This is a concurrent writers problem.
* commit new transaction after 60 secondsGravatar Joey Hess2015-02-16
| | | | | | | | | | | | | | Database.Handle can now be given a CommitPolicy, making it easy to specify transaction granularity. Benchmarking the old git-annex incremental fsck that flips sticky bits to the new that uses sqlite, running in a repo with 37000 annexed files, both from cold cache: old: 6m6.906s new: 6m26.913s This commit was sponsored by TasLUG.
* commit more transactions when fsckingGravatar Joey Hess2015-02-16
| | | | | | This makes interrupt and resume work, robustly. But, incremental fsck is slowed down by all those transactions..
* convert incremental fsck to using sqlite databaseGravatar Joey Hess2015-02-16
| | | | | | | | | | | | | | | | | Did not keep backwards compat for sticky bit records. An incremental fsck that is already in progress will start over on upgrade to this version. This is not yet ready for merging. The autobuilders need to have sqlite installed. Also, interrupting a fsck --incremental does not commit the database. So, resuming with fsck --more restarts from beginning. Memory: Constant during a fsck of tens of thousands of files. (But, it does seem to buffer whole transation in memory, so may really scale with number of files.) CPU: ?
* propigate ssh-options everywhere ssh caching is usedGravatar Joey Hess2015-02-12
| | | | | | | | | * sync: Use the ssh-options git config when doing git pull and push. * remotedaemon: Use the ssh-options git config. Note that the rename env var means that if a new git-annex calls an old one for git-annex ssh, or a new calls an old, nothing much will go wrong; just ssh caching won't happen.
* fix compile warningGravatar Joey Hess2015-02-12
|
* sync, assistant: Include repository name in head branch commit message.Gravatar Joey Hess2015-02-11
| | | | | | Note that while the assistant detects changes made to remote names, I left the commit message fixed rather than calculating it after every commit. It doesn't seem worth the CPU to do the latter.
* metadata: When setting metadata, do not recurse into directories by default, ↵Gravatar Joey Hess2015-02-10
| | | | since that can be surprising behavior and difficult to recover from. The old behavior is available by using --force.
* fsck --from: If a download from a remote fails, propigate the failure.Gravatar Joey Hess2015-02-10
|
* webapp: Fix reversion in opening webapp when starting it manually inside a ↵Gravatar Joey Hess2015-02-09
| | | | repository.
* better option handlingGravatar Joey Hess2015-02-08
| | | | At least it avoids the big truth table lookup
* import: Avoid checksumming file twice when run in the default or --duplicate ↵Gravatar Joey Hess2015-02-08
| | | | | | | | | mode. --deduplicate, --skip-duplicates, and --clean-duplicates still checksum the file twice, the first time to determine if it's a duplicate. This cannot be easily merged with the checksumming done to add the file, since the file needs to be locked down before that second checksum is taken.
* The file matching options are now only accepted by commands that can ↵Gravatar Joey Hess2015-02-06
| | | | actually use them.
* groupwanted: New command to set the groupwanted preferred content expression.Gravatar Joey Hess2015-02-06
|
* Revert "avoid using MissingH's HVFS layer"Gravatar Joey Hess2015-01-28
| | | | | | | | This reverts commit 961b5d4d997999485e7b696416574cd0f8663f88. This broke unit and test suite cleanup. The difference is that dirContentsRecursive only returns files, but this needs to also operate on directories.
* implement annex.tune.branchhash1Gravatar Joey Hess2015-01-28
| | | | | | | | I hope this doesn't impact speed much -- it does have to pull out a value from Annex state every time it accesses the branch now. The test case I dropped has never caught any problems that I can remember, and would have been rather difficult to convert.
* groundwork for parameterizing hash depthGravatar Joey Hess2015-01-28
|
* Repository tuning parameters can now be passed when initializing a ↵Gravatar Joey Hess2015-01-27
| | | | | | | | | | repository for the first time. * init: Repository tuning parameters can now be passed when initializing a repository for the first time. For details, see http://git-annex.branchable.com/tuning/ * merge: Refuse to merge changes from a git-annex branch of a repo that has been tuned in incompatable ways.
* remove unused paramGravatar Joey Hess2015-01-27
|
* remove debug printGravatar Joey Hess2015-01-23
|
* addurl: When a Content-Disposition header suggests a filename to use, addurl ↵Gravatar Joey Hess2015-01-22
| | | | will consider using it, if it's reasonable and doesn't conflict with an existing file. (--file overrides this)
* avoid using MissingH's HVFS layerGravatar Joey Hess2015-01-21
|
* update my email address and homepage urlGravatar Joey Hess2015-01-21
|
* on second thought, InodeCache should use getFileSizeGravatar Joey Hess2015-01-20
| | | | | | | | This is necessary for interop between inode caches created on unix and windows. Which is more important than supporting inodecaches for large keys with the wrong size, which are broken anyway. There should be no slowdown from this change, except on Windows.
* add getFileSize, which can get the real size of a large file on WindowsGravatar Joey Hess2015-01-20
| | | | | | | | | | | | | | Avoid using fileSize which maxes out at just 2 gb on Windows. Instead, use hFileSize, which doesn't have a bounded size. Fixes support for files > 2 gb on Windows. Note that the InodeCache code only needs to compare a file size, so it doesn't matter it the file size wraps. So it has been left as-is. This was necessary both to avoid invalidating existing inode caches, and because the code passed FileStatus around and would have become more expensive if it called getFileSize. This commit was sponsored by Christian Dietrich.
* Fix wording of message displayed when unable to get a file that is available ↵Gravatar Joey Hess2015-01-16
| | | | in untrusted repositories.
* devblogGravatar Joey Hess2015-01-13
|
* implemented old Richih wishlist about remote/uuid infoGravatar Joey Hess2015-01-13
| | | | | | | | * info: Can now display info about a given uuid. * Added to remote/uuid info: Count of the number of keys present on the remote, and their size. This is rather expensive to calculate, so comes last and --fast will disable it. * Git remote info now includes the date of the last sync with the remote.
* revert parentDir changeGravatar Joey Hess2015-01-09
| | | | | | | | Reverts 2bba5bc22d049272d3328bfa6c452d3e2e50e86c Unfortunately, this caused breakage on Windows, and possibly elsewhere, because parentDir and takeDirectory do not behave the same when there is a trailing directory separator.
* handle sync's use of setCurrentDirectory to work with relative pathsGravatar Joey Hess2015-01-06
| | | | | | I think this is the last problimatic setCurrentDirectory. I also audited for extrnal commands that git-annex might run with cwd = foo, and did not find any that were passed any FilePath that might be absolute.
* Merge branch 'master' into relativepathsGravatar Joey Hess2015-01-06
|\
| * fix view generation code to work when run in a subdirectory; no longer needs ↵Gravatar Joey Hess2015-01-06
| | | | | | | | to setCurrentDirectory to top of repo
* | Merge branch 'master' into relativepathsGravatar Joey Hess2015-01-06
|\| | | | | | | | | | | Conflicts: Locations.hs debian/changelog
| * made parentDir return a Maybe FilePath; removed most uses of itGravatar Joey Hess2015-01-06
| | | | | | | | | | | | | | | | parentDir is less safe than takeDirectory, especially when working with relative FilePaths. It's really only useful in loops that want to terminate at / This commit was sponsored by Audric SCHILTKNECHT.
* | Switch to using relative paths to the git repository.Gravatar Joey Hess2015-01-06
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | This allows the git repository to be moved while git-annex is running in it, with fewer problems. On Windows, this avoids some of the problems with the absurdly small MAX_PATH of 260 bytes. In particular, git-annex repositories should work in deeper/longer directory structures than before. See http://git-annex.branchable.com/bugs/__34__git-annex:_direct:_1_failed__34___on_Windows/ There are several possible ways this change could break git-annex: 1. If it changes its working directory while it's running, that would be Bad News. Good news everyone! git-annex never does so. It would also break thread safety, so all such things were stomped out long ago. 2. parentDir "." -> "" which is not a valid path. I had to fix one instace of this, and I should probably wipe all calls to parentDir out of the git-annex code base; it was never a good idea. 3. Things like relPathDirToFile require absolute input paths, and code assumes that the git repo path is absolute and passes it to it as-is. In the case of relPathDirToFile, I converted it to not make this assumption. Currently, the test suite has 16 failures.
* sync: Fix an edge case where syncing in a bare repository would try to merge ↵Gravatar Joey Hess2015-01-05
| | | | | | | | and so fail. In the case where a remote of the bare repo has a fetch = configuration, refs/remotes/origin/master will exist, and so the merge code path tried to run in the bare repo.
* Avoid re-checksumming when migrating from hash to hashE backend. Closes: #774494Gravatar Joey Hess2015-01-04
|
* unlock: Don't allow unlocking files that have never been committed to git beforeGravatar Joey Hess2015-01-02
| | | | | Avoids an intractable problem that prevents the pre-commit hook from telling if such a file is intended to be an annexed file or not.
* cleanupGravatar Joey Hess2014-12-29
|
* setpresentkey: A new plumbing-level command.Gravatar Joey Hess2014-12-29
|
* fix addurl behavior when location and url logs are inconsistentGravatar Joey Hess2014-12-29
| | | | | | | | | | | | | | | | | The url log could have an url for a key, while the location log thinks it's not present in the web. In this case, addurl --file url would not do anything. Fixed it to re-add the web as a location. I don't know how this situation could arise, but I saw it in the wild in the conference_proceedings repo, affecting key URL-s17806003--http://mirror.linux.org.au/pub/linux.conf.au/2014/Wednesday/53-Building_Effective_Alliances_around_the_Trans-Pacific_Partnershi-c0505b631127ccc67e38e637344d988e Investigating the presence log, it looked like that key was originally listed as present in the web, then in commit 56abf9e9f3e691ed9d83513037d4019313321ca3 someone else's git-annex set it and some other things to not present in the web. It would be interesting to know what that user did, but I doubt I'll be able to find out. All I can tell from this investigation is that the inconsistency was not introduced when originally addurl-ing the url.
* sync: Now supports remote groups, the same way git remote update does.Gravatar Joey Hess2014-12-29
|
* vicfg: Avoid crashing on badly encoded config data.Gravatar Joey Hess2014-12-22
|
* fix temp uriGravatar Joey Hess2014-12-17
| | | | should be the loguri