merge: Now also merges synced/master or similar branches, which makes it useful to put in a post-receive hook to make a repository automatically update its working copy when git annex sync or the assistant sync with it.
This commit is contained in:
parent
3afe7af48b
commit
980e9a15e0
4 changed files with 38 additions and 22 deletions
|
@ -1,6 +1,6 @@
|
|||
{- git-annex command
|
||||
-
|
||||
- Copyright 2011 Joey Hess <joey@kitenet.net>
|
||||
- Copyright 2011, 2013 Joey Hess <joey@kitenet.net>
|
||||
-
|
||||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
@ -10,22 +10,29 @@ module Command.Merge where
|
|||
import Common.Annex
|
||||
import Command
|
||||
import qualified Annex.Branch
|
||||
import qualified Git.Branch
|
||||
import Command.Sync (mergeLocal)
|
||||
|
||||
def :: [Command]
|
||||
def = [command "merge" paramNothing seek SectionMaintenance
|
||||
"auto-merge remote changes into git-annex branch"]
|
||||
"automatically merge changes from remotes"]
|
||||
|
||||
seek :: [CommandSeek]
|
||||
seek = [withNothing start]
|
||||
seek =
|
||||
[ withNothing mergeBranch
|
||||
, withNothing mergeSynced
|
||||
]
|
||||
|
||||
start :: CommandStart
|
||||
start = do
|
||||
showStart "merge" "."
|
||||
next perform
|
||||
mergeBranch :: CommandStart
|
||||
mergeBranch = do
|
||||
showStart "merge" "git-annex"
|
||||
next $ do
|
||||
Annex.Branch.update
|
||||
-- commit explicitly, in case no remote branches were merged
|
||||
Annex.Branch.commit "update"
|
||||
next $ return True
|
||||
|
||||
perform :: CommandPerform
|
||||
perform = do
|
||||
Annex.Branch.update
|
||||
-- commit explicitly, in case no remote branches were merged
|
||||
Annex.Branch.commit "update"
|
||||
next $ return True
|
||||
mergeSynced :: CommandStart
|
||||
mergeSynced = do
|
||||
branch <- inRepo Git.Branch.current
|
||||
maybe stop mergeLocal branch
|
||||
|
|
4
debian/changelog
vendored
4
debian/changelog
vendored
|
@ -7,6 +7,10 @@ git-annex (4.20130628) UNRELEASED; urgency=low
|
|||
by the last run of git annex unused. Supported by fsck, get, move, copy.
|
||||
* get, move, copy: Can now be run in a bare repository,
|
||||
like fsck already could. --all is enabled automatically in this case.
|
||||
* merge: Now also merges synced/master or similar branches, which
|
||||
makes it useful to put in a post-receive hook to make a repository
|
||||
automatically update its working copy when git annex sync or the assistant
|
||||
sync with it.
|
||||
* webapp: Fix ssh setup with nonstandard port, broken in last release.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Tue, 02 Jul 2013 15:40:55 -0400
|
||||
|
|
|
@ -148,6 +148,15 @@ subdirectories).
|
|||
Note that sync does not transfer any file contents from or to the remote
|
||||
repositories.
|
||||
|
||||
* merge
|
||||
|
||||
This performs the same merging that is done by the sync command, but
|
||||
without pushing or pulling any data.
|
||||
|
||||
One way to use this is to put `git annex merge` into a repository's
|
||||
post-receive hook. Then any syncs to the repository will update its working
|
||||
copy automatically.
|
||||
|
||||
* addurl [url ...]
|
||||
|
||||
Downloads each url to its own file, which is added to the annex.
|
||||
|
@ -401,13 +410,6 @@ subdirectories).
|
|||
as listed by the last `git annex unused`. The files will have names
|
||||
starting with "unused."
|
||||
|
||||
* merge
|
||||
|
||||
Automatically merges remote tracking branches */git-annex into
|
||||
the git-annex branch. While git-annex mostly handles keeping the
|
||||
git-annex branch merged automatically, if you find you are unable
|
||||
to push the git-annex branch due non-fast-forward, this will fix it.
|
||||
|
||||
* fix [path ...]
|
||||
|
||||
Fixes up symlinks that have become broken to again point to annexed content.
|
||||
|
|
|
@ -20,9 +20,12 @@ Here's how I set it up. --[[Joey]]
|
|||
7. Instruct advanced users to clone a http url that ends with the "/.git/"
|
||||
directory. For example, for downloads.kitenet.net, the clone url
|
||||
is `https://downloads.kitenet.net/.git/`
|
||||
8. Set up a git `post-receive` hook that runs `git annex merge`, and
|
||||
the repository's working tree will automatically be updated when
|
||||
you run `git annex sync` in a clone that can push to the repository.
|
||||
(Needs git-annex version 4.20130703 or newer; older versions
|
||||
can use `git annex sync` in the post-receive hook instead.)
|
||||
|
||||
When users clone over http, and run git-annex, it will
|
||||
automatically learn all about your repository and be able to download files
|
||||
right out of it, also using http.
|
||||
|
||||
Enjoy!
|
||||
|
|
Loading…
Add table
Reference in a new issue