safe-git is now supporting packfiles, which make it significantly faster and is now usable on a day to day basis
It it important to note that git-remote-safe will run ‘git gc’ to repack your git objects database, I can’t see any reasons why you wouldn’t want it to happen, but if you do not, you should avoid using git-remote-safe.
Two builds are available on the safe network (launcher version 0.10.0) to be able to test it. One for linux, one for windows, I don’t have any way to build it for osx, if you do, tell me I’ll be glad to add the file.
This project is only a proof of concept so far, pushing/fetching a project take a really long time because the tool create/read each object of the git repository through the maidsafe launcher which take anormous amount of time
I suppose a way to get around this would be to use 7z as a way to package the files onto the network and inspect them locally to modify and update. This way the network will handle it as a single object. Mean a lot of logic in the client side but im sure it would be possible? Some sort of cached inspection and a index file or the likes? Im not too sure, just spewing out a few thoughts heh.
I thought about that, the problem that arise with this is that, you loose everything that make git useful.
You could simply package your whole .git/objects folder and put it on the safe network, no need for a git tool.
But then you can’t work with different branches for examples, when pushing, you always push all your history, instead of the last 4-5 commits.
Also, it would make it impossible to implement concurrent access, working with other people on a project become impossible.
Git already implement a smart way to package object called packfiles : Git - Packfiles
I don’t support it yet, but I hope I will be able to.
Out of the two executable provided in git-safe, one of them is slowly starting to become a maidsafe command line interface.
git-maidsafe basically provide a set of command to interact with your safe-drive. It provide commands to create/delete folder and file to register longname and service, and one command to initialised an empty git repos.
The thing is, apart from that last command I feel like this is not really related to git and should be split into another project. We would have:
git-maidsafe on one hand that would only contain the git init command (in a more git fashioned way)
$ git maidsafe init /git/myProject
maidsafe-cli (or some other name) that would provide an actual command line session with your safe-drive, and maybe I could look into making it more shell-friendly (auto-completion, command history…etc)
Do you think I should keep it the way it is right now with only one project ? Or do you think it make more sense to split it ?
The idea was to further develop git-maidsafe to provide commands to fork, send merge request and globally interact with git repository, I had to include all those additional commands because init would not work on a folder that doesn’t exist (and it didn’t make sense to create the folder during the init).
I would say that separate commands make it easier to remember which does what.
Having a single command with a pile of options is harder to learn and remember, I think. It would feel strange to call git-maidsafe for non git related operations, too.
Well right now, git-maidsafe is creating some kind of session (that was to avoid having to allow it on the launcher for every command), usage currently look like that:
user@myPC : ~/myGitProject $ git maidsafe
> create-folder /git public
/git created : OK
> create-folder /demo/myProj public
/demo/myProj created : OK
> init-git /demo/myProj
=> Initialised empty Git repository in "/demo/myProj"
user@myPC : ~/myGitProject $
A cli for drive would be very useful. There was one early on but it wasn’t updated when the API last changed. It had ls style directly listing too.
One useful feature was that it had an option to show the http post/response on the console, which was handy for debugging.
I agree with @nice that this would be useful as a separate command, or… you could simulate a simple shell so that the shell provides git, ls, etc commands which operate on your SAFE account. Much like the ftp cli.
That might be quite neat, although something that doesn’t require entering into the shell would still be useful.
safe git ...
safe ls ...
Then just safe to start a shell where you can do the same thing but without typing safe in front of everything. So:
> git ...
> ls ...
Some of this might be done using shell aliases though to save effort.