Merge branch 'master' into desymlink
Conflicts: Annex/CatFile.hs Annex/Content.hs Git/LsFiles.hs Git/LsTree.hs
This commit is contained in:
commit
b080a58b76
108 changed files with 2031 additions and 1615 deletions
|
@ -175,8 +175,7 @@ get' staleok file = fromjournal =<< getJournalFile file
|
||||||
| otherwise = do
|
| otherwise = do
|
||||||
update
|
update
|
||||||
frombranch
|
frombranch
|
||||||
frombranch = withIndex $
|
frombranch = withIndex $ L.unpack <$> catFile fullname file
|
||||||
L.unpack <$> catFile fullname file
|
|
||||||
|
|
||||||
{- Applies a function to modifiy the content of a file.
|
{- Applies a function to modifiy the content of a file.
|
||||||
-
|
-
|
||||||
|
|
|
@ -62,11 +62,12 @@ otool appbase libmap = do
|
||||||
files <- filterM doesFileExist =<< dirContentsRecursive appbase
|
files <- filterM doesFileExist =<< dirContentsRecursive appbase
|
||||||
process [] files libmap
|
process [] files libmap
|
||||||
where
|
where
|
||||||
unprocessed s = not ("@executable_path" `isInfixOf` s)
|
want s = not ("@executable_path" `isInfixOf` s)
|
||||||
|
&& not (".framework" `isInfixOf` s)
|
||||||
process c [] m = return (nub $ concat c, m)
|
process c [] m = return (nub $ concat c, m)
|
||||||
process c (file:rest) m = do
|
process c (file:rest) m = do
|
||||||
_ <- boolSystem "chmod" [Param "755", File file]
|
_ <- boolSystem "chmod" [Param "755", File file]
|
||||||
libs <- filter unprocessed . parseOtool
|
libs <- filter want . parseOtool
|
||||||
<$> readProcess "otool" ["-L", file]
|
<$> readProcess "otool" ["-L", file]
|
||||||
m' <- install_name_tool file libs m
|
m' <- install_name_tool file libs m
|
||||||
process (libs:c) rest m'
|
process (libs:c) rest m'
|
||||||
|
|
|
@ -101,10 +101,12 @@ localToUrl reference r
|
||||||
| repoIsUrl r = r
|
| repoIsUrl r = r
|
||||||
| otherwise = r { location = Url $ fromJust $ parseURI absurl }
|
| otherwise = r { location = Url $ fromJust $ parseURI absurl }
|
||||||
where
|
where
|
||||||
absurl =
|
absurl = concat
|
||||||
Url.scheme reference ++ "//" ++
|
[ Url.scheme reference
|
||||||
Url.authority reference ++
|
, "//"
|
||||||
repoPath r
|
, Url.authority reference
|
||||||
|
, repoPath r
|
||||||
|
]
|
||||||
|
|
||||||
{- Calculates a list of a repo's configured remotes, by parsing its config. -}
|
{- Calculates a list of a repo's configured remotes, by parsing its config. -}
|
||||||
fromRemotes :: Repo -> IO [Repo]
|
fromRemotes :: Repo -> IO [Repo]
|
||||||
|
@ -127,8 +129,7 @@ remoteNamed n constructor = do
|
||||||
remoteNamedFromKey :: String -> IO Repo -> IO Repo
|
remoteNamedFromKey :: String -> IO Repo -> IO Repo
|
||||||
remoteNamedFromKey k = remoteNamed basename
|
remoteNamedFromKey k = remoteNamed basename
|
||||||
where
|
where
|
||||||
basename = join "." $ reverse $ drop 1 $
|
basename = join "." $ reverse $ drop 1 $ reverse $ drop 1 $ split "." k
|
||||||
reverse $ drop 1 $ split "." k
|
|
||||||
|
|
||||||
{- Constructs a new Repo for one of a Repo's remotes using a given
|
{- Constructs a new Repo for one of a Repo's remotes using a given
|
||||||
- location (ie, an url). -}
|
- location (ie, an url). -}
|
||||||
|
@ -153,8 +154,7 @@ fromRemoteLocation s repo = gen $ calcloc s
|
||||||
endswith suffix k &&
|
endswith suffix k &&
|
||||||
startswith v l
|
startswith v l
|
||||||
filterconfig f = filter f $
|
filterconfig f = filter f $
|
||||||
concatMap splitconfigs $
|
concatMap splitconfigs $ M.toList $ fullconfig repo
|
||||||
M.toList $ fullconfig repo
|
|
||||||
splitconfigs (k, vs) = map (\v -> (k, v)) vs
|
splitconfigs (k, vs) = map (\v -> (k, v)) vs
|
||||||
(prefix, suffix) = ("url." , ".insteadof")
|
(prefix, suffix) = ("url." , ".insteadof")
|
||||||
urlstyle v = isURI v || ":" `isInfixOf` v && "//" `isInfixOf` v
|
urlstyle v = isURI v || ":" `isInfixOf` v && "//" `isInfixOf` v
|
||||||
|
|
|
@ -69,6 +69,12 @@ stagedDetails l repo = do
|
||||||
where
|
where
|
||||||
(metadata, file) = separate (== '\t') s
|
(metadata, file) = separate (== '\t') s
|
||||||
|
|
||||||
|
{- Returns a list of files that have unstaged changes. -}
|
||||||
|
changedUnstaged :: [FilePath] -> Repo -> IO ([FilePath], IO Bool)
|
||||||
|
changedUnstaged l = pipeNullSplit params
|
||||||
|
where
|
||||||
|
params = Params "diff --name-only -z --" : map File l
|
||||||
|
|
||||||
{- Returns a list of the files in the specified locations that are staged
|
{- Returns a list of the files in the specified locations that are staged
|
||||||
- for commit, and whose type has changed. -}
|
- for commit, and whose type has changed. -}
|
||||||
typeChangedStaged :: [FilePath] -> Repo -> IO ([FilePath], IO Bool)
|
typeChangedStaged :: [FilePath] -> Repo -> IO ([FilePath], IO Bool)
|
||||||
|
|
|
@ -52,8 +52,8 @@ matching :: Ref -> Repo -> IO [(Ref, Branch)]
|
||||||
matching ref repo = map gen . lines <$>
|
matching ref repo = map gen . lines <$>
|
||||||
pipeReadStrict [Param "show-ref", Param $ show ref] repo
|
pipeReadStrict [Param "show-ref", Param $ show ref] repo
|
||||||
where
|
where
|
||||||
gen l = let (r, b) = separate (== ' ') l in
|
gen l = let (r, b) = separate (== ' ') l
|
||||||
(Ref r, Ref b)
|
in (Ref r, Ref b)
|
||||||
|
|
||||||
{- List of (refs, branches) matching a given ref spec.
|
{- List of (refs, branches) matching a given ref spec.
|
||||||
- Duplicate refs are filtered out. -}
|
- Duplicate refs are filtered out. -}
|
||||||
|
|
19
Makefile
19
Makefile
|
@ -7,7 +7,7 @@ BASEFLAGS=-Wall -outputdir $(GIT_ANNEX_TMP_BUILD_DIR) -IUtility
|
||||||
#
|
#
|
||||||
# If you're using an old version of yesod, enable -DWITH_OLD_YESOD
|
# If you're using an old version of yesod, enable -DWITH_OLD_YESOD
|
||||||
# Or with an old version of the uri library, enable -DWITH_OLD_URI
|
# Or with an old version of the uri library, enable -DWITH_OLD_URI
|
||||||
FEATURES?=$(GIT_ANNEX_LOCAL_FEATURES) -DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBDAV -DWITH_WEBAPP -DWITH_PAIRING -DWITH_XMPP -DWITH_HOST
|
FEATURES?=$(GIT_ANNEX_LOCAL_FEATURES) -DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBDAV -DWITH_WEBAPP -DWITH_PAIRING -DWITH_XMPP -DWITH_DNS
|
||||||
|
|
||||||
bins=git-annex
|
bins=git-annex
|
||||||
mans=git-annex.1 git-annex-shell.1
|
mans=git-annex.1 git-annex-shell.1
|
||||||
|
@ -160,8 +160,15 @@ linuxstandalone:
|
||||||
ln -sf git-annex "$(LINUXSTANDALONE_DEST)/bin/git-annex-shell"
|
ln -sf git-annex "$(LINUXSTANDALONE_DEST)/bin/git-annex-shell"
|
||||||
zcat standalone/licences.gz > $(LINUXSTANDALONE_DEST)/LICENSE
|
zcat standalone/licences.gz > $(LINUXSTANDALONE_DEST)/LICENSE
|
||||||
|
|
||||||
|
set -e; \
|
||||||
for bin in $(THIRDPARTY_BINS); do \
|
for bin in $(THIRDPARTY_BINS); do \
|
||||||
cp "$$(which "$$bin")" "$(LINUXSTANDALONE_DEST)/bin/" || echo "failed to install $$bin"; \
|
p="$$(PATH=$$PATH:/usr/sbin:/sbin:/usr/local/sbin which "$$bin")"; \
|
||||||
|
if [ -z "$$p" ]; then \
|
||||||
|
echo "** missing $$bin" >&2; \
|
||||||
|
exit 1; \
|
||||||
|
else \
|
||||||
|
cp "$$p" "$(LINUXSTANDALONE_DEST)/bin/"; \
|
||||||
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
install -d "$(LINUXSTANDALONE_DEST)/git-core"
|
install -d "$(LINUXSTANDALONE_DEST)/git-core"
|
||||||
|
@ -200,7 +207,13 @@ osxapp:
|
||||||
cp $(OSXAPP_BASE)/LICENSE $(GIT_ANNEX_TMP_BUILD_DIR)/build-dmg/LICENSE.txt
|
cp $(OSXAPP_BASE)/LICENSE $(GIT_ANNEX_TMP_BUILD_DIR)/build-dmg/LICENSE.txt
|
||||||
|
|
||||||
for bin in $(THIRDPARTY_BINS); do \
|
for bin in $(THIRDPARTY_BINS); do \
|
||||||
cp "$$(which "$$bin")" "$(OSXAPP_BASE)" || echo "failed to install $$bin"; \
|
p="$$(PATH=$$PATH:/usr/sbin:/sbin:/usr/local/sbin which "$$bin")"; \
|
||||||
|
if [ -z "$$p" ]; then \
|
||||||
|
echo "** missing $$bin" >&2; \
|
||||||
|
exit 1; \
|
||||||
|
else \
|
||||||
|
cp "$$p" "$(OSXAPP_BASE)"; \
|
||||||
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
(cd "$(shell git --exec-path)" && tar c .) | (cd "$(OSXAPP_BASE)" && tar x)
|
(cd "$(shell git --exec-path)" && tar c .) | (cd "$(OSXAPP_BASE)" && tar x)
|
||||||
|
|
|
@ -36,6 +36,6 @@ descStandardGroup FullArchiveGroup = "full archive: archives all files not archi
|
||||||
preferredContent :: StandardGroup -> String
|
preferredContent :: StandardGroup -> String
|
||||||
preferredContent ClientGroup = "exclude=*/archive/* and exclude=archive/*"
|
preferredContent ClientGroup = "exclude=*/archive/* and exclude=archive/*"
|
||||||
preferredContent TransferGroup = "not (inallgroup=client and copies=client:2) and " ++ preferredContent ClientGroup
|
preferredContent TransferGroup = "not (inallgroup=client and copies=client:2) and " ++ preferredContent ClientGroup
|
||||||
preferredContent BackupGroup = "" -- all content is preferred
|
preferredContent BackupGroup = "include=*"
|
||||||
preferredContent SmallArchiveGroup = "(include=*/archive/* or include=archive/*) and " ++ preferredContent FullArchiveGroup
|
preferredContent SmallArchiveGroup = "(include=*/archive/* or include=archive/*) and " ++ preferredContent FullArchiveGroup
|
||||||
preferredContent FullArchiveGroup = "not (copies=archive:1 or copies=smallarchive:1)"
|
preferredContent FullArchiveGroup = "not (copies=archive:1 or copies=smallarchive:1)"
|
||||||
|
|
|
@ -73,12 +73,12 @@ moveFile src dest = tryIO (rename src dest) >>= onrename
|
||||||
where
|
where
|
||||||
rethrow = throw e
|
rethrow = throw e
|
||||||
mv tmp _ = do
|
mv tmp _ = do
|
||||||
ok <- boolSystem "mv" [Param "-f",
|
ok <- boolSystem "mv" [Param "-f", Param src, Param tmp]
|
||||||
Param src, Param tmp]
|
|
||||||
unless ok $ do
|
unless ok $ do
|
||||||
-- delete any partial
|
-- delete any partial
|
||||||
_ <- tryIO $ removeFile tmp
|
_ <- tryIO $ removeFile tmp
|
||||||
rethrow
|
rethrow
|
||||||
|
|
||||||
isdir f = do
|
isdir f = do
|
||||||
r <- tryIO $ getFileStatus f
|
r <- tryIO $ getFileStatus f
|
||||||
case r of
|
case r of
|
||||||
|
|
|
@ -118,9 +118,7 @@ decode_c s = unescape ("", s)
|
||||||
handle (x:n1:n2:n3:rest)
|
handle (x:n1:n2:n3:rest)
|
||||||
| isescape x && alloctal = (fromoctal, rest)
|
| isescape x && alloctal = (fromoctal, rest)
|
||||||
where
|
where
|
||||||
alloctal = isOctDigit n1 &&
|
alloctal = isOctDigit n1 && isOctDigit n2 && isOctDigit n3
|
||||||
isOctDigit n2 &&
|
|
||||||
isOctDigit n3
|
|
||||||
fromoctal = [chr $ readoctal [n1, n2, n3]]
|
fromoctal = [chr $ readoctal [n1, n2, n3]]
|
||||||
readoctal o = Prelude.read $ "0o" ++ o :: Int
|
readoctal o = Prelude.read $ "0o" ++ o :: Int
|
||||||
-- \C is used for a few special characters
|
-- \C is used for a few special characters
|
||||||
|
|
|
@ -117,8 +117,7 @@ userDesktopDir :: IO FilePath
|
||||||
userDesktopDir = maybe fallback return =<< (parse <$> xdg_user_dir)
|
userDesktopDir = maybe fallback return =<< (parse <$> xdg_user_dir)
|
||||||
where
|
where
|
||||||
parse = maybe Nothing (headMaybe . lines)
|
parse = maybe Nothing (headMaybe . lines)
|
||||||
xdg_user_dir = catchMaybeIO $
|
xdg_user_dir = catchMaybeIO $ readProcess "xdg-user-dir" ["DESKTOP"]
|
||||||
readProcess "xdg-user-dir" ["DESKTOP"]
|
|
||||||
fallback = xdgEnvHome "DESKTOP_DIR" "Desktop"
|
fallback = xdgEnvHome "DESKTOP_DIR" "Desktop"
|
||||||
|
|
||||||
xdgEnvHome :: String -> String -> IO String
|
xdgEnvHome :: String -> String -> IO String
|
||||||
|
|
|
@ -249,11 +249,9 @@ runHooks kq hooks = do
|
||||||
withstatus change $ dispatchadd dirmap
|
withstatus change $ dispatchadd dirmap
|
||||||
|
|
||||||
dispatchadd dirmap change s
|
dispatchadd dirmap change s
|
||||||
| Files.isSymbolicLink s =
|
| Files.isSymbolicLink s = callhook addSymlinkHook (Just s) change
|
||||||
callhook addSymlinkHook (Just s) change
|
|
||||||
| Files.isDirectory s = recursiveadd dirmap change
|
| Files.isDirectory s = recursiveadd dirmap change
|
||||||
| Files.isRegularFile s =
|
| Files.isRegularFile s = callhook addHook (Just s) change
|
||||||
callhook addHook (Just s) change
|
|
||||||
| otherwise = noop
|
| otherwise = noop
|
||||||
|
|
||||||
recursiveadd dirmap change = do
|
recursiveadd dirmap change = do
|
||||||
|
|
|
@ -62,8 +62,7 @@ parse s = bundle $ go [] $ lines s
|
||||||
| otherwise = parsefail
|
| otherwise = parsefail
|
||||||
go _ _ = parsefail
|
go _ _ = parsefail
|
||||||
|
|
||||||
parseprocess l =
|
parseprocess l = case splitnull l of
|
||||||
case splitnull l of
|
|
||||||
[pid, 'c':cmdline, ""] ->
|
[pid, 'c':cmdline, ""] ->
|
||||||
case readish pid of
|
case readish pid of
|
||||||
(Just n) -> ProcessInfo n cmdline
|
(Just n) -> ProcessInfo n cmdline
|
||||||
|
@ -71,8 +70,7 @@ parse s = bundle $ go [] $ lines s
|
||||||
_ -> parsefail
|
_ -> parsefail
|
||||||
|
|
||||||
parsefiles c [] = (c, [])
|
parsefiles c [] = (c, [])
|
||||||
parsefiles c (l:ls) =
|
parsefiles c (l:ls) = case splitnull l of
|
||||||
case splitnull l of
|
|
||||||
['a':mode, 'n':file, ""] ->
|
['a':mode, 'n':file, ""] ->
|
||||||
parsefiles ((file, parsemode mode):c) ls
|
parsefiles ((file, parsemode mode):c) ls
|
||||||
(('p':_):_) -> (c, l:ls)
|
(('p':_):_) -> (c, l:ls)
|
||||||
|
|
|
@ -18,5 +18,4 @@ import Control.Applicative
|
||||||
getHostname :: IO (Maybe String)
|
getHostname :: IO (Maybe String)
|
||||||
getHostname = catchMaybeIO uname_node
|
getHostname = catchMaybeIO uname_node
|
||||||
where
|
where
|
||||||
uname_node = takeWhile (/= '\n') <$>
|
uname_node = takeWhile (/= '\n') <$> readProcess "uname" ["-n"]
|
||||||
readProcess "uname" ["-n"]
|
|
||||||
|
|
|
@ -71,9 +71,9 @@ touchBoth file atime mtime follow =
|
||||||
r <- c_utimensat at_fdcwd f ptr flags
|
r <- c_utimensat at_fdcwd f ptr flags
|
||||||
when (r /= 0) $ throwErrno "touchBoth"
|
when (r /= 0) $ throwErrno "touchBoth"
|
||||||
where
|
where
|
||||||
flags = if follow
|
flags
|
||||||
then 0
|
| follow = 0
|
||||||
else at_symlink_nofollow
|
| otherwise = at_symlink_nofollow
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -109,9 +109,9 @@ touchBoth file atime mtime follow =
|
||||||
when (r /= 0) $
|
when (r /= 0) $
|
||||||
throwErrno "touchBoth"
|
throwErrno "touchBoth"
|
||||||
where
|
where
|
||||||
syscall = if follow
|
syscall
|
||||||
then c_lutimes
|
| follow = c_lutimes
|
||||||
else c_utimes
|
| otherwise = c_utimes
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#warning "utimensat and lutimes not available; building without symlink timestamp preservation support"
|
#warning "utimensat and lutimes not available; building without symlink timestamp preservation support"
|
||||||
|
|
4
debian/changelog
vendored
4
debian/changelog
vendored
|
@ -1,4 +1,4 @@
|
||||||
git-annex (3.20121128) UNRELEASED; urgency=low
|
git-annex (3.20121211) unstable; urgency=low
|
||||||
|
|
||||||
* webapp: Defaults to sharing box.com account info with friends, allowing
|
* webapp: Defaults to sharing box.com account info with friends, allowing
|
||||||
one-click enabling of the repository.
|
one-click enabling of the repository.
|
||||||
|
@ -31,7 +31,7 @@ git-annex (3.20121128) UNRELEASED; urgency=low
|
||||||
* assistant: Fix syncing to just created ssh remotes.
|
* assistant: Fix syncing to just created ssh remotes.
|
||||||
* Enable WebDAV support in Debian package. Closes: #695532
|
* Enable WebDAV support in Debian package. Closes: #695532
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Wed, 28 Nov 2012 13:31:07 -0400
|
-- Joey Hess <joeyh@debian.org> Tue, 11 Dec 2012 11:25:03 -0400
|
||||||
|
|
||||||
git-annex (3.20121127) unstable; urgency=low
|
git-annex (3.20121127) unstable; urgency=low
|
||||||
|
|
||||||
|
|
2
debian/rules
vendored
2
debian/rules
vendored
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
|
ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
|
||||||
ifeq (install ok installed,$(shell dpkg-query -W -f '$${Status}' libghc-yesod-dev 2>/dev/null))
|
ifeq (install ok installed,$(shell dpkg-query -W -f '$${Status}' libghc-yesod-dev 2>/dev/null))
|
||||||
export FEATURES=-DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBDAV -DWITH_HOST -DWITH_OLD_URI -DWITH_OLD_YESOD -DWITH_WEBAPP -DWITH_PAIRING -DWITH_XMPP
|
export FEATURES=-DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBDAV -DWITH_HOST -DWITH_OLD_URI -DWITH_PAIRING -DWITH_XMPP -DWITH_WEBAPP -DWITH_OLD_YESOD
|
||||||
else
|
else
|
||||||
export FEATURES=-DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBDAV -DWITH_HOST -DWITH_OLD_URI -DWITH_PAIRING -DWITH_XMPP
|
export FEATURES=-DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBDAV -DWITH_HOST -DWITH_OLD_URI -DWITH_PAIRING -DWITH_XMPP
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -1,3 +1,38 @@
|
||||||
|
## version 3.20121211
|
||||||
|
|
||||||
|
This release of the git-annex assistant (which is still in beta)
|
||||||
|
consists of mostly bugfixes, user interface improvements, and improvements
|
||||||
|
to existing features.
|
||||||
|
|
||||||
|
In general, anything you can configure with the assistant's web app
|
||||||
|
will work. Some examples of use cases supported by this release include:
|
||||||
|
|
||||||
|
* Using Box.com's 5 gigabytes of free storage space as a cloud transfer
|
||||||
|
point between between repositories that cannot directly contact
|
||||||
|
one-another. (Many other cloud providers are also supported, from Rsync.net
|
||||||
|
to Amazon S3, to your own ssh server.)
|
||||||
|
* Archiving or backing up files to Amazon Glacier. See [[archival_walkthrough]].
|
||||||
|
* [[Sharing repositories with friends|share_with_a_friend_walkthrough]]
|
||||||
|
contacted through a Jabber server (such as Google Talk).
|
||||||
|
* [[Pairing|pairing_walkthrough]] two computers that are on the same local
|
||||||
|
network (or VPN) and automatically keeping the files in the annex in
|
||||||
|
sync as changes are made to them.
|
||||||
|
* Cloning your repository to removable drives, USB keys, etc. The assistant
|
||||||
|
will notice when the drive is mounted and keep it in sync.
|
||||||
|
Such a drive can be stored as an offline backup, or transported between
|
||||||
|
computers to keep them in sync.
|
||||||
|
|
||||||
|
The following are known limitations of this release of the git-annex
|
||||||
|
assistant:
|
||||||
|
|
||||||
|
* The Max OSX standalone app may not work on all versions of Max OSX.
|
||||||
|
Please test!
|
||||||
|
* On Mac OSX and BSD operating systems, the assistant uses kqueue to watch
|
||||||
|
files. Kqueue has to open every directory it watches, so too many
|
||||||
|
directories will run it out of the max number of open files (typically
|
||||||
|
1024), and fail. See [[bugs/Issue_on_OSX_with_some_system_limits]]
|
||||||
|
for a workaround.
|
||||||
|
|
||||||
## version 3.20121126
|
## version 3.20121126
|
||||||
|
|
||||||
This adds several features to the git-annex assistant, which is still in beta.
|
This adds several features to the git-annex assistant, which is still in beta.
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
This is a collection of problem reports for the standalone OSX app.
|
This is a collection of problem reports for the standalone OSX app.
|
||||||
If you have a problem using it, post it here. --[[Joey]]
|
If you have a problem using it, post it here. --[[Joey]]
|
||||||
|
|
||||||
|
(Some things that should be fixed now have been moved to [[old]].)
|
||||||
|
|
||||||
[[!tag /design/assistant/OSX]]
|
[[!tag /design/assistant/OSX]]
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://www.google.com/accounts/o8/id?id=AItOawkfHTPsiAcHEEN7Xl7WxiZmYq-vX7azxFY"
|
||||||
|
nickname="Vincent"
|
||||||
|
subject="OS/X build 2012-12-12"
|
||||||
|
date="2012-12-13T00:59:51Z"
|
||||||
|
content="""
|
||||||
|
I installed this today from the .dmg.bz2, md5sum 1bb50b3ee5eda3cd7f4b4a70cdae1855 on OS/X 10.8.2
|
||||||
|
|
||||||
|
uname -a
|
||||||
|
Darwin foo 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64
|
||||||
|
|
||||||
|
I installed the app to the Applications folder.
|
||||||
|
|
||||||
|
I had chrome and firefox running, recent versions.
|
||||||
|
|
||||||
|
Double-click and it opens a new chrome window. This came up behind the existing (iconified) window. A nit, but just so you know.
|
||||||
|
|
||||||
|
The configuration part of the app is shown, so far so good.
|
||||||
|
I type in the path I want it to use (~/work/annex) and press the create button.
|
||||||
|
It hangs forever trying to access localhost:55163
|
||||||
|
|
||||||
|
$ ps aux|grep git
|
||||||
|
me 85291 100.0 0.0 2460884 4160 ?? R 11:42am 12:03.72 git init --quiet /Users/me/work/annex/
|
||||||
|
me 85233 0.0 0.3 2687204 44064 ?? S 11:42am 0:00.44 git-annex webapp -psn_0_50204638
|
||||||
|
me 85226 0.0 0.0 2433432 868 ?? S 11:42am 0:00.00 /bin/sh /Applications/git-annex.app/Contents/MacOS/git-annex-webapp -psn_0_50204638
|
||||||
|
me 85515 0.0 0.0 2432768 620 s000 S+ 11:54am 0:00.00 grep git
|
||||||
|
|
||||||
|
$ netstat -an |grep 55163
|
||||||
|
tcp4 0 0 127.0.0.1.55163 127.0.0.1.55207 CLOSE_WAIT
|
||||||
|
tcp4 0 0 127.0.0.1.55163 127.0.0.1.55206 CLOSE_WAIT
|
||||||
|
tcp4 0 0 127.0.0.1.55163 127.0.0.1.55205 CLOSE_WAIT
|
||||||
|
tcp4 0 0 127.0.0.1.55163 127.0.0.1.55201 ESTABLISHED
|
||||||
|
tcp4 0 0 127.0.0.1.55201 127.0.0.1.55163 ESTABLISHED
|
||||||
|
tcp4 0 0 127.0.0.1.55163 127.0.0.1.55199 CLOSE_WAIT
|
||||||
|
tcp4 0 0 127.0.0.1.55163 127.0.0.1.55197 CLOSE_WAIT
|
||||||
|
tcp4 0 0 127.0.0.1.55163 *.* LISTEN
|
||||||
|
|
||||||
|
I was plugged into wired ethernet, no other interfaces up, no VPN.
|
||||||
|
|
||||||
|
I have macports but no haskell packages, which ghc returns nothing.
|
||||||
|
"""]]
|
|
@ -0,0 +1,23 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://www.google.com/accounts/o8/id?id=AItOawkfHTPsiAcHEEN7Xl7WxiZmYq-vX7azxFY"
|
||||||
|
nickname="Vincent"
|
||||||
|
subject="comment 15"
|
||||||
|
date="2012-12-13T01:04:44Z"
|
||||||
|
content="""
|
||||||
|
following up to #14.
|
||||||
|
|
||||||
|
dtruss -p <git --init process>
|
||||||
|
|
||||||
|
shows the same symptom as reported earlier
|
||||||
|
SYSCALL(args) = return
|
||||||
|
workq_kernreturn(0x1, 0x10F31E000, 0x0) = -1 Err#22
|
||||||
|
workq_kernreturn(0x1, 0x10F31E000, 0x0) = -1 Err#22
|
||||||
|
workq_kernreturn(0x1, 0x10F31E000, 0x0) = -1 Err#22
|
||||||
|
workq_kernreturn(0x1, 0x10F31E000, 0x0) = -1 Err#22
|
||||||
|
workq_kernreturn(0x1, 0x10F31E000, 0x0) = -1 Err#22
|
||||||
|
workq_kernreturn(0x1, 0x10F31E000, 0x0) = -1 Err#22
|
||||||
|
...
|
||||||
|
workq_kernreturn(0x1, 0x10F31E000, 0x0) = -1 Err#22
|
||||||
|
dtrace: 339527 drops on CPU 0
|
||||||
|
|
||||||
|
"""]]
|
1
doc/bugs/OSX_app_issues/old.mdwn
Normal file
1
doc/bugs/OSX_app_issues/old.mdwn
Normal file
|
@ -0,0 +1 @@
|
||||||
|
These issues should be fixed now.
|
|
@ -0,0 +1,5 @@
|
||||||
|
[Due to some stupid issue on my and AT&T's part] one of my remote repositories is currently unreachable. I would like to tell the webapp/assistant to not attempt to sync with it, or, at least, modify this error message to be more specific (by telling me which repository is unreachable).
|
||||||
|
|
||||||
|
In a red bubble it says: "Synced with rose 60justin"
|
||||||
|
|
||||||
|
That verbage is the same if they all succeed. The only difference is the red instead of green. Would be nice to know exactly which machine to kick (if I didn't already know, eg I was syncing only with repositories not under my control).
|
33
doc/bugs/git-annex_fix_not_noticing_file_renames.mdwn
Normal file
33
doc/bugs/git-annex_fix_not_noticing_file_renames.mdwn
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
What steps will reproduce the problem?
|
||||||
|
|
||||||
|
~$ mkdir testannex
|
||||||
|
~$ cd testannex/
|
||||||
|
testannex$ git init
|
||||||
|
Initialized empty Git repository in /Users/ed/testannex/.git/
|
||||||
|
testannex$ git annex init "test annex"
|
||||||
|
init test annex ok
|
||||||
|
(Recording state in git...)
|
||||||
|
testannex$ echo "file1" > file1
|
||||||
|
testannex$ git annex add file1
|
||||||
|
add file1 (checksum...) ok
|
||||||
|
(Recording state in git...)
|
||||||
|
testannex$ mkdir directory
|
||||||
|
testannex$ mv file1 directory/
|
||||||
|
testannex$ cat directory/file1
|
||||||
|
cat: directory/file1: No such file or directory
|
||||||
|
testannex$ git annex fix directory/file1
|
||||||
|
git-annex: directory/file1 not found
|
||||||
|
|
||||||
|
|
||||||
|
What is the expected output? What do you see instead?
|
||||||
|
|
||||||
|
git annex fix should fix the symlink. It looks like maybe it's *following* the symlink?
|
||||||
|
|
||||||
|
What version of git-annex are you using? On what operating system?
|
||||||
|
|
||||||
|
checkout: 20d195f compiled on OS X 10.7 using cabal.
|
||||||
|
|
||||||
|
Please provide any additional information below.
|
||||||
|
|
||||||
|
git annex assistant is not noticing file renames either.
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
I updated haskell platform, and now
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
[jtang@x00 git-annex (master)]$ make test
|
||||||
|
|
||||||
|
Assistant/Threads/NetWatcher.hs:26:2:
|
||||||
|
warning: #warning Building without dbus support; will poll for network connection changes [-Wcpp]
|
||||||
|
|
||||||
|
Assistant/Threads/MountWatcher.hs:33:2:
|
||||||
|
warning: #warning Building without dbus support; will use mtab polling [-Wcpp]
|
||||||
|
|
||||||
|
test.hs:11:8:
|
||||||
|
Could not find module `Test.HUnit.Tools'
|
||||||
|
Perhaps you meant Test.HUnit.Text (from HUnit-1.2.5.1)
|
||||||
|
Use -v to see a list of the files searched for.
|
||||||
|
** failed to build the test suite
|
||||||
|
make: *** [test] Error 1
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Looks like a missing dep somewhere with testpack or quickcheck... I haven't had time to figure it out yet, its not git-annex specific but I thought I might log it as a reminder for myself just in case if the osxapp is more borked than usual, I probably need to flush my .cabal directory of installed userland dependancies.
|
|
@ -0,0 +1,8 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="http://joeyh.name/"
|
||||||
|
ip="4.153.8.117"
|
||||||
|
subject="comment 1"
|
||||||
|
date="2012-12-10T19:18:59Z"
|
||||||
|
content="""
|
||||||
|
Test.HUnit.Tools is part of testpack: <http://hackage.haskell.org/package/testpack>
|
||||||
|
"""]]
|
|
@ -0,0 +1,45 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
|
||||||
|
nickname="Jimmy"
|
||||||
|
subject="comment 2"
|
||||||
|
date="2012-12-11T08:29:07Z"
|
||||||
|
content="""
|
||||||
|
yea its a problem with testpack rather than git-annex's test suite,
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
[jtang@laplace git-annex (master)]$ cabal install testpack
|
||||||
|
Resolving dependencies...
|
||||||
|
Configuring testpack-2.1.2...
|
||||||
|
Building testpack-2.1.2...
|
||||||
|
Preprocessing library testpack-2.1.2...
|
||||||
|
[1 of 3] Compiling Test.QuickCheck.Instances ( src/Test/QuickCheck/Instances.hs, dist/build/Test/QuickCheck/Instances.o )
|
||||||
|
[2 of 3] Compiling Test.QuickCheck.Tools ( src/Test/QuickCheck/Tools.hs, dist/build/Test/QuickCheck/Tools.o )
|
||||||
|
|
||||||
|
src/Test/QuickCheck/Tools.hs:33:9:
|
||||||
|
Warning: Fields of `MkResult' not initialised: abort
|
||||||
|
In the expression:
|
||||||
|
MkResult
|
||||||
|
{ok = Just (expected == actual), expect = True,
|
||||||
|
interrupted = False,
|
||||||
|
reason = \"Result: expected \"
|
||||||
|
++ show expected ++ \", got \" ++ show actual,
|
||||||
|
stamp = [], callbacks = []}
|
||||||
|
In an equation for `@=?':
|
||||||
|
expected @=? actual
|
||||||
|
= MkResult
|
||||||
|
{ok = Just (expected == actual), expect = True,
|
||||||
|
interrupted = False,
|
||||||
|
reason = \"Result: expected \"
|
||||||
|
++ show expected ++ \", got \" ++ show actual,
|
||||||
|
stamp = [], callbacks = []}
|
||||||
|
[3 of 3] Compiling Test.HUnit.Tools ( src/Test/HUnit/Tools.hs, dist/build/Test/HUnit/Tools.o )
|
||||||
|
|
||||||
|
src/Test/HUnit/Tools.hs:131:57:
|
||||||
|
`maxDiscard' is not a (visible) constructor field name
|
||||||
|
|
||||||
|
src/Test/HUnit/Tools.hs:177:40: Not in scope: `maxDiscard'
|
||||||
|
cabal: Error: some packages failed to install:
|
||||||
|
testpack-2.1.2 failed during the building phase. The exception was:
|
||||||
|
ExitFailure 1
|
||||||
|
</pre>
|
||||||
|
"""]]
|
|
@ -13,9 +13,10 @@ and use cases to add. Feel free to chip in with comments! --[[Joey]]
|
||||||
|
|
||||||
We are, approximately, here:
|
We are, approximately, here:
|
||||||
|
|
||||||
* Month 6 "9k bonus round": [[!traillink Android]] or [[!traillink desymlink]]
|
* Month 6 "9k bonus round": [[!traillink desymlink]]
|
||||||
* Month 7: user-driven features and polishing
|
* Month 7: user-driven features and polishing;
|
||||||
* Month 8: whatever I don't get to in month 6
|
[presentation at LCA2013](https://lca2013.linux.org.au/schedule/30059/view_talk)
|
||||||
|
* Month 8: [[!traillink Android]]
|
||||||
* Months 9-11: more user-driven features and polishing (see remaining TODO items in all pages above)
|
* Months 9-11: more user-driven features and polishing (see remaining TODO items in all pages above)
|
||||||
* Month 12: "Windows purgatory" [[Windows]]
|
* Month 12: "Windows purgatory" [[Windows]]
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="http://lj.rossia.org/users/imz/"
|
||||||
|
ip="79.165.59.119"
|
||||||
|
subject=""removing" vs drop"
|
||||||
|
date="2012-12-12T13:20:42Z"
|
||||||
|
content="""
|
||||||
|
I don't understand the difference behind:
|
||||||
|
|
||||||
|
> Removing objects also works (and puts back a broken symlink)
|
||||||
|
|
||||||
|
and
|
||||||
|
|
||||||
|
> \"drop\" won't work because they rely on the symlink to map back to the key.
|
||||||
|
|
||||||
|
If a file is removed (its content, which is replaced by a symlink), then it's not present there, so effectively it should be counted as \"dropped\" at this place. So, removing a file without counting it as dropped is something inconsistent, isn't it? Do I misunderstand something?
|
||||||
|
"""]]
|
|
@ -0,0 +1,8 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="http://joeyh.name/"
|
||||||
|
ip="4.153.8.117"
|
||||||
|
subject="comment 2"
|
||||||
|
date="2012-12-12T23:45:42Z"
|
||||||
|
content="""
|
||||||
|
`git annex drop` is a user-level operation built on top of lower-level object removal functions that are also used by other things.
|
||||||
|
"""]]
|
15
doc/design/assistant/blog/day_149__rainy_day.mdwn
Normal file
15
doc/design/assistant/blog/day_149__rainy_day.mdwn
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
Made `git annex sync` update the file mappings in direct mode.
|
||||||
|
To do this efficiently, it uses `git diff-tree` to find files that are
|
||||||
|
changed by the sync, and only updates those mappings. I'm rather happy
|
||||||
|
with this, as a first step to fully supporting sync in direct mode.
|
||||||
|
|
||||||
|
Finished the overhaul of the OSX app's library handling. It seems to work
|
||||||
|
well, and will fix a whole class of ways the OSX app could break.
|
||||||
|
|
||||||
|
Fixed a bug in the preferred content settings for backup repositories,
|
||||||
|
introduced by some changes I made to preferred content handling 4 days ago.
|
||||||
|
|
||||||
|
Fixed the Debian package to build with WebDAV support, which I forgot to
|
||||||
|
turn on before.
|
||||||
|
|
||||||
|
Planning a release tomorrow.
|
53
doc/design/assistant/blog/day_150__12:12.mdwn
Normal file
53
doc/design/assistant/blog/day_150__12:12.mdwn
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
Yesterday I cut another release. However, getting an OSX build took until
|
||||||
|
12:12 pm today because of a confusion about the location of lsof on OSX. The
|
||||||
|
OSX build is now available, and I'm looking forward to hearing if it's working!
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Today I've been working on making `git annex sync` commit in direct mode.
|
||||||
|
|
||||||
|
For this I needed to find all new, modified, and deleted files, and I also
|
||||||
|
need the git SHA from the index for all non-new files. There's not really
|
||||||
|
an ideal git command to use to query this. For now I'm using
|
||||||
|
`git ls-files --others --stage`, which works but lists more files than I
|
||||||
|
really need to look at. It might be worth using one of the Haskell libraries
|
||||||
|
that can directly read git's index.. but for now I'll stick with `ls-files`.
|
||||||
|
|
||||||
|
It has to check all direct mode files whose content is present, which means
|
||||||
|
one stat per file (on top of the stat that git already does), as well as one
|
||||||
|
retrieval of the key per file (using the single `git cat-file` process that
|
||||||
|
git-annex talks to).
|
||||||
|
|
||||||
|
This is about as efficient as I can make it, except that unmodified
|
||||||
|
annexed files whose content is not present are listed due to --stage,
|
||||||
|
and so it has to stat those too, and currently also feeds them into `git add`.
|
||||||
|
|
||||||
|
The assistant will be able to avoid all this work, except once at startup.
|
||||||
|
|
||||||
|
Anyway, direct mode committing is working!
|
||||||
|
|
||||||
|
For now, `git annex sync` in direct mode also adds new files. This because
|
||||||
|
`git annex add` doesn't work yet in direct mode.
|
||||||
|
|
||||||
|
It's possible for a direct mode file to be changed during a commit,
|
||||||
|
which would be a problem since committing involves things like calculating
|
||||||
|
the key and caching the mtime/etc, that would be screwed up. I took
|
||||||
|
care to handle that case; it checks the mtime/etc cache before and after
|
||||||
|
generating a key for the file, and if it detects the file has changed,
|
||||||
|
avoids committing anything. It could retry, but if the file is a VM disk
|
||||||
|
image or something else that's constantly modified, commit retrying forever
|
||||||
|
would not be good.
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
For `git annex sync` to be usable in direct mode, it still needs
|
||||||
|
to handle merging. It looks like I may be able to just enhance the automatic
|
||||||
|
conflict resolution code to know about typechanged direct mode files.
|
||||||
|
|
||||||
|
The other missing piece before this can really be used is that currently
|
||||||
|
the key to file mapping is only maintained for files added locally, or
|
||||||
|
that come in via `git annex sync`. Something needs to set up that mapping
|
||||||
|
for files present when the repo is initally cloned. Maybe the thing
|
||||||
|
to do is to have a `git annex directmode` command that enables/disables
|
||||||
|
direct mode and can setup the the mapping, as well as any necessary unlocks
|
||||||
|
and setting the trust level to untrusted.
|
|
@ -89,8 +89,8 @@ is converted to a real file when it becomes present.
|
||||||
* `git annex sync` updates the key to files mappings for files changed,
|
* `git annex sync` updates the key to files mappings for files changed,
|
||||||
but needs much other work to handle direct mode:
|
but needs much other work to handle direct mode:
|
||||||
* Generate git commit, without running `git commit`, because it will
|
* Generate git commit, without running `git commit`, because it will
|
||||||
want to stage the full files.
|
want to stage the full files. **done**
|
||||||
* Update location logs for any files deleted by a commit.
|
* Update location logs for any files deleted by a commit. **done**
|
||||||
* Generate a git merge, without running `git merge` (or possibly running
|
* Generate a git merge, without running `git merge` (or possibly running
|
||||||
it in a scratch repo?), because it will stumble over the direct files.
|
it in a scratch repo?), because it will stumble over the direct files.
|
||||||
* Drop contents of files deleted by a merge (including updating the
|
* Drop contents of files deleted by a merge (including updating the
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://www.google.com/accounts/o8/id?id=AItOawniCRkhl_W87gOK5eElfsef3FoUsUFpAr4"
|
||||||
|
nickname="Alexandre"
|
||||||
|
subject="Simplifying this kind of setup"
|
||||||
|
date="2012-12-10T14:33:08Z"
|
||||||
|
content="""
|
||||||
|
Maybe it is possible to avoid the XMPP account setup and transferring via XMPP, maybe getting notifications through the SSH connection is possible.
|
||||||
|
|
||||||
|
I'm thinking about a \"git-annex-shell server\" unix socket to which clients would connect using the SSH connection and get update notifications from other clients.
|
||||||
|
"""]]
|
|
@ -0,0 +1,8 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://www.google.com/accounts/o8/id?id=AItOawkk3K0AUduAybbBO_LRRGKOe2zcGeezbzI"
|
||||||
|
nickname="Nathan"
|
||||||
|
subject="comment 5"
|
||||||
|
date="2012-12-11T04:15:49Z"
|
||||||
|
content="""
|
||||||
|
Thanks, Joey; I was using the standalone build, and it seems to be behaving better now.
|
||||||
|
"""]]
|
|
@ -0,0 +1,8 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="http://sunny256.sunbase.org/"
|
||||||
|
nickname="sunny256"
|
||||||
|
subject="comment 4"
|
||||||
|
date="2012-12-09T20:13:47Z"
|
||||||
|
content="""
|
||||||
|
Thanks a lot, Steve. Awesome, got everything on my wishlist. :) A very useful utility, and works perfectly. Will be using this a lot. git-annex-utils is a good name for this, I'm sure if you place it on GitHub or somewhere else you'll get lots of contributions and this could grow to be a project containing many useful utilities for git-annex.
|
||||||
|
"""]]
|
|
@ -0,0 +1,18 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="Steve"
|
||||||
|
ip="92.104.175.136"
|
||||||
|
subject="comment 5"
|
||||||
|
date="2012-12-10T04:07:53Z"
|
||||||
|
content="""
|
||||||
|
I pay attention to feedback ;)
|
||||||
|
|
||||||
|
I'm not done with it yet, I want to add in some options to limit what gets counted.
|
||||||
|
|
||||||
|
For example: If you have two annexed files that contain the same content using the same backend, they will be stored only once in the .git/annex/objects directory but be counted twice by gadu.
|
||||||
|
|
||||||
|
I want to fix that, but I'll leave an option to keep that behavior if you want. I also want to add options to count or not count files that exist in a certain repo. It will be very easy to add options to only count files that you have or don't have locally as well.
|
||||||
|
|
||||||
|
Making it pay attention to environment variables that git and git-annex do would also be a good idea. (like GIT_DIR, etc...)
|
||||||
|
|
||||||
|
I'm open to good ideas that anybody has, unfortunately I can only work on it on the weekends for now.
|
||||||
|
"""]]
|
|
@ -0,0 +1,8 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
|
||||||
|
nickname="Jimmy"
|
||||||
|
subject="comment 4"
|
||||||
|
date="2012-12-10T17:00:43Z"
|
||||||
|
content="""
|
||||||
|
For those that care, I've updated my autobuilder to the latest version of haskell-platform 2012.4.0.0 and it appears to be building correctly.
|
||||||
|
"""]]
|
|
@ -1,4 +0,0 @@
|
||||||
git-annex 3.20121017 released with [[!toggle text="these changes"]]
|
|
||||||
[[!toggleable text="""
|
|
||||||
* Fix zombie cleanup reversion introduced in 3.20121009.
|
|
||||||
* Additional fix to support git submodules."""]]
|
|
32
doc/news/version_3.20121211.mdwn
Normal file
32
doc/news/version_3.20121211.mdwn
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
git-annex 3.20121211 released with [[!toggle text="these changes"]]
|
||||||
|
[[!toggleable text="""
|
||||||
|
* webapp: Defaults to sharing box.com account info with friends, allowing
|
||||||
|
one-click enabling of the repository.
|
||||||
|
* Fix broken .config/git-annex/program installed by standalone tarball.
|
||||||
|
* assistant: Retrival from glacier now handled.
|
||||||
|
* Include ssh in standalone tarball and OSX app.
|
||||||
|
* watch: Avoid leaving hard links to files behind in .git/annex/tmp
|
||||||
|
if a file is deleted or moved while it's being quarantined in preparation
|
||||||
|
to being added to the annex.
|
||||||
|
* Allow `git annex drop --from web`; of course this does not remove
|
||||||
|
any file from the web, but it does make git-annex remove all urls
|
||||||
|
associated with a file.
|
||||||
|
* webapp: S3 and Glacier forms now have a select list of all
|
||||||
|
currently-supported AWS regions.
|
||||||
|
* webdav: Avoid trying to set props, avoiding incompatability with
|
||||||
|
livedrive.com. Needs DAV version 0.3.
|
||||||
|
* webapp: Prettify error display.
|
||||||
|
* webapp: Fix bad interaction between required fields and modals.
|
||||||
|
* webapp: Added help buttons and links next to fields that require
|
||||||
|
explanations.
|
||||||
|
* webapp: Encryption can be disabled when setting up remotes.
|
||||||
|
* assistant: Avoid trying to drop content from remotes that don't have it.
|
||||||
|
* assistant: Allow periods in ssh key comments.
|
||||||
|
* get/copy --auto: Transfer data even if it would exceed numcopies,
|
||||||
|
when preferred content settings want it.
|
||||||
|
* drop --auto: Fix dropping content when there are no preferred content
|
||||||
|
settings.
|
||||||
|
* webapp: Allow user to specify the port when setting up a ssh or rsync
|
||||||
|
remote.
|
||||||
|
* assistant: Fix syncing to just created ssh remotes.
|
||||||
|
* Enable WebDAV support in Debian package. Closes: #[695532](http://bugs.debian.org/695532)"""]]
|
|
@ -116,6 +116,8 @@ will be added later.
|
||||||
|
|
||||||
All content is preferred.
|
All content is preferred.
|
||||||
|
|
||||||
|
`include=*`
|
||||||
|
|
||||||
### small archive
|
### small archive
|
||||||
|
|
||||||
Only prefers content that's located in an "archive" directory, and
|
Only prefers content that's located in an "archive" directory, and
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="http://joeyh.name/"
|
||||||
|
ip="4.153.8.117"
|
||||||
|
subject="comment 4"
|
||||||
|
date="2012-12-10T19:46:01Z"
|
||||||
|
content="""
|
||||||
|
It was a bug in the backup group's preferred content pagespec, introduced by the changes I made to fix the previous problem. Now fixed.
|
||||||
|
"""]]
|
|
@ -0,0 +1,9 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="http://edheil.wordpress.com/"
|
||||||
|
ip="173.162.44.162"
|
||||||
|
subject="comment 5"
|
||||||
|
date="2012-12-11T16:03:04Z"
|
||||||
|
content="""
|
||||||
|
thanks!
|
||||||
|
|
||||||
|
"""]]
|
|
@ -23,9 +23,9 @@ git-annex is designed for scalability. The key points are:
|
||||||
improves this will improve. Scaling to hundreds of thousands of files
|
improves this will improve. Scaling to hundreds of thousands of files
|
||||||
is not a problem, scaling beyond that and git will start to get slow.
|
is not a problem, scaling beyond that and git will start to get slow.
|
||||||
|
|
||||||
To some degree, git-annex works around innefficiencies in git; for
|
To some degree, git-annex works around inefficiencies in git; for
|
||||||
example it batches input sent to certian git commands that are slow
|
example it batches input sent to certain git commands that are slow
|
||||||
when run in an emormous repository.
|
when run in an enormous repository.
|
||||||
|
|
||||||
* It can use as much, or as little bandwidth as is available. In
|
* It can use as much, or as little bandwidth as is available. In
|
||||||
particular, any interrupted file transfer can be resumed by git-annex.
|
particular, any interrupted file transfer can be resumed by git-annex.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
Name: git-annex
|
Name: git-annex
|
||||||
Version: 3.20121128
|
Version: 3.20121211
|
||||||
Cabal-Version: >= 1.8
|
Cabal-Version: >= 1.8
|
||||||
License: GPL
|
License: GPL
|
||||||
Maintainer: Joey Hess <joey@kitenet.net>
|
Maintainer: Joey Hess <joey@kitenet.net>
|
||||||
|
|
|
@ -43,7 +43,7 @@ fi
|
||||||
# system binaries.
|
# system binaries.
|
||||||
ORIG_PATH="$PATH"
|
ORIG_PATH="$PATH"
|
||||||
export ORIG_PATH
|
export ORIG_PATH
|
||||||
PATH=$base/bin:$PATH
|
PATH=$base:$PATH
|
||||||
export PATH
|
export PATH
|
||||||
|
|
||||||
ORIG_GIT_EXEC_PATH="$GIT_EXEC_PATH"
|
ORIG_GIT_EXEC_PATH="$GIT_EXEC_PATH"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue