Merge branch 'master' into tor
This commit is contained in:
commit
2fb6fd7434
30 changed files with 655 additions and 52 deletions
|
@ -15,6 +15,14 @@ git-annex (6.20161119) UNRELEASED; urgency=medium
|
|||
does not support graphical display, while xdot does.
|
||||
* Debian: xdot is a better interactive viewer than dot, so Suggest
|
||||
xdot, rather than graphviz.
|
||||
* rmurl: Multiple pairs of files and urls can be provided on the
|
||||
command line.
|
||||
* rmurl: Added --batch mode.
|
||||
* fromkey: Accept multiple pairs of files and keys.
|
||||
Thanks, Daniel Brooks.
|
||||
* rekey: Added --batch mode.
|
||||
* add: Stage modified non-large files when running in indirect mode.
|
||||
(This was already done in v6 mode and direct mode.)
|
||||
|
||||
-- Joey Hess <id@joeyh.name> Mon, 21 Nov 2016 11:27:50 -0400
|
||||
|
||||
|
|
|
@ -41,9 +41,6 @@ optParser desc = AddOptions
|
|||
)
|
||||
<*> parseBatchOption
|
||||
|
||||
{- Add acts on both files not checked into git yet, and unlocked files.
|
||||
-
|
||||
- In direct mode, it acts on any files that have changed. -}
|
||||
seek :: AddOptions -> CommandSeek
|
||||
seek o = allowConcurrentOutput $ do
|
||||
matcher <- largeFilesMatcher
|
||||
|
@ -59,10 +56,9 @@ seek o = allowConcurrentOutput $ do
|
|||
NoBatch -> do
|
||||
let go a = a gofile (addThese o)
|
||||
go (withFilesNotInGit (not $ includeDotFiles o))
|
||||
ifM (versionSupportsUnlockedPointers <||> isDirect)
|
||||
( go withFilesMaybeModified
|
||||
, go withFilesOldUnlocked
|
||||
)
|
||||
go withFilesMaybeModified
|
||||
unlessM (versionSupportsUnlockedPointers <||> isDirect) $
|
||||
go withFilesOldUnlocked
|
||||
|
||||
{- Pass file off to git-add. -}
|
||||
startSmall :: FilePath -> CommandStart
|
||||
|
|
|
@ -20,16 +20,17 @@ import Network.URI
|
|||
cmd :: Command
|
||||
cmd = notDirect $ notBareRepo $
|
||||
command "fromkey" SectionPlumbing "adds a file using a specific key"
|
||||
(paramPair paramKey paramPath)
|
||||
(paramRepeating (paramPair paramKey paramPath))
|
||||
(withParams seek)
|
||||
|
||||
seek :: CmdParams -> CommandSeek
|
||||
seek [] = withNothing startMass []
|
||||
seek ps = do
|
||||
force <- Annex.getState Annex.force
|
||||
withWords (start force) ps
|
||||
withPairs (start force) ps
|
||||
|
||||
start :: Bool -> [String] -> CommandStart
|
||||
start force (keyname:file:[]) = do
|
||||
start :: Bool -> (String, FilePath) -> CommandStart
|
||||
start force (keyname, file) = do
|
||||
let key = mkKey keyname
|
||||
unless force $ do
|
||||
inbackend <- inAnnex key
|
||||
|
@ -37,10 +38,11 @@ start force (keyname:file:[]) = do
|
|||
"key ("++ keyname ++") is not present in backend (use --force to override this sanity check)"
|
||||
showStart "fromkey" file
|
||||
next $ perform key file
|
||||
start _ [] = do
|
||||
|
||||
startMass :: CommandStart
|
||||
startMass = do
|
||||
showStart "fromkey" "stdin"
|
||||
next massAdd
|
||||
start _ _ = giveup "specify a key and a dest file"
|
||||
|
||||
massAdd :: CommandPerform
|
||||
massAdd = go True =<< map (separate (== ' ')) . lines <$> liftIO getContents
|
||||
|
|
|
@ -25,15 +25,39 @@ cmd = notDirect $
|
|||
command "rekey" SectionPlumbing
|
||||
"change keys used for files"
|
||||
(paramRepeating $ paramPair paramPath paramKey)
|
||||
(withParams seek)
|
||||
(seek <$$> optParser)
|
||||
|
||||
seek :: CmdParams -> CommandSeek
|
||||
seek = withPairs start
|
||||
data ReKeyOptions = ReKeyOptions
|
||||
{ reKeyThese :: CmdParams
|
||||
, batchOption :: BatchMode
|
||||
}
|
||||
|
||||
start :: (FilePath, String) -> CommandStart
|
||||
start (file, keyname) = ifAnnexed file go stop
|
||||
optParser :: CmdParamsDesc -> Parser ReKeyOptions
|
||||
optParser desc = ReKeyOptions
|
||||
<$> cmdParams desc
|
||||
<*> parseBatchOption
|
||||
|
||||
-- Split on the last space, since a FilePath can contain whitespace,
|
||||
-- but a Key very rarely does.
|
||||
batchParser :: String -> Either String (FilePath, Key)
|
||||
batchParser s = case separate (== ' ') (reverse s) of
|
||||
(rk, rf)
|
||||
| null rk || null rf -> Left "Expected: \"file key\""
|
||||
| otherwise -> case file2key (reverse rk) of
|
||||
Nothing -> Left "bad key"
|
||||
Just k -> Right (reverse rf, k)
|
||||
|
||||
seek :: ReKeyOptions -> CommandSeek
|
||||
seek o = case batchOption o of
|
||||
Batch -> batchInput batchParser (batchCommandAction . start)
|
||||
NoBatch -> withPairs (start . parsekey) (reKeyThese o)
|
||||
where
|
||||
parsekey (file, skey) =
|
||||
(file, fromMaybe (giveup "bad key") (file2key skey))
|
||||
|
||||
start :: (FilePath, Key) -> CommandStart
|
||||
start (file, newkey) = ifAnnexed file go stop
|
||||
where
|
||||
newkey = fromMaybe (giveup "bad key") $ file2key keyname
|
||||
go oldkey
|
||||
| oldkey == newkey = stop
|
||||
| otherwise = do
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{- git-annex command
|
||||
-
|
||||
- Copyright 2013 Joey Hess <id@joeyh.name>
|
||||
- Copyright 2013-2016 Joey Hess <id@joeyh.name>
|
||||
-
|
||||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
@ -15,13 +15,33 @@ cmd :: Command
|
|||
cmd = notBareRepo $
|
||||
command "rmurl" SectionCommon
|
||||
"record file is not available at url"
|
||||
(paramPair paramFile paramUrl)
|
||||
(withParams seek)
|
||||
(paramRepeating (paramPair paramFile paramUrl))
|
||||
(seek <$$> optParser)
|
||||
|
||||
seek :: CmdParams -> CommandSeek
|
||||
seek = withPairs start
|
||||
data RmUrlOptions = RmUrlOptions
|
||||
{ rmThese :: CmdParams
|
||||
, batchOption :: BatchMode
|
||||
}
|
||||
|
||||
start :: (FilePath, String) -> CommandStart
|
||||
optParser :: CmdParamsDesc -> Parser RmUrlOptions
|
||||
optParser desc = RmUrlOptions
|
||||
<$> cmdParams desc
|
||||
<*> parseBatchOption
|
||||
|
||||
seek :: RmUrlOptions -> CommandSeek
|
||||
seek o = case batchOption o of
|
||||
Batch -> batchInput batchParser (batchCommandAction . start)
|
||||
NoBatch -> withPairs start (rmThese o)
|
||||
|
||||
-- Split on the last space, since a FilePath can contain whitespace,
|
||||
-- but a url should not.
|
||||
batchParser :: String -> Either String (FilePath, URLString)
|
||||
batchParser s = case separate (== ' ') (reverse s) of
|
||||
(ru, rf)
|
||||
| null ru || null rf -> Left "Expected: \"file url\""
|
||||
| otherwise -> Right (reverse rf, reverse ru)
|
||||
|
||||
start :: (FilePath, URLString) -> CommandStart
|
||||
start (file, url) = flip whenAnnexed file $ \_ key -> do
|
||||
showStart "rmurl" file
|
||||
next $ next $ cleanup url key
|
||||
|
|
55
Jenkinsfile
vendored
Normal file
55
Jenkinsfile
vendored
Normal file
|
@ -0,0 +1,55 @@
|
|||
currentBuild.result = 'SUCCESS'
|
||||
def caught_exception = null
|
||||
|
||||
final def EMAIL_RECIPIENTS = 'joey+git-annex@joeyh.name'
|
||||
|
||||
properties([
|
||||
buildDiscarder(logRotator(artifactNumToKeepStr: '1')),
|
||||
pipelineTriggers([[$class: 'hudson.triggers.SCMTrigger', scmpoll_spec: ''],]) // pollScm('') in 2.22+
|
||||
])
|
||||
|
||||
try {
|
||||
|
||||
node('windows') {
|
||||
|
||||
dir('git-annex') {
|
||||
|
||||
stage('Checkout') {
|
||||
checkout scm
|
||||
}
|
||||
|
||||
stage('Build') {
|
||||
bat 'c:/msysgit/bin/sh standalone/windows/build.sh'
|
||||
}
|
||||
|
||||
stage('Archive') {
|
||||
archiveArtifacts 'git-annex-installer.exe,dist/build-version'
|
||||
}
|
||||
|
||||
stage('Upload') {
|
||||
withCredentials([usernamePassword(credentialsId: 'rsync-downloads-kitenet-net', passwordVariable: 'RSYNC_PASSWORD', usernameVariable: 'DUMMY')]) {
|
||||
bat 'c:/cygwin/bin/rsync git-annex-installer.exe winautobuild@downloads.kitenet.net::winautobuild'
|
||||
bat 'c:/cygwin/bin/rsync dist/build-version winautobuild@downloads.kitenet.net::winautobuild'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} catch (exception) {
|
||||
|
||||
caught_exception = exception
|
||||
currentBuild.result = 'FAILURE'
|
||||
|
||||
} finally {
|
||||
|
||||
node('master') {
|
||||
step([$class: 'Mailer', notifyEveryUnstableBuild: false, recipients: EMAIL_RECIPIENTS, sendToIndividuals: false])
|
||||
}
|
||||
|
||||
if (caught_exception) {
|
||||
throw caught_exception
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
### Please describe the problem.
|
||||
|
||||
While running `git-annex metadata --batch --json`, repeatedly assigning a field to the same value in the same run (with different values in between the assignments of the same value) causes a value to get stuck.
|
||||
|
||||
### What steps will reproduce the problem?
|
||||
|
||||
$ touch test.txt
|
||||
$ git annex add
|
||||
$ git-annex metadata --batch --json
|
||||
{"file":"test.txt","fields":{"f":["a"]}}
|
||||
# prints { ... "f":["a"] ... }
|
||||
{"file":"test.txt","fields":{"f":["b"]}}
|
||||
# prints { ... "f":["b"] ... }
|
||||
{"file":"test.txt","fields":{"f":["c"]}}
|
||||
# prints { ... "f":["c"] ... }
|
||||
{"file":"test.txt","fields":{"f":["a"]}}
|
||||
# prints { ... "f":["a", "c"] ... }
|
||||
{"file":"test.txt","fields":{"f":["b"]}}
|
||||
# prints { ... "f":["c"] ... }
|
||||
|
||||
### What version of git-annex are you using? On what operating system?
|
||||
|
||||
git-annex version: 6.20161122+gitg9f179ae-1~ndall+1
|
||||
build flags: Assistant Webapp Pairing Testsuite S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
|
||||
key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
|
||||
remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
|
||||
local repository version: 5
|
||||
supported repository versions: 3 5 6
|
||||
upgrade supported from repository versions: 0 1 2 3 4 5
|
||||
operating system: linux x86_64
|
||||
|
||||
I'm using Xubuntu 16.04, with the `git-annex-standalone` package from NeuroDebian repository.
|
||||
|
||||
### Please provide any additional information below.
|
||||
|
||||
If you keep reassigning the same values, things get very weird. Full inputs/outputs from a sample run:
|
||||
|
||||
{"file":"test.txt","fields":{"f":["a"]}}
|
||||
{"command":"metadata","note":"f=a\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields": {"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["a"]}}
|
||||
{"file":"test.txt","fields":{"f":["b"]}}
|
||||
{"command":"metadata","note":"f=b\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["b"]}}
|
||||
{"file":"test.txt","fields":{"f":["c"]}}
|
||||
{"command":"metadata","note":"f=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["c"]}}
|
||||
{"file":"test.txt","fields":{"f":["a"]}}
|
||||
{"command":"metadata","note":"f=a\nf=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["a","c"]}}
|
||||
{"file":"test.txt","fields":{"f":["b"]}}
|
||||
{"command":"metadata","note":"f=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["c"]}}
|
||||
{"file":"test.txt","fields":{"f":[]}}
|
||||
{"command":"metadata","note":"lastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"lastchanged":["2016-12-05@21-17-39"]}}
|
||||
{"file":"test.txt","fields":{"f":["b"]}}
|
||||
{"command":"metadata","note":"lastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"lastchanged":["2016-12-05@21-17-39"]}}
|
||||
{"file":"test.txt","fields":{"f":["c"]}}
|
||||
{"command":"metadata","note":"f=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["c"]}}
|
||||
{"file":"test.txt","fields":{"f":["a"]}}
|
||||
{"command":"metadata","note":"f=a\nf=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["a","c"]}}
|
||||
{"file":"test.txt","fields":{"f":["b"]}}
|
||||
{"command":"metadata","note":"f=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["c"]}}
|
||||
{"file":"test.txt","fields":{"f":["c"]}}
|
||||
{"command":"metadata","note":"f=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["c"]}}
|
||||
{"file":"test.txt","fields":{"f":["a"]}}
|
||||
{"command":"metadata","note":"f=a\nf=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["a","c"]}}
|
||||
{"file":"test.txt","fields":{"f":["b"]}}
|
||||
{"command":"metadata","note":"f=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["c"]}}
|
||||
{"file":"test.txt","fields":{"f":["b"]}}
|
||||
{"command":"metadata","note":"f=b\nf=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["b","c"]}}
|
||||
{"file":"test.txt","fields":{"f":["a"]}}
|
||||
{"command":"metadata","note":"f=a\nf=b\nf=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["a","b","c"]}}
|
||||
{"file":"test.txt","fields":{"f":["d"]}}
|
||||
{"command":"metadata","note":"f=b\nf=c\nf=d\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["b","c","d"]}}
|
||||
{"file":"test.txt","fields":{"f":["a"]}}
|
||||
{"command":"metadata","note":"f=b\nf=c\nf=d\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["b","c","d"]}}
|
||||
{"file":"test.txt","fields":{"f":["a"]}}
|
||||
{"command":"metadata","note":"f=b\nf=c\nf=d\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["b","c","d"]}}
|
||||
{"file":"test.txt","fields":{"f":[]}}
|
||||
{"command":"metadata","note":"f=c\nf-lastchanged=2016-12-05@21-17-39\nlastchanged=2016-12-05@21-17-39\n","success":true,"key":"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.txt","file":"test.txt","fields":{"f-lastchanged":["2016-12-05@21-17-39"],"lastchanged":["2016-12-05@21-17-39"],"f":["c"]}}
|
||||
|
||||
Restarting the process solves the issue.
|
||||
|
||||
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
|
||||
|
||||
I love the metadata functionality so much that I wrote [[tips/a_gui_for_metadata_operations]] and discovered this bug.
|
||||
Metadata driven views are awesome (but I don't like the entire folder hierarchy being appended to the filename).
|
||||
I haven't used the other commands much since I have not yet organized most of my stuff (and their naively copy-pasted backups), but I am glad I discovered git-annex before I began organizing.
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
[[!comment format=mdwn
|
||||
username="justin.lebar@7a36fcafc322d9a381e89f08ab6289033c6dde91"
|
||||
nickname="justin.lebar"
|
||||
avatar="http://cdn.libravatar.org/avatar/9fca4b61a1ab555f231851e7543f9a3e"
|
||||
subject="comment 3"
|
||||
date="2016-12-04T04:30:38Z"
|
||||
content="""
|
||||
For a while things were working, but now it's not working again, same problem as before.
|
||||
|
||||
Do you think maybe it's a timestamp bug in the signature or something? That could explain this \"mysteriously works then stops working\" behavior.
|
||||
"""]]
|
78
doc/bugs/annex_add_ignores_.-prefixed_directories.mdwn
Normal file
78
doc/bugs/annex_add_ignores_.-prefixed_directories.mdwn
Normal file
|
@ -0,0 +1,78 @@
|
|||
### Please describe the problem.
|
||||
|
||||
annex add seems to ignore content under directories having . prefix.
|
||||
|
||||
We thought to unify (across direct/indirect/v6) adding files to annex repository by using 'git annex add' with corresponding setting for largefiles for any addition, but it seems to ignore content under .-prefixed directories, unlike git
|
||||
|
||||
### What version of git-annex are you using? On what operating system?
|
||||
|
||||
6.20161122+gitg9f179ae-1~ndall+1
|
||||
|
||||
### Please provide any additional information below.
|
||||
|
||||
[[!format sh """
|
||||
hopa:/tmp/datalad_temp_test_annex_add_no_dotfilesqMXck8
|
||||
$> git status
|
||||
On branch master
|
||||
|
||||
Initial commit
|
||||
|
||||
nothing to commit (create/copy files and use "git add" to track)
|
||||
|
||||
$> mkdir .dir dir; echo 123 > .dir/123; echo 124 > dir/124
|
||||
|
||||
$> git status
|
||||
On branch master
|
||||
|
||||
Initial commit
|
||||
|
||||
Untracked files:
|
||||
(use "git add <file>..." to include in what will be committed)
|
||||
|
||||
.dir/
|
||||
dir/
|
||||
|
||||
nothing added to commit but untracked files present (use "git add" to track)
|
||||
|
||||
$> git annex add -c 'annex.largefiles=nothing' .
|
||||
add dir/124 (non-large file; adding content to git repository) ok
|
||||
(recording state in git...)
|
||||
|
||||
$> git status
|
||||
On branch master
|
||||
|
||||
Initial commit
|
||||
|
||||
Changes to be committed:
|
||||
(use "git rm --cached <file>..." to unstage)
|
||||
|
||||
new file: dir/124
|
||||
|
||||
Untracked files:
|
||||
(use "git add <file>..." to include in what will be committed)
|
||||
|
||||
.dir/
|
||||
|
||||
|
||||
# and with regular git
|
||||
$> git -c 'annex.largefiles=nothing' add .
|
||||
|
||||
$> git status
|
||||
On branch master
|
||||
|
||||
Initial commit
|
||||
|
||||
Changes to be committed:
|
||||
(use "git rm --cached <file>..." to unstage)
|
||||
|
||||
new file: .dir/123
|
||||
new file: dir/124
|
||||
|
||||
|
||||
"""]]
|
||||
|
||||
Ref: https://github.com/datalad/datalad/issues/1027
|
||||
|
||||
[[!meta author=yoh]]
|
||||
|
||||
[[done]]; oh -- it is RTFM: --include-dotfiles --[[yoh]]
|
|
@ -0,0 +1,55 @@
|
|||
[[!comment format=mdwn
|
||||
username="alpernebbi"
|
||||
avatar="http://cdn.libravatar.org/avatar/daf2abb14f39e28ad75d5f9a03fcd106"
|
||||
subject="UTF-8 problems in some other commands"
|
||||
date="2016-12-05T20:46:07Z"
|
||||
content="""
|
||||
Running the command above gives me the same error on Xubuntu 16.04, using `git-annex-standalone` package from NeuroDebian repositories.
|
||||
|
||||
git-annex version: 6.20161122+gitg9f179ae-1~ndall+1
|
||||
build flags: Assistant Webapp Pairing Testsuite S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
|
||||
key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
|
||||
remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
|
||||
local repository version: 5
|
||||
supported repository versions: 3 5 6
|
||||
upgrade supported from repository versions: 0 1 2 3 4 5
|
||||
operating system: linux x86_64
|
||||
|
||||
I encountered other commands that fail as well:
|
||||
|
||||
$ touch u.txt ü.txt
|
||||
$ git annex add
|
||||
|
||||
$ git-annex calckey ü.txt
|
||||
# prints key
|
||||
|
||||
$ git-annex calckey --batch
|
||||
ü.txt
|
||||
# dies
|
||||
|
||||
$ git-annex lookupkey ü.txt
|
||||
# prints key
|
||||
|
||||
$ git-annex lookupkey --batch
|
||||
ü.txt
|
||||
# dies
|
||||
|
||||
$ git-annex metadata --batch --json
|
||||
{\"file\":\"ü.txt\"}
|
||||
# dies
|
||||
|
||||
$ git-annex metadata --batch --json
|
||||
{\"file\":\"u.txt\",\"fields\":{\"ü\":[\"b\"]}}
|
||||
# dies
|
||||
|
||||
$ git-annex metadata --batch --json
|
||||
{\"file\":\"u.txt\",\"fields\":{\"a\":[\"ü\"]}}
|
||||
# dies
|
||||
|
||||
All those die without output, all $? are 0.
|
||||
No values were recorded to metadata.
|
||||
Also:
|
||||
|
||||
$ git-annex-metadata --json
|
||||
# entry for \"ü.txt\" has \"file\":\"<22><>.txt\"
|
||||
"""]]
|
|
@ -0,0 +1,8 @@
|
|||
### Please describe the problem.
|
||||
https://git-annex.branchable.com/bugs/git_annex_init_failed_due_to_unsupported_ssh_option/ deal with Include not being supported by pre 7.3 by using the 6.4+ IgnoreUnknown directive.
|
||||
|
||||
Unfortunately, the Android apk (which I got from https://downloads.kitenet.net/git-annex/android/current/5.0/git-annex.apk) has (according to ssh -v) OpenSSH_6.0p1.
|
||||
|
||||
I had to edit .git/annex/ssh.config to comment out the three offending lines and then append the contents of ~/.ssh/config to get git-annex working again.
|
||||
|
||||
(This is on a Nexus 10 running stock, though I doubt it matters)
|
|
@ -0,0 +1,28 @@
|
|||
### Please describe the problem.
|
||||
Recent builds of git-annex spew out many lines such as:
|
||||
|
||||
git-annex: unable to decommit memory: Invalid argument
|
||||
git-annex: unable to decommit memory: Invalid argument
|
||||
git-annex: unable to decommit memory: Invalid argument
|
||||
git-annex: unable to decommit memory: Invalid argument
|
||||
git-annex: unable to decommit memory: Invalid argument
|
||||
|
||||
### What steps will reproduce the problem?
|
||||
This happens to me syncing any large repository now.
|
||||
|
||||
### What version of git-annex are you using? On what operating system?
|
||||
git-annex version: 6.20161118-g0a34f08
|
||||
|
||||
uname -r: 4.4.14-11.pvops.qubes.x86_64
|
||||
|
||||
/etc/system-release: Fedora release 23 (Twenty Three)
|
||||
|
||||
### Please provide any additional information below.
|
||||
|
||||
I found this: https://ghc.haskell.org/trac/ghc/ticket/12495
|
||||
|
||||
It looks like this is a problem that occurs only on kernels < 4.5, when ghc is built with a newer glibc, I think.
|
||||
|
||||
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
|
||||
|
||||
Git annex rocks!
|
24
doc/bugs/wget_always_shows_progress_bar.mdwn
Normal file
24
doc/bugs/wget_always_shows_progress_bar.mdwn
Normal file
|
@ -0,0 +1,24 @@
|
|||
### Please describe the problem.
|
||||
|
||||
git annex addurl or importfeed operations were quiet on git-annex versions older than 5.20141219, if
|
||||
annex.web-options was set to "--quiet". But now the --show-progress option is always passed to wget.
|
||||
|
||||
In some use cases this might be nice, but I'm using GNU Parallel to update multiple podcast feeds
|
||||
concurrently, and it causes wget to output the ugly "dot" indicator for every feed, which is totally
|
||||
useless since parallel buffers and groups the output. Adding "--no-show-progress" to web-options
|
||||
does not help (it does not override --show-progress), nor does redirecting stdout to /dev/null.
|
||||
Redirecting stderr would hide possible errors.
|
||||
|
||||
### What steps will reproduce the problem?
|
||||
|
||||
parallel git annex importfeed --relaxed --quiet ::: http://feeds.feedburner.com/freakonomicsradio
|
||||
|
||||
### What version of git-annex are you using? On what operating system?
|
||||
|
||||
5.20151208-1~bpo8+1 on Debian.
|
||||
|
||||
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
|
||||
|
||||
I love git annex and use it daily.
|
||||
|
||||
|
|
@ -49,7 +49,7 @@
|
|||
<iframe width=1024 scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuildtest/x86_64-apple-yosemite/testresult/status">
|
||||
</iframe>
|
||||
<h2><a href="https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/">Windows</a></h2>
|
||||
<a href="https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/">here</a>
|
||||
<a href="http://vps.zaytsev.net:8080/">here</a> (firewalled from most locations; kite can access it)
|
||||
<h2><a href="https://buildd.debian.org/status/package.php?p=git-annex&suite=sid">Debian</a></h2>
|
||||
<iframe width=1024 scrolling=no height=500px frameborder=0 marginheight=0 marginwidth=0 src="https://buildd.debian.org/status/package.php?p=git-annex&suite=sid">
|
||||
</iframe>
|
||||
|
|
27
doc/devblog/day_431__p2p_linking.mdwn
Normal file
27
doc/devblog/day_431__p2p_linking.mdwn
Normal file
|
@ -0,0 +1,27 @@
|
|||
Today I finished the second-to-last big missing peice for tor hidden service
|
||||
remotes. Networks of these remotes are P2P networks, and there needs to be
|
||||
a way for peers to find one-another, and to authenticate with one-another.
|
||||
The `git annex p2p` command sets up links between peers in such a network.
|
||||
|
||||
So far it has only a basic interface that sets up a one way link between
|
||||
two peers. In the first repository, run `git annex p2p --gen-address`.
|
||||
That outputs a long address. In the second repository, run
|
||||
`git annex p2p --link peer1`, and paste the address into it. That sets up a
|
||||
git remote named "peer1" that connects back to the first repository over tor.
|
||||
|
||||
That is a one-directional link, while a bi-directional link would be
|
||||
much more convenient to have between peers. Worse, the address can be reused by
|
||||
anyone who sees it, to link into the repository. And, the address is far
|
||||
too long to communicate in any way except for pasting it.
|
||||
|
||||
So I want to improve that later. What I'd really like to have is an
|
||||
interface that displays a one-time-use phrase of five to ten words, that
|
||||
can be read over the phone or across the room. Exchange phrases with a
|
||||
friend, and get your repositories securely linked together with tor.
|
||||
|
||||
But, `git annex p2p` is good enough for now. I can move on to the final
|
||||
keystone of the tor support, which is file transfer over tor.
|
||||
That should, fingers crossed, be relatively easy, and the `tor` branch is
|
||||
close to mergeable now.
|
||||
|
||||
Today's work was sponsored by Riku Voipio.
|
|
@ -0,0 +1,49 @@
|
|||
[[!comment format=mdwn
|
||||
username="https://anarc.at/openid/"
|
||||
nickname="anarcat"
|
||||
avatar="http://cdn.libravatar.org/avatar/b36dcf65657dd36128161355d8920a99503def9461c1bb212410980fe6f07125"
|
||||
subject="magic wormhole"
|
||||
date="2016-11-30T22:16:19Z"
|
||||
content="""
|
||||
> What I'd really like to have is an interface that displays a
|
||||
> one-time-use phrase of five to ten words, that can be read over the
|
||||
> phone or across the room. Exchange phrases with a friend, and get
|
||||
> your repositories securely linked together with tor.
|
||||
|
||||
I already mentionned the project in [[design/assistant/telehash/]],
|
||||
but [magic-wormhole](https://github.com/warner/magic-wormhole) does
|
||||
exactly that:
|
||||
|
||||
% wormhole send README.md
|
||||
Sending 7924 byte file named 'README.md'
|
||||
On the other computer, please run: wormhole receive
|
||||
Wormhole code is: 7-crossover-clockwork
|
||||
|
||||
Sending (<-10.0.1.43:58988)..
|
||||
100%|=========================| 7.92K/7.92K [00:00<00:00, 6.02MB/s]
|
||||
File sent.. waiting for confirmation
|
||||
Confirmation received. Transfer complete.
|
||||
|
||||
Receiver:
|
||||
|
||||
% wormhole receive
|
||||
Enter receive wormhole code: 7-crossover-clockwork
|
||||
Receiving file (7924 bytes) into: README.md
|
||||
ok? (y/n): y
|
||||
Receiving (->tcp:10.0.1.43:58986)..
|
||||
100%|===========================| 7.92K/7.92K [00:00<00:00, 120KB/s]
|
||||
Received file written to README.md
|
||||
|
||||
While that example shows a file transfer, arbitrary data can be
|
||||
transfered this way. There's a documented protocol, and it's not
|
||||
completely peer-to-peer: there are relay servers to deal with NAT'd
|
||||
machines. But the [PAKE
|
||||
protocol](https://en.wikipedia.org/wiki/Password-authenticated_key_agreement)
|
||||
(basically SPAKE2) could be a good inspiration here.
|
||||
|
||||
Otherwise, I must say that, as a user, I don't mind copy-pasting a
|
||||
hidden service string (if that's what it's about): i can do that over
|
||||
a secure medium (email + OpenPGP or IM + OTR) easily... But I
|
||||
understand it can be difficult to do for new users.
|
||||
|
||||
"""]]
|
13
doc/devblog/day_432-433__almost_there.mdwn
Normal file
13
doc/devblog/day_432-433__almost_there.mdwn
Normal file
|
@ -0,0 +1,13 @@
|
|||
Friday and today were spent implementing both sides of the P2P protocol for
|
||||
git-annex content transfers.
|
||||
|
||||
There were some tricky cases to deal with. For example, when a file is being
|
||||
sent from a direct mode repository, or v6 annex.thin repository, the
|
||||
content of the file can change as it's being transferred. Including being
|
||||
appended to or truncated. Had to find a way to deal with that, to avoid
|
||||
breaking the protocol by not sending the indicated number of bytes of data.
|
||||
|
||||
It all seems to be done now, but it's not been tested at all, and there are
|
||||
probably some bugs to find. (And progress info is not wired up yet.)
|
||||
|
||||
Today's work was sponsored by Trenton Cronholm on Patreon.
|
9
doc/forum/Extra___38___missing_folders_on_remote.mdwn
Normal file
9
doc/forum/Extra___38___missing_folders_on_remote.mdwn
Normal file
|
@ -0,0 +1,9 @@
|
|||
I created a local annex directory that's an adjusted branch used with the assistant. On another machine, I initialized an annex directory, then made this into a full-backup ssh remote for my local.
|
||||
|
||||
After the assistant pushes to the remote, and the remote runs `git annex sync`, the remote is missing some directories and has some extra directories. For example, it has the extra directory `Documents/programs/Documents/programs/`, which has different contents than `Documents/programs/`. Both directories are missing the subdirectory `graphing_experiments/`.
|
||||
|
||||
From my local, `git annex whereis Documents/programs/graphing_experiments` says the directory exists on the remote. But it's not there.
|
||||
|
||||
I recreated the remote from scratch and the problem persists.
|
||||
|
||||
The assistant says the remote is caught up, and is keeping up with new content changes. What could cause this?
|
15
doc/forum/more_intelligent_copy_.mdwn
Normal file
15
doc/forum/more_intelligent_copy_.mdwn
Normal file
|
@ -0,0 +1,15 @@
|
|||
Hi,
|
||||
|
||||
I noticed, that
|
||||
|
||||
git annex copy --to REMOTE FILES
|
||||
|
||||
and
|
||||
|
||||
git annex copy --to REMOTE --not --in REMOTE FILES
|
||||
|
||||
behave differently. The first does not check, whether file contents are already in the remote the latter does that. I realize that this mimics "normal" (UNIX) copy behaviour but I was not entirely certain this was desired.
|
||||
Depending on the type of the remote and its configuration (encryption) the latter is considerably faster.
|
||||
|
||||
Just my two cents.
|
||||
|
|
@ -15,9 +15,9 @@ If no path is specified, adds files from the current directory and below.
|
|||
Files that are already checked into git and are unmodified, or that
|
||||
git has been configured to ignore will be silently skipped.
|
||||
|
||||
If annex.largefiles is configured, and does not match a file, `git annex
|
||||
add` will behave the same as `git add` and add the non-large file directly
|
||||
to the git repository, instead of to the annex.
|
||||
If annex.largefiles is configured, and does not match a file,
|
||||
`git annex add` will behave the same as `git add` and add the
|
||||
non-large file directly to the git repository, instead of to the annex.
|
||||
|
||||
Large files are added to the annex in locked form, which prevents further
|
||||
modification of their content unless unlocked by [[git-annex-unlock]](1).
|
||||
|
|
|
@ -4,14 +4,16 @@ git-annex fromkey - adds a file using a specific key
|
|||
|
||||
# SYNOPSIS
|
||||
|
||||
git annex fromkey `[key file]`
|
||||
git annex fromkey `[key file ...]`
|
||||
|
||||
# DESCRIPTION
|
||||
|
||||
This plumbing-level command can be used to manually set up a file
|
||||
in the git repository to link to a specified key.
|
||||
|
||||
If the key and file are not specified on the command line, they are
|
||||
Multiple pairs of file and key can be given in a single command line.
|
||||
|
||||
If no key and file pair are specified on the command line, they are
|
||||
instead read from stdin. Any number of lines can be provided in this
|
||||
mode, each containing a key and filename, separated by a single space.
|
||||
|
||||
|
@ -26,7 +28,7 @@ to do that.
|
|||
* `--force`
|
||||
|
||||
Allow making a file link to a key whose content is not in the local
|
||||
repository. The key may not be known to git-annex at all.
|
||||
repository. The key may not be known to git-annex at all.
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
|
|
|
@ -20,6 +20,12 @@ Multiple pairs of file and key can be given in a single command line.
|
|||
Allow rekeying of even files whose content is not currently available.
|
||||
Use with caution.
|
||||
|
||||
* `--batch`
|
||||
|
||||
Enables batch mode, in which lines are read from stdin.
|
||||
Each line should contain the file, and the new key to use for that file,
|
||||
separated by a single space.
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
[[git-annex]](1)
|
||||
|
|
|
@ -4,12 +4,20 @@ git-annex rmurl - record file is not available at url
|
|||
|
||||
# SYNOPSIS
|
||||
|
||||
git annex rmurl `file url`
|
||||
git annex rmurl `[file url ..]`
|
||||
|
||||
# DESCRIPTION
|
||||
|
||||
Record that the file is no longer available at the url.
|
||||
|
||||
# OPTIONS
|
||||
|
||||
* `--batch`
|
||||
|
||||
Enables batch mode, in which lines are read from stdin.
|
||||
Each line should contain the file, and the url to remove from that file,
|
||||
separated by a single space.
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
[[git-annex]](1)
|
||||
|
|
|
@ -24,7 +24,7 @@ important thing is that it should end with "All tests passed".
|
|||
A daily build is also available, thanks to Yury V. Zaytsev and
|
||||
Dartmouth College.
|
||||
|
||||
* [download](https://downloads.kitenet.net/git-annex/autobuild/windows/) ([build logs](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/))
|
||||
* [download](https://downloads.kitenet.net/git-annex/autobuild/windows/)
|
||||
|
||||
## building it yourself
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ Get the git-annex source code, and inside the source tree, run:
|
|||
|
||||
To build with all features enabled, including the assistant and webapp,
|
||||
you will need to install several C libraries and their headers,
|
||||
including libgnutls, libgsasl, libxml2, libmagic, and zlib. How to do
|
||||
including libgnutls, libgsasl, libxml2, libmagic, zlib, and chrpath. How to do
|
||||
that for your OS is beyond the scope of this page.
|
||||
|
||||
Once the C libraries are installed, run inside the source tree:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
The development of git-annex was made possible by the generous
|
||||
donations of many people. I want to say "Thank You!" to each of
|
||||
you individually, but until I meet all 1500 of you, this page will have to
|
||||
you individually, but until I meet all 1500+ of you, this page will have to
|
||||
do. You have my most sincere thanks. --[[Joey]]
|
||||
|
||||
You can support my git-annex development
|
||||
|
@ -18,16 +18,8 @@ git-annex development is partially supported by the
|
|||
[NSF](https://www.nsf.gov/awardsearch/showAward?AWD_ID=1429999) as a part of the
|
||||
[DataLad project](http://datalad.org/).
|
||||
|
||||
Thanks also to these folks for their support: martin f. krafft, John Byrnes,
|
||||
Aurélien Couderc, Jeffrey Chiu, Amitai Schlair, Andreas, Anthony DeRobertis,
|
||||
Baldur Kristinsson, Boyd Stephen Smith Jr., Brock Spratlen, Christian Diller,
|
||||
Denis Dzyubenko, Eskild Hustvedt, Evgeni Kunev, FBC, Fernando Jimenez, Greg
|
||||
Young, Henrik RIomar, Ignacio, Jake Vosloo, James Valleroy, Jason Woofenden,
|
||||
Jeff Goeke-Smith, Jim, Jochen Bartl, Johannes Schlatow, John Carr, Josh
|
||||
Taylor, Josh Triplett, Kuno Woudt, Matthias Urlichs, Mattias J, Nathan Howell,
|
||||
Nick Daly, Nicolas Schodet, Ole-Morten Duesund, Remy van Elst, RémiV, Thom
|
||||
May, Thomas Ferris Nicolaisen, Thomas Hochstein, Tyler Cipriani, encryptio,
|
||||
Øyvind A. Holm
|
||||
Thanks also to these folks for their support:
|
||||
[[!inline raw=yes pages="thanks/list"]] and anonymous supporters.
|
||||
|
||||
## 2013-2014
|
||||
|
||||
|
@ -385,13 +377,11 @@ Tyree, Aaron Whitehouse
|
|||
* Rsync.net, for providing me a free account so I can make sure git-annex
|
||||
works well with it.
|
||||
* LeastAuthority.com, for providing me a free Tahoe-LAFS grid account,
|
||||
so I can test git-annex with that, and back up the git-annex assistant
|
||||
screencasts.
|
||||
so I can test git-annex with that.
|
||||
* Yury V. Zaytsev for running the Windows autobuilder.
|
||||
* Kevin McKenzie for providing a OSX account for testing.
|
||||
* Anna and Mark, for the loan of the video camera; as well as the rest of
|
||||
my family, for your support. Even when I couldn't explain what I was
|
||||
working on.
|
||||
* The Hodges, for providing such a congenial place for me to live and work
|
||||
on these first world problems, while you're off helping people in the
|
||||
third world.
|
||||
* And Mom, for stamping and stuffing so many thank you envelopes, and all the
|
||||
rhubarb pies.
|
||||
|
|
53
doc/thanks/list
Normal file
53
doc/thanks/list
Normal file
|
@ -0,0 +1,53 @@
|
|||
martin f. krafft,
|
||||
John Byrnes,
|
||||
Aurélien Couderc,
|
||||
Jeffrey Chiu,
|
||||
Amitai Schlair,
|
||||
Andreas,
|
||||
Anthony DeRobertis,
|
||||
Baldur Kristinsson,
|
||||
Boyd Stephen Smith Jr.,
|
||||
Brock Spratlen,
|
||||
Christian Diller,
|
||||
Denis Dzyubenko,
|
||||
Eskild Hustvedt,
|
||||
Evgeni Kunev,
|
||||
FBC,
|
||||
Fernando Jimenez,
|
||||
Greg Young,
|
||||
Henrik RIomar,
|
||||
Ignacio,
|
||||
Jake Vosloo,
|
||||
James Valleroy,
|
||||
Jason Woofenden,
|
||||
Jeff Goeke-Smith,
|
||||
Jim,
|
||||
Jochen Bartl,
|
||||
Johannes Schlatow,
|
||||
John Carr,
|
||||
Josh Taylor,
|
||||
Josh Triplett,
|
||||
Kuno Woudt,
|
||||
Matthias Urlichs,
|
||||
Mattias J,
|
||||
Nathan Howell,
|
||||
Nick Daly,
|
||||
Nicolas Schodet,
|
||||
Ole-Morten Duesund,
|
||||
Remy van Elst,
|
||||
RémiV,
|
||||
Thom May,
|
||||
Thomas Ferris Nicolaisen,
|
||||
Thomas Hochstein,
|
||||
Tyler Cipriani,
|
||||
encryptio,
|
||||
Øyvind A. Holm,
|
||||
Bruno BEAUFILS,
|
||||
Rémi Vanicat,
|
||||
Trenton Cronholm,
|
||||
Francois Marier,
|
||||
Peter Hogg,
|
||||
Amitai Schleier,
|
||||
Brennen Bearnes,
|
||||
Tim Howes,
|
||||
Willard Korfhage,
|
13
doc/tips/a_gui_for_metadata_operations.mdwn
Normal file
13
doc/tips/a_gui_for_metadata_operations.mdwn
Normal file
|
@ -0,0 +1,13 @@
|
|||
Hey everyone.
|
||||
|
||||
I wrote a GUI for git-annex metadata in Python: [git-annex-metadata-gui](https://github.com/alpernebbi/git-annex-metadata-gui).
|
||||
It shows the files that are in the current branch (only those in the annex) in the respective folder hierarchy.
|
||||
The keys that are in the repository, but not in the current branch are also shown in another tab.
|
||||
You can view, edit or remove fields for individual files with support for multiple values for fields.
|
||||
There is a file preview for image and text files as well.
|
||||
I uploaded some screenshots in the repository to show it in action.
|
||||
|
||||
While making it, I decided to move the git-annex calls into its own Python package,
|
||||
which became [git-annex-adapter](https://github.com/alpernebbi/git-annex-adapter).
|
||||
|
||||
I hope these can be useful to someone other than myself as well.
|
22
doc/todo/Long_Running_Filter_Process.mdwn
Normal file
22
doc/todo/Long_Running_Filter_Process.mdwn
Normal file
|
@ -0,0 +1,22 @@
|
|||
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
|
|
@ -105,4 +105,7 @@ export PATH
|
|||
mkdir -p c:/WINDOWS/Temp/git-annex-test/
|
||||
cd c:/WINDOWS/Temp/git-annex-test/
|
||||
rm -rf .t
|
||||
withcyg git-annex.exe test
|
||||
# Currently the test fails in the autobuilder environment for reasons not
|
||||
# yet understood. Windows users are encouraged to run the test suite
|
||||
# themseves, so we'll ignore these failures for now.
|
||||
withcyg git-annex.exe test || true
|
||||
|
|
Loading…
Reference in a new issue