more design
This commit is contained in:
parent
8c836623b7
commit
200dc632f5
1 changed files with 25 additions and 5 deletions
|
@ -10,11 +10,31 @@ The basic idea is to have a `git annex import --from remote` command.
|
||||||
|
|
||||||
It would find changed/new/deleted files on the remote.
|
It would find changed/new/deleted files on the remote.
|
||||||
Download the changed/new files and inject into the annex.
|
Download the changed/new files and inject into the annex.
|
||||||
Generate a new treeish, with parent the treeish that was exported earlier,
|
And then generate a commit that can be merged (by the command or later by
|
||||||
that has the modifications in it.
|
the user) to make their branch reflect changes made on the remote.
|
||||||
|
|
||||||
Updating the local working copy is then done by merging the import treeish.
|
## generating commits and merging
|
||||||
This way, conflicts will be detected and handled as normal by git.
|
|
||||||
|
For the merge to work correctly, the parent of the generated commit
|
||||||
|
needs to be, when possible, a commit whose tree corresponds to the last
|
||||||
|
tree that was exported to the remote. This way, git merge will treat the
|
||||||
|
remote the same as a normal git remote where changes were made.
|
||||||
|
|
||||||
|
The export log does not record the last exported commit though, only the
|
||||||
|
tree. And the exported tree may not be the tree of any commit in the
|
||||||
|
history; it's often a subtree.
|
||||||
|
|
||||||
|
So, the export log needs to get a commit sha added to it. And it's possible
|
||||||
|
that commit will get garbage collected or not pushed, and so not be
|
||||||
|
available. It could be linked into the git-annex branch as is done for the
|
||||||
|
exported tree, but doing that for a commit is pretty strange. It's also
|
||||||
|
possible for the user to export a tree by sha, so there's no commit.
|
||||||
|
And of course, if no export has been done yet, there would be no commit.
|
||||||
|
|
||||||
|
If the last exported commit is not accessible, or not recorded, seems it
|
||||||
|
would be ok to make a commit with no parent. git merge would then need
|
||||||
|
--allow-unrelated-histories, and it would be more likely for the merge to
|
||||||
|
have conflicts.
|
||||||
|
|
||||||
## command line interface
|
## command line interface
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue