summaryrefslogtreecommitdiff
path: root/Command/Adjust.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-02-25 16:11:13 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-02-25 16:23:24 -0400
commitd9d8b83714e0c297858801c5fbf5bca056738ca8 (patch)
tree306136b4b1ee9b75e22d9bca41f6a70ff457cd46 /Command/Adjust.hs
parentfecc1819270f3249118a2ce8599be7246e0db745 (diff)
adjusted branches, proof of concept
"git annex adjust" may be a temporary interface, but works for a proof of concept. It is pretty fast at creating the adjusted branch. The main overhead is injecting pointer files. It might be worth optimising that by reusing the symlink target as the pointer file content. When I tried to do that, the problem was that the clean filter doesn't use that same format, and so git thought files had changed. Could be dealt with, perhaps make the clean filter use symlink format for pointer files when on an adjusted branch? But the real overhead is in checking out the branch, when git runs the smudge filter once per file. That is perhaps too slow to be usable, although it may only affect initial checkout of the branch, and not updates. TBD.
Diffstat (limited to 'Command/Adjust.hs')
-rw-r--r--Command/Adjust.hs25
1 files changed, 25 insertions, 0 deletions
diff --git a/Command/Adjust.hs b/Command/Adjust.hs
new file mode 100644
index 000000000..b52537a64
--- /dev/null
+++ b/Command/Adjust.hs
@@ -0,0 +1,25 @@
+{- git-annex command
+ -
+ - Copyright 2016 Joey Hess <id@joeyh.name>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module Command.Adjust where
+
+import Command
+import Annex.AdjustedBranch
+
+cmd :: Command
+cmd = notBareRepo $ notDirect $
+ command "adjust" SectionSetup "adjust branch"
+ paramNothing (withParams seek)
+
+seek :: CmdParams -> CommandSeek
+seek = withWords start
+
+start :: [String] -> CommandStart
+start [] = do
+ enterAdjustedBranch UnlockAdjustment
+ next $ next $ return True
+start _ = error "Unknown parameter"