-
Notifications
You must be signed in to change notification settings - Fork 22
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
Migrate the project to a proper language #25
Comments
+1 In which langages are implémented such extensions ? Dimitri BAELI Le 18 nov. 2016 à 18:11, Arnaud Pflieger [email protected] a écrit : Needs Better testability. For instance, I would like to mesure test coverage. The biggest constraint is that people are currently using git-octopus on various OS : macOS, ubuntu, Windows... If we want to use a compiled language, would it be easy to distribute binaries ? I'm considering python3 with pygit2 for git stuff. Don't hesitate to give opinions :) — |
gitflow is in bash and has no tests. In git/contrib there's bash, python and pearl. |
I looked on homebrew packages prefixed by git-
I skiped a lot of bash projects that are all using the same installation steps Most of them are written in bash and are standalone files. They are simply copied as binaries. So are python or pearl scripts. A few of them are compiled in go, cpp... |
Go is interesting (devops tooling, lightweight), would it fit the dev need ? Which of those have tests ? :-) Dimitri BAELI Le 21 nov. 2016 à 15:25, Arnaud Pflieger [email protected] a écrit : I looked on homebrew packages prefixed by git- git-archive-all : unique python file directly copied to /usr/local/bin via make — |
I spent some time looking at Go actually. A very interesting thing is that the compiler allow to build binaries for all systems, see. So the distribution of binaries would be quite easy. Both go and Python can be easily tested. I have doubt on python now, packaging seems not that great |
Go for go ! ☺ Dimitri BAELI [cid:[email protected]]https://www.lesfurets.com/ From: Arnaud Pflieger [email protected] I spent some time looking at Go actually. A very interesting thing is that the compiler allow to build binaries for all systems, seehttps://golang.org/doc/install/source#go14. So the distribution of binaries would be quite easy. Both go and Python can be easily tested. I have doubt on python now, packaging seems not that great — |
+1 for Go |
+1 for leaving as bash. We use git-octopus in our CI environment and bash means our docker image can remain around 100MB |
Is it a matter of size ? A compiled binary shouldn't be bigger than current scripts (I guess) |
size and dependencies. I wouldn't want to install python just for octopus and binaries need compiling unless you will ship precompiled binaries, in which case what about dynamically linked libraries? We are using Alpine Linux docker image for size and its certainly not compatible with redhat/ubuntu precompiled dynamic binaries. having said that, the current bash implementation depends on perl because it uses |
Is Go a blocker in your case ?
Dimitri Baeli
…________________________________
From: durzo <[email protected]>
Sent: Thursday, November 24, 2016 2:35:09 AM
To: lesfurets/git-octopus
Cc: LesFurets.com; Comment
Subject: Re: [lesfurets/git-octopus] Migrate the project to a proper language (#25)
size and dependencies. I wouldn't want to install python just for octopus and binaries need compiling unless you will ship precompiled binaries, in which case what about dynamically linked libraries? We are using Alpine Linux docker image for size and its certainly not compatible with redhat/ubuntu precompiled dynamic binaries.
having said that, the current bash implementation depends on perl because it uses shasum and some perl regex logic.. it would be nice to see that move to sha1sum which is provided by coreutils and the search and replace done by sed instead of perl if you were staying with bash.
-
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#25 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/ACyNWUJ3PDqKyi1LzluzZ7q4odhgF6FWks5rBOnNgaJpZM4K2tjH>.
|
I agree that dependency on python is problem, especially the version. The plan would be to have precompiled binaries. Here's what go claims to be capable of
We would provide all of them. So do git-lfs https://github.com/git-lfs/git-lfs/releases Talking about perl dependency, here's when I introduced it ad4932d There was an incompatibility of sed between ubuntu and macos if I remember well. MacOS allowed only |
Go binaries should be fine, its just the versions of dynamically linked libraries that I worry about, but it should be OK - happy to give it a try! I dont use mac so wasn't aware of those missing binaries, makes sense now. The only thing you can do in that case is have an OS detection function first that sets paths to the required binaries for each platform. see https://gist.github.com/durzo/892c4f81b255c1f24daba92922224db0 for an example |
I hope we can build binaries without any dependencies. Go standard library has regex for sure. For sha1 sums computations, we should be able to embed the code (so do git itself) |
Actually, go binaries are not that lightweight. I compiled a Hello World, 1.5 MB. git-lfs is 3 MB. We would have something around 2 MB maybe. |
if it removes the dependency on perl 2 MB is fantastic! |
Actually 2MB per binary. We have 2, git-octopus and git-conflict |
+1 for Go as well, it seems to match perfectly the listed constraints. |
I'll might be there tomorrow https://www.meetup.com/gdg-paris/events/235668597/ |
Update: I released a first beta version written in go https://github.com/lesfurets/git-octopus/releases/tag/v2.0-beta.1 |
Hi, any news about the 2.0 release? |
I still miss the conflict resolution feature. I'm not actively working on it :/ |
You mean :
git-octopus conflict
git-octopus merge pattern
That's good for me
Dimitri BAELI
Le 29 mai 2017 à 19:56, Arnaud Pflieger <[email protected]> a écrit :
I still miss the conflict resolution feature. I'm not actively working on it :/
I have a question for you all:
Until know, git-octopus and git-conflict are 2 separate commands based on 2 scripts. This is quite ugly to do in go because it would require 2 different binaries. What do you think about having a single binary with subcommands ?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.
|
Yes. git-octopus
and git-conflict
Sounds good. The ambition is to grow |
As a first step, migrating to cobra (https://github.com/spf13/cobra) would probably help in writing a more consistent CLI. |
yes, that's what i'm using here https://github.com/apflieger/tie. I use libgit2/git2go as well. |
Needs
constrains
The biggest constraint is that people are currently using git-octopus on various OS : macOS, ubuntu, Windows... If we want to use a compiled language, would it be easy to distribute binaries ?
I'm considering python3 with pygit2 for git stuff.
Don't hesitate to give opinions :)
The text was updated successfully, but these errors were encountered: