Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

git push/pull kind of interface #18

Open
erikologic opened this issue Jul 19, 2017 · 0 comments
Open

git push/pull kind of interface #18

erikologic opened this issue Jul 19, 2017 · 0 comments

Comments

@erikologic
Copy link

I like your idea and it's a very well cared repo with a good Readme section - thank you evrignaud for your work.


I would like to see a git push/pull kind of interface inside fim, in order to synchronise between repos.


I'm facing this problem:

  • I have 3 HD: A, B and C
  • The content of A and B is backed up on C
  • I want to keep C synchronised, being sure about data integrity - with 1/2 commands possibly!

It would be cool to have a git push/pull kind of interface.
Maybe, a UUID or network path could be used as an identifier:
On backup:

fim remote add workspace uuid://13152fae-d25a-4d78-b318-74397eb08184

On the workstation:

fim remote add backup smb://home-nas/backup/A

And then run:

fim push backup
fim pull origin

How this could work?

fim remote COMMAND [ALIAS] [LOCATION]

COMMAND
add [ALIAS] [LOCATION]
It will check location for a .fim folder
If so use it, otherwise initialise a new work space

delete [ALIAS]
Delete saved locations

set [ALIAS] [LOCATION]
Change location of ALIAS

ALIAS
An alias name for a repo

LOCATION
ftp://, smb://, etc for network location
uuid:// for a disk location (generally, uuid for linux fs, sn for ntfs)
why use uuid? because drives can be mounted in different locations
using the mount point will create the need for the drive to be in the correct position each time

fim remote add backup smb://home-nas/backup/A

fim push/pull [SOURCE][/SUBDIR] [ORIGIN][/SUBDIR]

push/pull will:

  • load the manifest/log of the two locations
  • check that the two locations are synchronised, with the source of the operation ahead of any given commit in respect with the destination
  • update the destination with data from source, passing the whole commit history plus only the files changed
  • if the two locations diverged in different branch, die informing the user about the error (it could be a list of the different files i.e.)

push and pull are are the same command, although they work in different directions.
push from SOURCE to ORIGIN
pull from ORIGIN to SOURCE

SOURCE and ORIGIN are ALIAS
If SOURCE is omitted, it will default to the current work space
ORIGIN cannot be omitted <-- different behaviour than Git, but because there is no rollback possibilities, ensure user actually wants to make that operation

SUBDIR
It can be used to filter the operations on a given subposition in the repo

fim pull server/subfolder1 

If omitted will mean current position in respect of repo root


Other use case:

A media production factory as server on smb://server/media-root

A new employee, Mr. Smith, start working with the company.
He want to get a subfolder of media-root into his local folder such as %USERPROFILE%\My Documents\WorkingDir or ~/Documents/WorkingDir:

Smith ~/Documents/WorkingDir $ fim init
Smith ~/Documents/WorkingDir $ fim remote add server smb://server/media-root
Smith ~/Documents/WorkingDir $ fim pull server/subfolder1

Mr Smith goes to his assignment

Smith ~/Documents/WorkingDir $ cd subfolder1

When finished he will commit his work:

Smith ~/Documents/WorkingDir/subfolder1 $ fim ci -m "My job done"

Check his work will not conflict with others

Smith ~/Documents/WorkingDir/subfolder1 $ fim pull server

Because of the omitting system, these actually translates to
fim pull localrepo/subfolder1 server/subfolder1

Push the data to the server

Smith ~/Documents/WorkingDir/subfolder1 $ fim push server

And it is really cool now because fim has taken care that everything is in place and will not conflict with Mr Smiths colleagues work!
At the same Mr Smith office will know what files Mr Smith has used and why!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants