Include a git distribution, as many packages on npm depend on it

npm depends on git in the following ways (credit to @isaacs):

[ ] Parsing out the git remote for npm init (see maryrosecook/gitlet#8)
[x] Fetching dependencies that are listed as git urls (gitlet, possibly jsgit)
[ ] Verifying that the git repo is clean on npm version
[ ] Committing and tagging the local repo on npm version (and, optionally, signing said tag by passing the -s arg to git.)

The issue should be closed once a git is found that can run on NodeOS and can do all of these.

Looks like we may have what we need: https://github.com/maryrosecook/gitlet

That looks pretty awesome (gitlet).  I hope my work was somewhat useful to
her.
On Sat, Jan 24, 2015 at 8:12 PM, Dan Kaplun<EMAIL_ADDRESS>wrote:

Looks like we may have what we need:
https://github.com/maryrosecook/gitlet
—
Reply to this email directly or view it on GitHub
https://github.com/NodeOS/NodeOS/issues/67#issuecomment-71347096.

1000 lines of code

O_O

If the repository is not bare, put the directories inside the .gitlet directory

That directory is not standard, don't know how much problems this would bring... :-/ I've open an issue asking for this.

Since the goal in NodeOS is to not ever need real git, it doesn't matter if
gitlet's filesystem format is compatible.  You could store the objects in
leveldb and it would look the same externally.  The only points where
compatibility matters is the hashing algorithm and the network protocols
which gitlet appears to implement correctly (otherwise cloning and pushing
wouldn't work at all)
On Sun, Jan 25, 2015 at 5:24 AM, Jesús Leganés Combarro <
<EMAIL_ADDRESS>wrote:

If the repository is not bare, put the directories inside the .gitlet
directory http://gitlet.maryrosecook.com/docs/gitlet.html#section-31
That directory is not standard, don't know how much problems this would
bring... :-/ I've open an issue asking for this
https://github.com/maryrosecook/gitlet/issues/5.
—
Reply to this email directly or view it on GitHub
https://github.com/NodeOS/NodeOS/issues/67#issuecomment-71367480.

Good point, I forgot that the .git folder is not transmitted :-P I though it would be mandatory for compatibiliy issues, like .gitignore and similar. Ok, then I think maybe we can use it... :-)

Hmm, looking at gitlet in more detail, I don't think it actually implements pack protocol needed for git network transfers.  The clone example is just cloning from another repo on the local disk.
js-git is actually farther along if your goal is to be able to pull down packages over git.  The main piece missing from js-git is the push protocol since I never found a safe way to do it in the browser (which was my main use case and motivation for creating js-git).  But it's quite possible technically with a node.js backend.
Gitlet does have a lot more of the normal git workflow implemented than js-git so the overlap actually isn't that great.  Between the two we should be able to make something that works great for nodeOS.  I believe there is enough in js-git today to do what npm needs (unless npm also uses git push, which is still missing from js-git)

The main piece missing from js-git is the push protocol since I never found a safe way to do it in the browser (which was my main use case and motivation for creating js-git).

Just a suggestion, what about implement git push by using
XmlHttpRequest? This would only allow to use HTTP(S) repos, but
probably it's more than enough on a browser environment... Also, in
the future could be implemented a SSH-like or GIT-like protocol using
websockets... Other repos would need to support it (the same way that
they support HTTP), but a Node.js proxy would be easily feasable :-)

Gitlet does have a lot more of the normal git workflow implemented than js-git so the overlap actually isn't that great.

Yes, seems gitlet has all the common use cases, at least from an UX
point of view.

Between the two we should be able to make something that works great for nodeOS. I believe there is enough in js-git today to do what npm needs (unless npm also uses git push, which is still missing from js-git)

I'm not a npm guru at all, I think I've heard it need to push git tags
and that's why it was not being used in the npm core as a dependency,
but I'm not sure. Anyway, for NodeOS and just only to download
dependencies as a final user (not a developer that could publish
packages), I think a simple git downloader cli tool is just enough
(and for HTTP this is just a special use case of curl... :-) ).
--
"Si quieres viajar alrededor del mundo y ser invitado a hablar en un
monton de sitios diferentes, simplemente escribe un sistema operativo
Unix."
– Linus Tordvals, creador del sistema operativo Linux

Just to clarify explicitly, npm uses git for the following things:

Parsing out the git remote for npm init
Fetching dependencies that are listed as git urls.
Verifying that the git repo is clean on npm version
Committing and tagging the local repo on npm version (and, optionally, signing said tag by passing the -s arg to git.)

At no point does npm ever push anything using git.  All git operations are either fetch or local.
In all of these cases, npm shells out to the system git command found first in the PATH, though this can be overridden by passing in a --git config option pointing to a specific git binary.
Once upon a time, npm used to shell out to the system tar command for creating and extracting packages.  This was replaced with a tar implementation in JavaScript.
It would be desirable to replace the git system dependency with a node implementation of git, but this is not a priority.  Unlike tar, git is: (a) much more stable between operating systems, (b) much less frequently used by npm, and (c) much more difficult to get exactly right.

Verifying that the git repo is clean on npm version
Committing and tagging the local repo on npm version (and, optionally, signing said tag by passing the -s arg to git.)
At no point does npm ever push anything using git. All git operations are either fetch or local.

But this operations are not read-only, that I think is the problem here, isn't it?

But this operations are not read-only, that I think is the problem here, isn't it?

He means you never push over the network, which is exactly where I got stuck in browsers because...

what about implement git push by using XmlHttpRequest?

...because github, nor any of the popular git hosting services will enable CORS headers on their services.  I've asked repeatedly for years, but nobody has done anything about it.  Of course it could be worked around using a proxy, but I don't trust third-party proxies with my git credentials.  Also I don't want to host proxies that can see the credentials for others.
But this problem is doubly not a problem for node-os since you have full network access via node and don't need git push for npm.

Parsing out the git remote for npm init

I haven't implemented this yet, but I think this information is pretty trivial to get.

Fetching dependencies that are listed as git urls.

This is the hardest part, but the good news is I've done it already.

Verifying that the git repo is clean on npm version

I've not implemented this fully, it involves the git index.  It's not too complicated though.  Also gitlet implemented a mostly compatable version of this for it's git status command.  I noticed her index format wasn't quite compitable with real git, but the real format is well documented and not too hard to implement with a real fs backend like node has. (I was trying to do it via the chrome.fileSystem API for chrome packaged apps)

Committing and tagging the local repo on npm version (and, optionally, signing said tag by passing the -s arg to git.)

This is done except for the signing part.  I'm not about to implement gpg in pure javascript.  But if a user wants to sign using a gpg key, we can probably assume they have gpg in path and shell out to it.

In other words, implementing the git needed for nodeOS is 100x easier than the problem I was trying to solve for webpages and chromeapps.  It's quite feasable.

I've updated the original post to include a list of things a NodeOS git has to be able to do. Collaborators, please feel free to update my post as you see fit!

I've done a quick search to see if things has changed and got some happy news :-)

https://www.npmjs.com/package/git-cli seems to be a little bit abandoned but its purposse seems to be just what we are looking for
http://www.nodegit.org/ this is huge: Node.js native bindings for libgit2. They don't have a CLI, but it has GitHub as one of its sponsors... :-)

Ok, didn't see that @secrettriangle did already know about NodeGit :-P

Seems NodeGit guys are not interested on writting a CLI, but are open to Pull-Request with it. I think it could be an easy and interesting task for a new comer :-)

@piranna just to make it clear, libgit2 is massive and our primary goal is get full coverage of it.  We'd be happy to assist anyone who wants to attempt though in our Gitter channel

I may be that new comer ;-)

Was looking at what an npm install with a git url looks like... It runs several things:
What I ran: npm install --verbose https://github.com/wooorm/syllable.git
What we got:
...
npm info git [ 'clone',
npm info git   '--template=/Users/tylerleonhardt/.npm/_git-remotes/_templates',
npm info git   '--mirror',
npm info git   'https://github.com/wooorm/syllable.git',
npm info git   '/Users/tylerleonhardt/.npm/_git-remotes/git-https-github-com-wooorm-syllable-git-b1045c45532c56e12b11b036fc5bc40b' ]

...
npm info git [ 'rev-list', '-n1', 'master' ]

...
npm info git [ 'clone',
npm info git   '/Users/tylerleonhardt/.npm/_git-remotes/git-https-github-com-wooorm-syllable-git-b1045c45532c56e12b11b036fc5bc40b',
npm info git   '/var/folders/rg/g30_83v14m10px9z72kydv1m0000gn/T/npm-60655-0a35b6f8/git-cache-ffe17c081f960e48dd4d7665ce81219e/33b64a761cd6b8c7f08a90ec1b0f509d4a9f4075' ]

...
npm info git [ 'checkout', '33b64a761cd6b8c7f08a90ec1b0f509d4a9f4075' ]

I'm looking in to nodegit to see if it has the capabilities to do these commands. So far, it's not going so well. :-/

What problems have you found?
El 13/12/2015 04:53, "Tyler James Leonhardt"<EMAIL_ADDRESS>escribió:

Was looking at what an npm install with a git url looks like... It runs
several things:
What I ran: npm install --verbose https://github.com/wooorm/syllable.git
What we got:
...
npm info git [ 'clone',
npm info git   '--template=/Users/tylerleonhardt/.npm/_git-remotes/_templates',
npm info git   '--mirror',
npm info git   'https://github.com/wooorm/syllable.git',
npm info git   '/Users/tylerleonhardt/.npm/_git-remotes/git-https-github-com-wooorm-syllable-git-b1045c45532c56e12b11b036fc5bc40b' ]
...
npm info git [ 'rev-list', '-n1', 'master' ]
...
npm info git [ 'clone',
npm info git   '/Users/tylerleonhardt/.npm/_git-remotes/git-https-github-com-wooorm-syllable-git-b1045c45532c56e12b11b036fc5bc40b',
npm info git   '/var/folders/rg/g30_83v14m10px9z72kydv1m0000gn/T/npm-60655-0a35b6f8/git-cache-ffe17c081f960e48dd4d7665ce81219e/33b64a761cd6b8c7f08a90ec1b0f509d4a9f4075' ]
...
npm info git [ 'checkout', '33b64a761cd6b8c7f08a90ec1b0f509d4a9f4075' ]
I'm looking in to nodegit to see if it has the capabilities to do these
commands. So far, it's not going so well. :-/
—
Reply to this email directly or view it on GitHub
https://github.com/NodeOS/NodeOS/issues/67#issuecomment-164218622.

I'm having trouble finding certain flags and arguments.
For example,
Nodegit doesn't seem to have the command: git rev-list implemented. At least their docs don't show it.
Another example,
I couldn't find the flag --mirror for git clone implemented in nodegit or at least their docs didn't mention it.
I'm running in to situations like this all over. I've tried to chat with people on their gitter but no one seems to really be active on it.
I'll keep digging around and see if I can do what we want with it. But I'm not sure yet. Maybe I'll open some issues for these things over on nodegit?

I'll keep digging around and see if I can do what we want with it. But
I'm not sure yet. Maybe I'll open some issues for these things over on
nodegit?

Definitely. Also take in account that some git commands are implemented as
external commands, so maybe you are looking in the bad place... Have you
found the code for the "clone" command? Also, you can be able to use the
GitHub search engine to look over all the repository source code.

I've searched on the nodegit repository and didn't found anything, until I
got to the point it's just a binding over libgit2 :-P The options should be
found at https://github.com/libgit2/libgit2
Have you uploaded somewhere your current progress so I could be able to
take a look?
El 13/12/2015 17:04<EMAIL_ADDRESS><EMAIL_ADDRESS>escribió:

I'll keep digging around and see if I can do what we want with it. But
I'm not sure yet. Maybe I'll open some issues for these things over on
nodegit?

Definitely. Also take in account that some git commands are implemented as
external commands, so maybe you are looking in the bad place... Have you
found the code for the "clone" command? Also, you can be able to use the
GitHub search engine to look over all the repository source code.

Also take in account that some git commands are implemented as external commands, so maybe you are looking in the bad place...

Very possible. It's certainly a lot. I'll keep looking.

Have you found the code for the "clone" command?

The docs can be found here:
http://www.nodegit.org/api/clone/
And here:
http://www.nodegit.org/api/clone_options/
I'll take a look at the code for it.

I would forget by the moment about the --mirror flag and see if it works
without it, the only important bits are the source code files, and for this
just a regular clone is more than enought, isn't it? :-D
El 13/12/2015 17:51, "Tyler James Leonhardt"<EMAIL_ADDRESS>escribió:

Also take in account that some git commands are implemented as external
commands, so maybe you are looking in the bad place...
Very possible. It's certainly a lot. I'll keep looking.
Have you found the code for the "clone" command?
The docs can be found here:
http://www.nodegit.org/api/clone/
And here:
http://www.nodegit.org/api/clone_options/
I'll take a look at the code for it.
—
Reply to this email directly or view it on GitHub
https://github.com/NodeOS/NodeOS/issues/67#issuecomment-164276883.

Hey ya'll, if you need help with NodeGit stuff, ping me directly in Gitter. Right now the team is focusing on thread safety issues and cross platform builds, so the Gitter channel may not be as active as before.
NodeGit is highly capable, and also almost 100% generated, so not all docs are perfect. Use libgit2 as your main source of truth and NodeGit should have an equivalent API.

Making a checklist for myself and for you guys to see how it's coming:
Keep in mind, I'm going for MVP here... not a full git cli... for now :)
Checklist

[x] git config --get remote.<remote>.url
[ ] git rev-list -n1 master
[ ] git checkout [something]
[ ] git clone [param] [param]
[ ] git clone --template=[value] --mirror [param] [param]

I'm currently hung up from a couple of thing:

a certain function I need isn't generated yet (working with nodegit people to get this done. PR and all :smile:)
I broke my npm... don't ask me how, but it's fixed now
Christmas :stuck_out_tongue:

Good job, specially the part of working with the nodegit guys! :-D
El 26/12/2015 06:45, "Tyler James Leonhardt"<EMAIL_ADDRESS>escribió:

Making a checklist for myself and for you guys to see how it's coming:
Keep in mind, I'm going for MVP here... not a full git cli... for now :)
Checklist

git config --get remote..url
git rev-list -n1 master
git checkout [something]
git clone [param] [param]
git clone --template=[value] --mirror [param] [param]

I'm currently hung up from a couple of thing:

a certain function I need isn't generated yet (working with nodegit
people to get this done. PR and all [image: :smile:])
I broke my npm... don't ask me how, but it's fixed now
Christmas [image: :stuck_out_tongue:]

—
Reply to this email directly or view it on GitHub
https://github.com/NodeOS/NodeOS/issues/67#issuecomment-167281113.

Update to notify everyone of ^

Don't worry about opening them several issues, just work on them on different feature branchs.

@tylerl0706 hi I have worked on a "git cli" inspired JavaScript interface. It is far from complete especially clone, checkout and remote have not even started yet. I believe the way to go would be to have it as JS module so on top of that another module could provides the cli interface. Please have a look at https://github.com/thisconnect/nodegit-kit
I try to keep it simple, with native Promises and not use any magic nor too many dependencies. :)
Would appreciate any feedback.

@thisconnect Looks awesome! This is on top of http://www.nodegit.org/? I've got a few cli calls implemented with NodeGit but it's just so powerful that I get lost in it sometimes haha
If I'm reading you correctly:
nodegit-cli
nodegit-kit
NodeGit
where nodegit-cli is built on nodegit-kit and nodegit-kit is built on NodeGit?

NodeGit dev here. This looks awesome! I saw your blocking issues and I'll try to look into them this weekend.

@johnhaley81 welcome! Thank you very much for your aid!

where nodegit-cli is built on nodegit-kit and nodegit-kit is built on NodeGit?

@tylerl0706 Yes exactly! NodeGit-CLI could something like minimist for argv and use NodeGit-Kit's API + transform the results to process.stdout

I've got a few cli calls implemented with NodeGit but it's just so powerful that I get lost in it sometimes haha

Me too, I get totally lost with low level libgit2 / NodeGit, that is why I started nodegit-kit. So far I mainly needed to do init, commit and diff / status. They are very incomplete as git cli has so tons of options. I usually print parts of https://git-scm.com/docs
Please have a look at the code and tests and feel free to open an issue at nodegit-kit to discuss details or if you have questions.

Hi @tylerl0706, did you got any progress with your git client? I have been working in the last weeks in a full rewrite from scratch of nsh and with these two ones the hability of logon to create new users we could be able to release the 1.0 version... :-)

Hey @piranna! Sorry for the leave of absence!  Now I've found a job and am only taking 2 classes so my free time has increased which means more time for NodeOS!
I'm really excited to dig in to nodegit-kit (Thank you so much @thisconnect!) and pick up working on the git cli :)
More soon! Super excited for version 1.0. Lets do this!

Yeah, I have been really busy last two months with my new job, too... :-/

@piranna: Congrats on the new job! :D
I'd like to talk about what should be the bare minimum git cli. Git has a ton of flags...
'-C <path>'
'-c <name>=<value>'
'--exec-path[=<path>]'
'--html-path'
'--man-path'
'--info-path'
'-p, --paginate'
'--no-pager'
'--git-dir=<path>'
'--work-tree=<path>'
'--namespace=<path>'
'--bare'
'--no-replace-objects'
'--literal-pathspecs'
'--glob-pathspecs'
'--noglob-pathspecs'
'--icase-pathspecs'

Not to mention each subcommand has a bunch of flags too.
What should I prioritize?

What should I prioritize?

Wasn't there a list of the steps npm is executing?

Indeed...

git config --get remote..url
git rev-list -n1 master
git checkout [something]
git clone [param] [param]
git clone --template=[value] --mirror [param] [param]

There are a couple that nodegit-kit doesn't support yet. So I can work with @thisconnect and the NodeGit team to see about getting these in.

git config --get remote..url
git rev-list -n1 master
git checkout [something]
git clone [param] [param]
git clone --template=[value] --mirror [param] [param]
There are a couple that nodegit-kit doesn't support yet. So I can work
with @thisconnect and the NodeGit team to see about getting these in.

Then you've answered yourself ;-)
If nodegit support get starved and you want to progress on other things,
you can ensure it supports the standard user workflow (clone, pull, commit,
push) and maybe some extras like stash, log and tree.

@piranna: https://github.com/golbin/git-commander take a look at this!

@piranna: https://github.com/golbin/git-commander take a look at this!

This does look really well put together - I would love a good interface like this! However, it uses git command line internally, so this doesn't quite solve our problem.

@piranna: https://github.com/golbin/git-commander take a look at this!

Blessed is awesome... :-D

@Compynerd255 I missed that lol oh well.
I had a bit of a road block with the CLI. (NodeGit didn't like my OS :( ) but I've got Vagrant and I'm back on track. I'm a bit concerned about actually getting NodeGit working on NodeOS. If I had problems on OS X, we might run in to issues with NodeOS, no? NodeGit is still an incredible piece of software and is exactly what we need, but I just have that worry in the back of my head.
I've been pretty busy with class, work, and this big project due at the end of the week, but I'm picking away at it!

I'm a bit concerned about actually getting NodeGit working on NodeOS. If I had problems on OS X, we might run in to issues with NodeOS, no?

If it works on a regular Linux system, it should work on NodeOS. Problems would arise about using dynamic libraries, but probably it would be possible to tune-up them to compile statically.
So... don't worry, and one step at a time ;-)

@piranna I've definitely considered that route and would be happy to help once it comes to that point

@piranna I've definitely considered that route and would be happy to help once it comes to that point

Cool, thank you! :-)

@piranna mind if I PM you? What's you're preferred method?

You can send an email.

@piranna Since here is no progress since march i'd have started my own git client for NodeOS.
https://github.com/luii/nogit and i will maintain this repository, so you can tick the git client on the Alpha

Thanks for the initiative :-) How do you plan to do it? Do you have some
working code? I think it would make sense to mark the tick when we have the
basic functionality needed by npm, what do you think?
And thanks for give me pressure to try to do something with the nsh
rewrite... :-P
El 16/6/2016 19:37, "Philipp Czarnetzki"<EMAIL_ADDRESS>escribió:

@piranna https://github.com/piranna Since here is no progress since
march i'd have started my own git client for NodeOS.
https://github.com/luii/nogit and i will maintain this repository, so you
can tick the git client on the Alpha
https://github.com/NodeOS/NodeOS/issues/37
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/NodeOS/NodeOS/issues/67#issuecomment-226557987, or mute
the thread
https://github.com/notifications/unsubscribe/AAgfvnc7wmNNgWzCbAWATANbiStGsZ3gks5qMYnfgaJpZM4CipO9
.

@luii thanks for the initiative! I haven't had time to really make any progress. After I graduated in May, I've been traveling around Europe. @piranna not Spain unfortunately :P I'll check things out when I get all settled in to my new apartment in about a month.

@piranna indeed i have working code! Sometimes i search through the NodeOS issues and look for things that interest me.

Sometimes i search through the NodeOS issues and look for things that
interest me.

That's the way I intended people to collaborate :-) Maybe should I put it
more clear on the readme?

That's the way I intended people to collaborate :-) Maybe should I put it
more clear on the readme?

I assume that by default that's what everyone does, but it wouldn't hurt to add it. :)

gitkit is a new implementation of git in pure Javascript, maybe we can use it for the git client of NodeOS? If so, probably it would be happily accepted on npm itself... :-)
/cc @SamyPesse

@piranna What is your use case exactly ? Provides a Git cli inside the NodeOS ? or provides a Git library for other tools to use it?

@piranna What is your use case exactly ? Provides a Git cli inside the NodeOS ? or provides a Git library for other tools to use it?

First, provide a git cli command compatible with the oficial one available in other OSes (same arguments, flags, parameters...) just with the basic functionality needed by npm to work with git repos (you have a list of them on this issue), and after that in the long term, if possible add this functionality directly on npm itself so there will be no need for a external git command both on NodeOS or any other operating system (specially Windows, that's a pain in the *ss on this point...).

GitKit is not ready for this, but feel free to add issues for:
git config --get remote..url
git rev-list -n1 master
git checkout [something]
git clone [param] [param]
git clone --template=[value] --mirror [param] [param]

I think all of these can be implemented with a few days of work.

feel free to add issues

Done :-)

Wow, GitKit looks amazing. This would be an alternative to NodeGit with a custom CLI on top of that, right?

Any update on this? Could someone give a hand and coordinate with @SamyPesse to fill the missing gaps on GitKit.js?

Try using the npm package called gitlet-for-nodeos, I use the package on NOS (Node.js Operating System).

Try using the npm package called gitlet-for-nodeos, I use the package on NOS (Node.js Operating System).

gitlet author declared is not willingly to add the missing functionality to be used as a git cli replacement for npm. Do you know if they are fixed elsewhere?

No

I've found a temporal hack to workaround the problem on Node.js about stdio and I've got some progress on nsh, so now it's mostly usable. I will continue improving it and working on automate the NodeOS updates, but for me, the git client is just the last block needed to release the final 1.0 version :-)
(Or at least a frozen RC3 to give the opportunity to fix the last tiny bits that would surface and start the organization of NodeOS 2.0... :-P )

@piranna Since gitkit's author wont add the functionality, im currently writing nogit with the specified requierments. But for this i need Information about things stated above

jsgit seems a bit complicated, im using nodegit because its simpler.
$ git rev-list -n1 master
$ git checkout [something]
$ git clone [param] [param]

those three commands are working with commander, but im switching to yargs because commander is not maintained anymore and it has "short number arguments".
$ git config --get remote..url
$ git clone --template=[value] --mirror [param] [param]

These are the only two commands i need more information about, what does template and mirror do? Ive gone through git's documentation but i dont understand how this is meant, maybe you can give me some clues

$ git config --get remote..url
$ git clone --template=[value] --mirror [param] [param]
These are the only two commands i need more information about, what does template and mirror do? Ive gone through git's documentation but i dont understand how this is meant, maybe you can give me some clues

Sorry, but I'm not your guy here :-P Why don't you ask on the nodegit or libgit forums? Maybe @tbranyen can help you better, he is a nodegit collaborator and posted before on this issue offering help...

Hi! I'm all settled in to my new place now. So I can actually do things.
so I'm in one of my repos and:
git config --get remote.origin.url
returns:
git@github.com:tylerl0706/my-project.git
What do you think this relates to?

@luii here is a clue I found about mirror: https://github.com/libgit2/libgit2sharp/issues/577#issuecomment-29581008
As for template I'm not sure... I think it just specifies a folder to add contents into. The config get remote.url can be found with our config api.

We can always ask npm ;)

They are all at npm.camp right now, I could ask @isaacs haha

@luii I think I had the git config --get remote..url working with NodeGit at one point. I did use commander but if you wanted me to do that one, I could pick it up :)

@luii I think I had the git config --get remote..url working with NodeGit
at one point. I did use commander but if you wanted me to do that one, I
could pick it up :)

As once told me my operating systems teacher, "make it work, and after that
optimize it" ;-) Commander is fine for me now, let's clean it later. Good
job guys, we almost have it!!! :-D How could we be able to test it? Just by
downloading a github repo as a dependency would be enought, or should we
test it against private repos too?

@luii I worked on it just a bit... it only handled that one case... but this code successfully logs:
git config --get <whatever>
using NodeGit and Commander
var pathToRepo = require("path").resolve("./");
NodeGit.Repository.open(pathToRepo).then(function (repo) {
        return repo.config();
}).then(function(config) {
        return config.getString(program.get);
}).then(function(stuff){
        console.log(stuff);
},
function(error) {
        console.log(error);
});

@piranna: I'm not sure what extra work would be required to get private repos to work. Anyone know how npm does it? We could always try to do a private repo when we get public repos working and if it doesn't work, save it for later unless it's really easy to add

We could always left private repos for after post 1.0...

Perhaps npm uses the git creds that are stored in git config?

Perhaps npm uses the git creds that are stored in git config?

Probably, since it's currently using an external git command.

@piranna nogit has working commands but with commander you cannot make options like this -n1,
yargs on the other hand is maintained and has such a solution.

@luii did you hack together a solution for -n1 with Commander or have you not gotten to that part yet? I was confused because you listed that one in the completed section up above haha

Or did you already move to yargs?

already moved to yargs because commander.js dont support -n1 arguments

@luii: ah gotcha. Well if you'd like me to do:
git config --get <whatever>
let me know how I can help! Is your work in a repo somewhere?

@luii I had never looked at yargs until you mentioned it! It looks really nice!

I find argparse better, but in the end I will always be a pythonist... :-P
El 3/8/2016 20:55, "Tyler James Leonhardt"<EMAIL_ADDRESS>escribió:

@luii https://github.com/luii I had never looked at yargs until you
mentioned it! It looks really nice!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/NodeOS/NodeOS/issues/67#issuecomment-237335721, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAgfvg73AwnyKxnfCzhjkrGAfmC_6RDaks5qcOQrgaJpZM4CipO9
.

Says the NodeOS lead dev ;)

Says the NodeOS lead dev ;)

Love your contradictions :-D

@piranna ... PyOS coming soon...
Anyway, @luii, just let me know how I can help! I'm excited to put the finishing touches on the 1.0!

I was very busy because im working from 6am to 5pm here in Germany as a Electrician
@tylerl0706 as soon as i have more time i let you know

PyOS coming soon...

I was thinking to replace Node.js for CPython on nodeos-barebones as a proof of concept, not related to NodeOS, just to try it and know how difficult it is.  O_O That are too much hours... I spend all the day working too, but I'm on several projects (NodeOS one of them).

@piranna The Problem is, that i cant get a Job/education as programmer unless i have the right qualification - this is where germany sucks, i would love to work full time on my projects because i've done this since i was little

The Problem is, that i cant get a Job/education as programmer unless i have the right qualification - this is where germany sucks

Yes, I've read about the job market in Germany and although being a rich country, the "mini-jobs" concept really sucks :-( I recommend you to work as a contractor over internet, it's not easy to find projects (at least for me), but usually they don't pay too bad and also allow you to get some experience.
Another option that I have been considering lately each time more is about how to monetize NodeOS and get some revenues so we can work on it at least part-time and not only on our spare time. I have been contacted in the past to use it in production environments and I suspect it's being used already, problem with that is how to do it in an open model so it's fair for everybody... I've open an issue to discuss this.

i would love to work full time on my projects because i've done this since i was little

That's my dream too, to work on my projects and be payed for doing so ;-)

@piranna I've implemented the commands from above and its working, i did created a workaround for the nodegit --mirror problem (only the garbage collection of nogit dont work yet)
You can find it here, it should work now and we can roll out 1.0.0

Oh my, that's great!!! :-D What tests have you done for that? Can you be
able to include it as a nodeos user dependency and try to download a git
dependency from inside NodeOS and later do a pull-request?
I think it's better to release RC3 instead so we can focus on document and
create a better website and also give some time to test NodeOS to have a
pulished 1.0, how do you see it?
El 5/8/2016 17:23, "Philipp Czarnetzki"<EMAIL_ADDRESS>escribió:

@piranna https://github.com/piranna I've implemented the commands from
above and its working, i did created a workaround for the nodegit --mirror
problem (only the garbage collection of nogit dont work yet)
You can find it here https://github.com/luii/nogit, it should work now
and we can roll out 1.0.0
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/NodeOS/NodeOS/issues/67#issuecomment-237880096, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAgfvm-yEWliga9JWQE6P-wzOGq1tieWks5qc1VogaJpZM4CipO9
.

What tests have you done for that?

Do you mean Tests that are in a test folder or just try to call it?
Because writing tests for a binary is somehow difficult, but i could wrap the commands into a high level function.
For example:
nogit.clone(path, options).then(...)

nogit.config(...)

and so on

Do you mean Tests that are in a test folder or just try to call it?

I was meaning to call it, to know what exactly functionality we have at this moment.

Because writing tests for a binary is somehow difficult, but i could wrap the commands into a high level function.

That would be great, and in fact a good design architecture :-)

@piranna: can you make a checklist for getting from RC3 to 1.0?
I'd love to work on the website or even write a "getting started guide" or like "NodeOS exercises" or something

@piranna: can you make a checklist for getting from RC3 to 1.0?

As a first start, everything that's defined for the 1.0.0 milestone, and also the new version of the website and mark as outdated the old blog entries. Maybe create a Facebook account and link the Twitter one with it to provide updates, I have tried it in the past but I'm not able since I have already linked my personal account. I'm going to review the issues and create new ones.

I have just review all the open issues and moved several of them to the 1.0.0 milestone. There's a lof of them, but some are related and others are somewhat tangential (wiki, website, documentation...) but all of them seems to be easy to manage also for newcomers, so I think it will be possible to move this forward in a timely way. Any volunteer to help? :-)

Is there a build of NodeOS that works with docker? I'd like to try it out

Unfortenetly not @tylerl0706 we only have the old prebuild images, i've done research in #227 but unless we get the userfs to mount inside docker its not possible to create new images

i've done research in #227 but unless we get the userfs to mount inside docker its not possible to create new images

One solution would be to create a Data Volume with the content of usersfs and bind it when executing Docker on /tmp. I don't like it too much because this way Docker makes a copy of the filesystem as a container, but we could find in the future a better solution.

@luii, how are you going with nogit?

the needed commands are implemented, but i dont make progress with the tests because im working to much.
If someone wants to help me with the tests just ask.
this afternoon i will push all changes to the remote

Tell us when you the changes uploaded so we can review them and help you with the tests.

@piranna Pushed everything i've done to the repository

@luii, what's the current status of nogit? I have done some pull-requests but I don't know if you have done some progresses with it...

Unfortently not, im really busy with exams

Unfortently not, im really busy with exams

Ok, they have priority. Could you be able to give me access to the repo? I would like to fix the tests and move it forward, since is one of the remaining things for the RC3 and want to check it's working properly...

Yes sure

We have just found that there was another nogit project with the same purposse of our one, and based on @creationix js-git library. We could take a look on it, if it works maybe npm guys are more willingly to include it because there would be no more need to include full nodegit library and instead use our one to build a more complete git client, what do you think? How we could be able to test that it has all the required functionality beyond check that it can download and install a package? Is it just enough that it has the git commands listed before?

Wow @piranna... you hit that jackpot with the other nogit :) I know it's not maintained... but it seems to already have all the functionality needed.
I am worried about the regressions with new versions of npm... but if we can get 1 working, we'll at least have something to iterate off of.

Merits are from @luii, not mine ;-) I think we can fork it under NodeOS
organization and maintain it, how do you see it? :-)
El 24/9/2016 7:55 PM, "Tyler James Leonhardt"<EMAIL_ADDRESS>escribió:

Wow @piranna https://github.com/piranna... you hit that jackpot with
the other nogit :) I know it's not maintained... but it seems to already
have all the functionality needed.
I am worried about the regressions with new versions of npm... but if we
can get 1 working, we'll at least have something to iterate off of.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/NodeOS/NodeOS/issues/67#issuecomment-249378265, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAgfvkU7DqoCFU-3aGLDdeO-EcSLAiG1ks5qtWQOgaJpZM4CipO9
.

I can help maintain if if you're worried about resources (since it was originally based on some of my code).

Fork away! :)

I can help maintain if if you're worried about resources (since it was originally based on some of my code).

That would be great! :-D What better person than you to maintain something based on your lib? ;-)

Fork away! :)

So forked ;-) I think the first thing would be to add tests, @luii's nogit has some progress on this that could be used as basis, but would be better to identify the exact use cases. I think the most basic and important one is to download current content of a git repository, so I would start with it.

@piranna Nodegit supports prebuilds of libgit2 which cuts down the install time.
On the other hand nodegit wont install with Node.js 7.x.x means that were stuck with 6.x.x.
But i think that is a minor problem considering the last years where we had Node 0.12.x.
What do you think? Nodegit supports a richer feature set than js-gitkit and is more or less well maintained and nodeos-git supports all neccesarry commands and im activly adding more features!

since now we have a good shell and the only missing thing for final 1.0.0 version is the git client, how do you see it if we could have it ready for the keynote of this saturday? What's the actual status of the diferent alternatives? Any of them is ready to be used as a git client to install packages with npm from inside NodeOS?

nodegit got updated and should run on Node.js 7.x again

To sumarize this long thread a bit:
Needed commands

git config --get remote..url
git rev-list -n1 master
git checkout [something]
git clone [param] [param]
git clone --template=[value] --mirror [param] [param]

Libraries

gitlet, but author is not willing to improve it
git
@creationix js-git
nodegit
@thisconnect nodegit-kit, wrapper of nodegit
@SamyPesse gitkit

CLIs

git-cli, focused for environments without git client
@tylerl0706 ?
@luii nogit. based on nodegit
@whyleee nogit, based on js-git and seems to be complete

We have several things to choose now... :-P It's time to decide to focus on what one. Probably the best options are use a nodegit-based one, or check if @whyleee nogit is ready to use. The point of this last one is that it would clean the path to propose @creationix js-git to be integrated directly on npm itself as a dependency. Any other idea or volunteer to integrate it?

I wouldn't integrate js-git as-is into npm, I've learned a lot since writing it.  But if someone gives me npm's exact requirements and even a proposed API, I might be able to make it happen.
I've since implemented git in lua and use it heavily for luvit's package manager.

  I've never implemented the diff and merge logic in any of my git implementations.

there is also https://www.npmjs.com/package/nodegit-clone based on nodegit

I wouldn't integrate js-git as-is into npm, I've learned a lot since writing it. But if someone gives me npm's exact requirements and even a proposed API, I might be able to make it happen.

I'm not saying to integrate js-git as-is, but if we can have a pure javascript git cli with all the npm needed functionality, then it would be easy to convince them to integrate it (or an improved source code, as you have suggested). So far, seems the npm exact requirements is just the list we have put before:

git config --get remote..url
git rev-list -n1 master
git checkout [something]
git clone [param] [param]
git clone --template=[value] --mirror [param] [param]

Regarding the proposed API... it's up to you :-) Callbacks is a safe bet, don't know if npm have adopted Promises yet.

 I've never implemented the diff and merge logic in any of my git implementations.

Obviously, so first we would need to decide if we want some thing soon, we want something that could be later integrated on npm, or a full featured git client. I vote to check if any of the currently available git clients has all the needed functionality (nogit seems to be good candidates, both @luii and @whyleee ones) so we can release NodeOS 1.0.0 soon, and later decide if find a good pure javascript implementation using js-git that could be integrated in npm itself and keep improving and adding functionality later to have a full git client, or go directly with nodegit. After so much people working a lot more than me on this task, I feel I'm not in the position to take a decission on this point.

@piranna i have the minimum needed functionality for the git client. one little problem i have is that the prebuild images for nodegit arent compatible with Arch Linux but there is a fix, youll need to run the install process with BUILD_ONLY=1 environment variable.
You can find the client under the 'Next' Branch

@luii are they compatible with Ubuntu? How they would work with a musl-based environment like NodeOS?

@piranna Ive tried to compile it with my usersfs fork and got this:
Generating nodeos user folder
npm WARN deprecated<EMAIL_ADDRESS>Use uuid module instead
npm WARN deprecated<EMAIL_ADDRESS>Use mz or fs-extra^3.0 with Promise Support
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/cat -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/cat
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ln -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/ln
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/cp -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/cp
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/mkdir -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/mkdir
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ls -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/ls
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/mv -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/mv
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/rm -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/rm
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ifconfig -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/ifconfig.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ip -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/ip.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/man -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-man/man.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/nsh -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/server.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/pwd -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-pwd/pwd.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/sh -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-sh/sh.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/davius -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/server.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/loadtest -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/bin/loadtest.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/testserver-loadtest -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/bin/testserver.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/wget -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/node-wget/cli.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/nodeos-git -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/bin/nogit.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/npm -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/npm/bin/npm-cli.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/node-ntp-client -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/ntp-client/bin/node-ntp-client
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/performance -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/performance/bin/performance.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/pstree -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/pstree/server.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/slap -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/slap.js

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/kexec
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/kexec/build“ wird betreten
  CXX(target) Release/obj.target/kexec/src/kexec.o
  SOLINK_MODULE(target) Release/obj.target/kexec.node
  COPY Release/kexec.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/kexec/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/node-uname
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/node-uname/build“ wird betreten
  CXX(target) Release/obj.target/uname/uname.o
  SOLINK_MODULE(target) Release/obj.target/uname.node
  COPY Release/uname.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/node-uname/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/posix
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/posix/build“ wird betreten
  CXX(target) Release/obj.target/posix/src/posix.o
  SOLINK_MODULE(target) Release/obj.target/posix.node
  COPY Release/posix.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/posix/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/bufferutil
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/bufferutil/build“ wird betreten
  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
  SOLINK_MODULE(target) Release/obj.target/bufferutil.node
  COPY Release/bufferutil.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/bufferutil/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/utf-8-validate
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/utf-8-validate/build“ wird betreten
  CXX(target) Release/obj.target/validation/src/validation.o
  SOLINK_MODULE(target) Release/obj.target/validation.node
  COPY Release/validation.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/utf-8-validate/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/marker-index
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/marker-index/build“ wird betreten
  CXX(target) Release/obj.target/marker_index/src/native/iterator.o
  CXX(target) Release/obj.target/marker_index/src/native/marker-index-wrapper.o
  CXX(target) Release/obj.target/marker_index/src/native/marker-index.o
  CXX(target) Release/obj.target/marker_index/src/native/node.o
  CXX(target) Release/obj.target/marker_index/src/native/point.o
../src/native/marker-index-wrapper.cc: In static member function 'static bool MarkerIndexWrapper::IsFinite(v8::Local<v8::Integer>)':
../src/native/marker-index-wrapper.cc:128:92: warning: 'v8::Local<v8::Value> v8::Object::CallAsFunction(v8::Local<v8::Value>, int, v8::Local<v8::Value>*)' is deprecated: Use maybe version [-Wdeprecated-declarations]
     Local<Value> result = Nan::New(is_finite_function)->CallAsFunction(Nan::Null(), 1, argv);
                                                                                ^
In file included from /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/v8.h:25:0,
                 from /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/node.h:42,
                 from ../../nan/nan.h:49,
                 from ../src/native/marker-index-wrapper.cc:2:
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/v8.h:2984:30: note: declared here
                 Local<Value> CallAsFunction(Local<Value> recv, int argc,
                              ^
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/v8config.h:333:3: note: in definition of macro 'V8_DEPRECATED'
   declarator __attribute__((deprecated(message)))
   ^
  SOLINK_MODULE(target) Release/obj.target/marker_index.node
  COPY Release/marker_index.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/marker-index/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/runas
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/runas/build“ wird betreten
  CXX(target) Release/obj.target/runas/src/main.o
  CXX(target) Release/obj.target/runas/src/runas_posix.o
  CXX(target) Release/obj.target/runas/src/fork.o
  SOLINK_MODULE(target) Release/obj.target/runas.node
  COPY Release/runas.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/runas/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/pathwatcher
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/pathwatcher/build“ wird betreten
  CXX(target) Release/obj.target/pathwatcher/src/main.o
  CXX(target) Release/obj.target/pathwatcher/src/common.o
  CXX(target) Release/obj.target/pathwatcher/src/handle_map.o
  CXX(target) Release/obj.target/pathwatcher/src/pathwatcher_linux.o
  SOLINK_MODULE(target) Release/obj.target/pathwatcher.node
  COPY Release/pathwatcher.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/pathwatcher/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-errno
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-errno/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/errno.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-errno/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-ifaddrs
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-ifaddrs/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/ifaddrs.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-ifaddrs/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-sockios
> node-gyp rebuild

(node:30908) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGINT listeners added. Use emitter.setMaxListeners() to increase limit
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-sockios/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/sockios.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-sockios/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/node_modules/src-sockios
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/node_modules/src-sockios/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/sockios.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/node_modules/src-sockios/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/mkfifo
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/mkfifo/build“ wird betreten
  CXX(target) Release/obj.target/mkfifo/src/mkfifo.o
  SOLINK_MODULE(target) Release/obj.target/mkfifo.node
  COPY Release/mkfifo.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/mkfifo/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/node_modules/websocket
> (node-gyp rebuild 2> builderror.log) || (exit 0)

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/node_modules/websocket/build“ wird betreten
  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
  CXX(target) Release/obj.target/validation/src/validation.o
  SOLINK_MODULE(target) Release/obj.target/validation.node
  COPY Release/validation.node
  SOLINK_MODULE(target) Release/obj.target/bufferutil.node
  COPY Release/bufferutil.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/node_modules/websocket/build“ wird verlassen

><EMAIL_ADDRESS>install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit
> node lifecycleScripts/preinstall && node lifecycleScripts/install

[nodegit] Running pre-install script
[nodegit] Configuring libssh2.

{ Error: Command failed: /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

    at ChildProcess.exithandler (child_process.js:205:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:194:7)
    at maybeClose (internal/child_process.js:899:16)
    at Socket.<anonymous> (internal/child_process.js:342:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at Pipe._handle.close [as _onclose] (net.js:511:12)
  killed: false,
  code: 1,
  signal: null,
  cmd: '/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl' }
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

[nodegit] ERROR - Could not finish preinstall
{ Error: Command failed: /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

    at ChildProcess.exithandler (child_process.js:205:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:194:7)
    at maybeClose (internal/child_process.js:899:16)
    at Socket.<anonymous> (internal/child_process.js:342:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at Pipe._handle.close [as _onclose] (net.js:511:12)
  killed: false,
  code: 1,
  signal: null,
  cmd: '/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl' }

/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib

├─┬<EMAIL_ADDRESS>│ └─┬<EMAIL_ADDRESS>│   ├──<EMAIL_ADDRESS>│   └──<EMAIL_ADDRESS>
...

npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>install: `node lifecycleScripts/preinstall && node lifecycleScripts/install`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/philipp/.npm/_logs/2017-06-11T09_42_00_571Z-debug.log
Error building '/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos'
npm ERR! code ELIFECYCLE
npm ERR! errno 22
npm ERR<EMAIL_ADDRESS>build: `scripts/build`
npm ERR! Exit status 22
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!  Linux 4.11.3-1-ARCH
npm ERR! argv "/home/philipp/.nvm/versions/node/v7.10.0/bin/node" "/home/philipp/.nvm/versions/node/v7.10.0/bin/npm" "i"
npm ERR! node v7.10.0
npm ERR! npm  v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 22

npm ERR<EMAIL_ADDRESS>install: `BUILD_ONLY=1 buildDependencies && npm run build`
npm ERR! Exit status 22
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script 'BUILD_ONLY=1 buildDependencies && npm run build'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the nodeos-usersfs package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     BUILD_ONLY=1 buildDependencies && npm run build
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs nodeos-usersfs
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls nodeos-usersfs
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/philipp/.npm/_logs/2017-06-11T09_42_26_602Z-debug.log

And this where the error occours:
https://github.com/luii/nodeos-usersfs/blob/master/scripts/build#L95-L96
And i also added nodeos-git to the package.json, if i just put it on the nodeosDependenciesNodeos it should compile the nodegit because it has its own install process but it doesn't.
And if i just put nodeos-git on the buildDependencies list it compiles just fine without error, maybe this occours when the arch flag is present on npm, what do you think?

And i also added nodeos-git to the package.json
https://github.com/luii/nodeos-usersfs/blob/test/package.json, if i just
put it on the nodeosDependenciesNodeos it should compile the nodegit
because it has its own install process but it doesn't.
And if i just put nodeos-git on the buildDependencies list it compiles just
fine without error, maybe this occours when the arch flag is present on
npm, what do you think?
You need to put it in both places, buildDependencies will be downloaded and
cached if a prebuild image doesn't exists, and nodeosDependenciesNodeos
will be the ones for the nodeos demo user. Also, I have seen some errors
regarding not finding a C compiler, probably you would need to set --host
flag someway libssl, but maybe would be a good idea to compile it
externally for Node.js binary so it's not needed to be compiled here too...

git config --get remote..url

This could be a simple API to read the config as an object?
repo.getConfig() -> obj

git rev-list -n1 master

This is just needing to be able to read local refs?
repo.getRef(ref) -> hash

git checkout [something]

Pretty self explanatory.  I guess I could have an API to export a ref or hash to a folder.  For backwards compat, should it continue to use git style working checkout format complete with index?  Do we ever use the index?  Because if not, a simple API to walk the git tree for a given commit and exporting to the FS is easy.
repo.export(ref, targetPath)

git clone [param] [param]

This is the hard one and the meat of the problem.  But I have implemented it before in js-git for some protocols.  How would ssh work?  Am I able to shell out to ssh in a subprocess?
git.clone(url, targetPath)

git clone --template=[value] --mirror [param] [param]

I don't know this usage, what is it?  I guess I should look up some git man pages...

git config --get remote..url
This could be a simple API to read the config as an object?
repo.getConfig() -> obj

If fetching the config is an async operation, it's good for me. What are you thinking about, callbacks or promises?

git rev-list -n1 master
This is just needing to be able to read local refs?
repo.getRef(ref) -> hash

No idea, but maybe no, probably it's asking to the remote server what refs are available to check if it's requested for a valid one, but I'm nor sure and maybe saying dumb things here.

git checkout [something]
Pretty self explanatory. I guess I could have an API to export a ref or hash to a folder.

Take in account that something can be a commit-like string or the path to a file, so probably there should be two different checkout() functions to clarify things.

For backwards compat, should it continue to use git style working checkout format complete with index? Do we ever use the index? Because if not, a simple API to walk the git tree for a given commit and exporting to the FS is easy.
repo.export(ref, targetPath)

No idea, but probably not. So far, I think it's just only downloading the files, there no .git file anywhere after npm download a git dependency.

git clone [param] [param]
This is the hard one and the meat of the problem. But I have implemented it before in js-git for some protocols.

Maybe a standard API and use diferent connectors?

How would ssh work? Am I able to shell out to ssh in a subprocess?
git.clone(url, targetPath)

There's no ssh command on NodeOS, it's only available wssh (like ssh, but using websockets instead of raw TCP). Probably ssh2 module could be useful here instead.

git clone --template=[value] --mirror [param] [param]
I don't know this usage, what is it? I guess I should look up some git man pages...

It definitely would be a good idea ;-)

What are you thinking about, callbacks or promises?

I like promises because then I can use await.

probably it's asking to the remote server what refs are available

The rev-list (as I understand) is the local history of hashes for a branch.  Getting remote hashes is ls-remote.  Which BTW, is the first half of clone, so we'll have that for free when we implement clone.

so probably there should be two different checkout() functions to clarify things.

Good point.  The latter case assumes a working checkout and dirty state.  It would be good to know if NPM needs this.

Maybe a standard API and use different connectors?

Yep, I tried to do this with JS-Git, I can try again.

Probably ssh2 module could be useful here instead.

Yes!  That's the library I was thinking of.  Hopefully it works well enough.

What are you thinking about, callbacks or promises?
I like promises since they are native now (no library needed) and because then I can use await.

:+1: :-)

so probably there should be two different checkout() functions to clarify things.
Good point. The latter case assumes a working checkout and dirty state. It would be good to know if NPM needs this.

So far, I think no, just only download the code as a tarball-ish.

Maybe a standard API and use different connectors?
Yep, I tried to do this with JS-Git, I can try again.

Cool :-)

Probably ssh2 module could be useful here instead.
Yes! That's the library I was thinking of. Hopefully it works well enough.

Seems we have a winner... :-)

Now to just find time to glue this all together...

Now to just find time to glue this all together...

Take your time :-) Maybe it would be a good idea to commit each one independently so we can review them :-)

I'm pretty busy for the next month with a deadline at my startup, feel free to ping me later if I forget about this.

Ok, I'll try to remember it at end of month, if there's something we can do
during this time don't doubt to ask :-)
[Offtopic] By the way, what's your startup related to? :-)
El 06/08/2017 05:06, "Tim Caswell"<EMAIL_ADDRESS>escribió:

I'm pretty busy for the next month with a deadline at my startup, feel
free to ping me later if I forget about this.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/NodeOS/NodeOS/issues/67#issuecomment-320482653, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAgfvrvTwofoZf-6UmJhifdsUdKeP0lUks5sVS3RgaJpZM4CipO9
.

I'm Director of Engineering at https://daplie.com/.  We're trying to decentralize the internet and put ownership of data and networks back in the hands of normal people.

I'm Director of Engineering at https://daplie.com/. We're trying to decentralize the internet and put ownership of data and networks back in the hands of normal people.

I've seen your webpage, the easy to use home server concept sounds cool! :-)

@creationix: are there any smaller / junior jobs to be done for this remake of the JSgit project?

@piranna I've got nodeos-git to compile flawlessly but i get a weird error somehow.
Compilation is totally fine; Startup also; but right after the user init script is run i get
bin/getty bin/logon: "bin/getty" exited with error code 1 its something like this and i tried to find and trace the error but i've found nothing

Stumbled upon this link on hacker news: https://isomorphic-git.github.io/ - A pure JavaScript implementation of git for node and browsers!

@bogdanbiv it looks promising i see if i can use it in nodeos-git, because nodegit is somewhat a dead end for me

Would it help to set up a bounty to get this ready this issue ready?

Is there a way I can contribute to implementing nodeos-nodegit?


jira-post-fetch-hook: would be nice to have Jira comments link to GitHub repo browsing if the repo origin is GitHub

For an internal molybdenum server, but public GitHub repos the jira comments linking to the internal mo server is lame for non-internal users.  For other repos, GitHub repo browsing will always just be better anyway.

/cc @jclulow


Bump ffi dependency

Description

See also https://github.com/ffi/ffi/issues/836
Related Issue

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Chore (non-breaking change that does not add functionality or fix an issue)

Checklist:

[ ] I have read the CONTRIBUTING document.
[ ] I have run the pre-merge tests locally and they pass.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] If Gemfile.lock has changed, I have used --conservative to do it and included the full output in the Description above.
[ ] All new and existing tests passed.
[ ] All commits have been signed-off for the Developer Certificate of Origin.

Superceded by #14199


ALARM STATUS on Universal Videohub 288

Here's what the telnet interface reports on a Universal Videohub 288:
ALARM STATUS:
Fan 0: ok
Fan 1: ok
Fan 2: ok
Power Supply Slot 0: ok
Power Supply Slot 1: ok
Power Sufficient for Load: ok
Network Slot 0: ok
Network Slot 1: ok
Card Bus: ok
Card Firmware Version: ok
Logic Slot 0: ok
Logic Slot 1: ok
Logic Firmware Version Slot 0: ok
Logic Firmware Version Slot 1: ok
ProcessorLink: ok
Processor Firmware Version: ok
Crosspoint Slot 0: ok
Crosspoint Slot 1: ok
Bus Host Slot 0: ok
Bus Host Slot 1: ok
Bus Host Firmware Version Slot 0: ok
Bus Host Firmware Version Slot 1: ok

This appears to be informational only, there's not really anything actionable from an API perspective. But would be useful to present it to the caller / not error out on it.

Can you send me via email the whole config output (see Reporting bugs in the README) so I can properly add support for ALARM STATUS (it is currently in the TODO).


unknown visuals syntax at line xx , when used with "[color] diff = always"

I have enabled color in my "./.git/config" file by setting
[color]
        diff = always
        status = auto

This causes
"unknown visuals syntax at line xx"
Workaround was to remove it

Thanks for the report. Fix will be available with the next release in 1-2 days. I solved it by adding --color=none to the git main log command in the main view configure section. If you have changed it, you might need to reset&save it there.

Thanks!


Godot 3 consume 4x more memory than Godot 2

Godot version:

Godot 3 beta 1
Godot 2.1.4

OS/device including version:
Windows 10 x64
GTX 960
16gb ram
Issue description:
Godot 3 consume 4x more memory than v2
Steps to reproduce:
Create empty scene, then export to Windows Desktop

Well, the code is bigger. So it's normal it consumes more memory...
But maybe there's a leak somewhere.

I have no idea how to debug what is using memory, is there any kind of
memory debugger?
On Tue, Dec 19, 2017 at 8:56 PM, Gilles Roudiere<EMAIL_ADDRESS>wrote:

Well, the code is bigger. So it's normal it consumes more memory...
But maybe there's a leak somewhere.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/14845#issuecomment-352922841,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AF-Z21NP1fmnevn2YGjCpCOXFMkgInevks5tCE06gaJpZM4RHpzH
.

I'd say, does it count how much memory is allocated on the GPU. All the effects buffers would take up a lot of memory. It be interesting to see if it gets less when you turn effects of in the project settings. I'll see if I can reproduce on my Windows machine.
All in all 126Mb is nothing in this day and age....

I'd say, does it count how much memory is allocated on the GPU?

No, the Windows task manager shows only the regular RAM there. The Fall Creators Update can show GPU memory but only in general, not per-process. I notice a 0.5 GB increase in the GPU memory usage when I open Godot.
I know Visual Studio has a heap profiler, but don't know how useful it is.

I can't really reproduce this on Linux/x86_64. Running a scene with just one node in it shows a peak memory use of 24MB:

The editor uses a little more ram, a little over 130MB:

Most of the RAM usage for the editor are:

Two static allocations of 16MB for the debugger interface used to communicate with the engine when you press the 'play' button in the editor.
11MB of RAM used to store the translations.
about 8MB used by the OpenGL shader cache (Not Godot code)
about 8MB used by bullet

In 3.0 the debug buffer size was dramatically increased to improve stability when debugging larger projects so this by itself already accounts for 1/3rd of the memory use increase. We also now use a nicer font which is larger, which accounts for quite a bit.
I'm not sure if this is really a problem all in all. Maybe we could shrink memory use a little bit but an exported game seems to not really use much more RAM than in 2.1

11MB of RAM used to store the translations.

Does this include all languages? Since a restart is needed to change translations, we could maybe avoid store them all and just keep the current language (+ EN used as fallback).

Using a recent master compiled with scons platform=windows uses 60mb RAM in project manager and 120mb RAM in a empty test project on Windows 7 x64.

On godot 3 master as of about 15 minutes ago, I get ~300MB in the project manager (and 260+MB of GPU memory usage). Detailed breakdown here.
On godot 2.14 (from the distro), I get ~50MB in the project manager (and ~37MB of GPU mem). Detailed breakdown here.

cppcheck identified two memory leaks.  I'm not sure if they're valid, someone else with more experience should probably check.
In os_iphone.cpp it's reporting a memory leak on new_ptr after line 591.
In memory.cpp it's reporting a memory leak on mem after line 98.
Hope that helps.

I think i figured out what's wrong with memory usage
Try to run the .exe multiple times, sometimes it takes 70mb, sometimes 130mb
Maybe something doesn't have time to be freed during initialization ?

Many memory leaks have been fixed since this issue was created. Can anyone reproduce high RAM usage on Godot 3.2.1 or 3.2.2beta2?
Note that Godot 4's RAM requirements will likely increase, in the interest of offering better performance (more things can be cached this way).

Closing per the above comment.


Updated Readme file

Updated Readme file by adding relevant informations

It is my pleasure to contribute to the project. Can you checkout the other pull request that I sent regarding contributing.md file.


Override Operation.shallowClone() for all Concrete implementations

default implementations needs to be overridden with a concise clone method, that avoids the expensive serialisation-deserialisation.

After gh-955 is completed and merged.

So basically all implementations of Operation needs to override/implement the shallowClone method. This is intended to be a very shallow clone - simply just creating a new instance of the operation and copying all the fields across (without cloning the fields).
For example for AddElements:
public AddElements shallowClone() {
    return new AddElements.Builder()
        .validate(validate)
        .skipInvalidElements(skipInvalidElements)
        .input(elements)
        .options(options)
        .build();
}

Then adding a unit test to check all fields were copied successfully.

Merged into develop.

Migration Steps
All new and current Operation implementations must implement a ShallowClone method.  This method should perform a shallow clone that will create a new instance and copies the fields across.  It should not fully clone the fields.


[Suggestion]: To be added to documentation

Following the following StackOverflow thread https://stackoverflow.com/questions/73644357/azure-ad-user-access-token-requested-by-angular-msal-library-and-validation-by-w, a little tip should be added in the following documentations pages :

https://django-auth-adfs.readthedocs.io/en/latest/azure_ad_config_guide.html
https://django-auth-adfs.readthedocs.io/en/latest/settings_ref.html#audience

Thanks by advance for future users and thanks for this useful package.

A PR is definitely welcome.


Keyboard layouts emulation

Add Dvorak and Colemak layouts emulation (mapping from QWERTY)

Just wondering here, couldn't you just change your system keyboard layout to achieve this?

Hi are you accepting any PRs for this? I'm interested to work on it

Go ahead @DanWlker. Just keep in mind that we need this to be configurable via the main menu, probably under a Config section. And the code that handles the menu is not the greatest with loads of duplication, so be warned!


manifest: Update openthread to b21e99b.

This commit updates openthread to b21e99b.
Secondly, this commit aligns the history of openthread to Vanilla version 1:1.

Hey I tagged this for v3.3.0, let us know if the update is to fix a security issue or something that should go for v3.2.0 instead.

@fabiobaltieri what is the timeline for v3.3?

The release is scheduled for the 30th (https://github.com/zephyrproject-rtos/zephyr/wiki/Release-Management), it's more a matter of whether there's something critical in there.

@fabiobaltieri There are a few bug fixes introduced in this upmerge but those can wait till the 30th.


allActions not assigned in some cases

The change passes regression test and the example above executes correctly in Espruino


fix: clean errors, add validation & reduce exposed

This PR fixes a few issues listed below:

changes errors to be more generic, removing extraneous information to user
adds validation for urls to only originate from 'http' or 'https' protocols
sorts requires by alphabetical (node, node_modules, project) order
only exposes /_ah/stop if NODE_ENV is set to development
only exposes progress-bar.html used in application

I signed it!

Covered the changes requested in the latest commit


[AIRFLOW-1769] Add support for templates in VirtualenvOperator

Dear Airflow maintainers,
Please accept this PR. I understand that it will not be reviewed until I have checked off all the steps below!
JIRA

[x] My PR addresses the following Airflow JIRA issues and references them in the PR title. For example, "[AIRFLOW-XXX] My Airflow PR"

https://issues.apache.org/jira/browse/AIRFLOW-1769

Description

[x] Here are some details about my PR, including screenshots of any UI changes: add templates_dict to pass in certain template vars to pythonvirtualenvoperator. We can't use context normally because it includes many non-serializable objects.

Tests

[x] My PR adds the following unit tests OR does not need testing for this extremely good reason: Adds a test that uses a ds provided.

Commits

[x] My commits all reference JIRA issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

@aoen

Codecov Report

Merging #2741 into master will increase coverage by 0.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #2741      +/-   ##
==========================================
+ Coverage      73%   73.01%   +0.01%
==========================================
  Files         155      155
  Lines       11835    11837       +2
==========================================
+ Hits         8640     8643       +3
+ Misses       3195     3194       -1

Impacted Files
Coverage Δ

airflow/operators/python_operator.py
94.87% <100%> (+0.06%)
:arrow_up:

airflow/models.py
87.14% <0%> (+0.04%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 44710d7...957c6e3. Read the comment docs.

LGTM


Rake task with params does not execute

Checklist

[X ] Upgrade Jets: Are you using the latest version of Jets? This allows Jets to fix issues fast. There's a jets upgrade command that makes this a simple task. There's also an Upgrading Guide: http://rubyonjets.com/docs/upgrading/
[ X] Reproducibility: Are you reporting a bug others will be able to reproduce and not asking a question. If you're unsure or want to ask a question, do so on https://community.rubyonjets.com
[X ] Code sample: Have you put together a code sample to reproduce the issue and make it available?  Code samples help speed up fixes dramatically. If it's an easily reproducible issue, then code samples are not needed. If you're unsure, please include a code sample.

My Environment

Software
Version

Operating System
OSX

Jets
2.3.15

Ruby
2.5.5

Expected Behaviour

When running a custom rake task that has parameters I expect the task to execute.
JETS_ENV=development jets custom:task[0,'foo']
Current Behavior

When running a custom rake task with the following cmd line, the help message is printed instead of executing the task.
JETS_ENV=development jets custom:task[0,'foo']
In the cli.rb file the lookup() method fails to find the task in the namespaced_commands because the parameters don't match.
The value for the custom task in the namespaced_commands is custom:task[arg1,arg2] and the value of the full_command is custom:task[0,'foo'].
The line 138 of cli.rb fails because the parameter portion of the command does not match.
rake_task_found = Jets::Commands::RakeCommand.namespaced_commands.include?(full_command)
Step-by-step reproduction instructions

create a rake task that take parameters
execute the task from the command line
notice the help message is printed instead of executing the task

Code Sample

namespace :custom do
    desc "Custom rake task with params."
    task :task, [:arg1, :arg2] => :environment do |t, args|
      puts "arg1: #{args[:arg1]}"
      puts "arg2: #{args[:arg2]}"
    end
end

Solution Suggestion

Replace 138 cli.rb
rake_task_found = Jets::Commands::RakeCommand.namespaced_commands.include?(full_command)
with
cmds = Jets::Commands::RakeCommand.namespaced_commands.map {|x| x.split('[')[0]}.compact
rake_task_found = cmds.include?(full_command.split('[')[0])

@tongueroo do you consider the suggested solution sufficient?

Think the suggested approach is fine.

@tlhampton13 Thanks for the detailed report and suggestions to fix it. Details in https://github.com/boltops-tools/jets/pull/651
@timlawrenz No, it quite did not. Fixed an edge case issue with the jets -h. Details in https://github.com/boltops-tools/jets/pull/651


Support for new JSON Web Token Authentication

"Later this year" Apple will introduce APNS provider authentication based on JSON Web Tokens, i.e. we hopefully don't have to deal with expiring certificates anymore.
Session 724 from WWDC16 has a little more information:

Session Video
Slides

However, the documentation hasn't been updated yet. I'll update this if there are any new announcements.

Thanks for making the issue, I have already mentioned it on https://github.com/argon/node-apn/pull/278 but haven't done any work towards it yet.

I'm hoping to release this in v2.1 this weekend

Awesome!
I guess they added documentation for JWT 2 days ago: https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/APNsProviderAPI.html#//apple_ref/doc/uid/TP40008194-CH101-SW21

Apple announced JWT Authentication is available :)

@n3trino I'm already working on this, see #430

This has been released in 2.1.0


how to create cascade picker

demo have Level 1 only

@cgf120 It is something which is not supported yet.


SISO tf() may not work with numpy arrays with numpy.int elements.

SISO tf() function may not work if an input argument is numpy.int.
(@sunhapos could identify this)
Please check the test for cases.
Should this be a numpy issue?  If so, is a quick patch such as 3fe4067 desirable?
Thanks,
KW

Does this discussion seem related? https://github.com/numpy/numpy/issues/2951

Coverage increased (+0.6%) to 78.327% when pulling 70092cf532e6548a9da5853c8ed32b0987a6837d on autodrive:feature/test_int_tf into 05d6bc5257d74a05ee2615d18ab7f5f58a2ec372 on python-control:master.

Have you looked at PR #135 ? I see @jed-frey handles all sorts of types in the proposed _cleanup function here

@roryyorke Thanks for your comments.  @jed-frey Hope this helps. Also found this QnA.

A few additional comments on this:

The same changes made here for xferfcn.py also need to be made in statesp.py and probably any other code that checks for data types int or float (need to add numpy types).

A quicker way to check against all of the numpy data types is to check against numpy.number.

Some related (and conflicting) changes are present in PR #170, though this PR goes beyond that in cleaning things up.

I'll try to do an integration of all of this in the coming days.

Different parts of this PR are covered by other PR's:

PR #170 has a fix for the originally identified issue of numpy.int data types.  Note that the fix there is more general (handles any numpy.number type).

PR #158 fixes the issue with conda that was also addressed here (by using an earlier version of conda).

This is fixed PR #170 and also PR #158.  Closing this PR since the issue will be addressed when the other two are merged.

The changes in this PR have been incorporated into PR #135.


Disable data link and RC loss reactions for SITL

Describe problem solved by the proposed pull request
It is totally counter-intuitive why the simulation (SITL) should react on links not being available.

Especially when you're a beginner following the dev guide here and the first thing you do is commander takeoff which results in an immediate failsafe. When I was a rookie that still worked and I was excited about the drone just hovering there for me as long as I want.
Also as a developer this regularly annoys me because e.g. sometimes I manage to crash QGC and then the simulated drone stops doing my test but starts to RTL until I recovered QGC and command it to continue.

Describe your preferred solution
Let's disable both reactions by default and have a comment such that every developer who wants to test the reactions specifically can change the parameters. That's the same like low battery reactions, they don't happen by default in SITL but you can test them by changing: https://github.com/PX4/Firmware/blob/9d67bbc328553bbd0891ffb8e73b8112bca33fcc/src/modules/simulator/simulator_mavlink.cpp#L330
Additional context
https://px4.slack.com/archives/C0V533X4N/p1548921635485900

Instead it should clearly print something like "Hey you are trying to takeoff but you have no RC and no mavlink. You have to connect using QGC (or Dronecode SDK, or MAVROS) or alternatively set this param to ...".

some version @julianoes ' suggested approach is probably best for SITL.  This preserves realistic defaults and informs the user right in console how to remedy their problem if they are trying to operate without manual control or data link.
I'll just mention:  in my fixed wing use case I almost never us any form of manual control.   I takeoff in fixed wing mission mode and mostly only use Mission, Hold, and Return modes.

So the problem only arises if we use pxh> commander takeoff. Given the devguide says that you should try commander takeoff I'd say it makes sense to help for that case as I wrote above:

So I think what we change is that commander takeoff shouldn't even arm or takeoff because it's obviously a failsafe case. Instead it should clearly print something like "Hey you are trying to takeoff but you have no RC and no mavlink. You have to connect using QGC (or Dronecode SDK, or MAVROS) or alternatively set this param to ...".

Devcall:

We need to fix the failsafe (I will not do that right now)
We need to inform the user why it failsafes and how he can configure it to skip the check when he sees it in SITL

I don’t quite see why QGC cannot run in the background?

Because:

not at all exclusive to windows:

and occasional unexpected constantly significant CPU load...

So what should we do here?

Discussion from the dev call: Instead of hacking SITL, we should ensure takeoff is denied if the failsafe is set. @dagar Has a PR for that. We need to ensure SITL stays locked to real flight behavior.

Let's close this and fix it, as discussed, with proper arming warnings, etc.


any chance of uploading the produced files?

Thanks for this, it looks like something that I would be very interested in using.
Would it be possible to upload the output of running this... or are the files just too big? Even a couple of headline series like IMSA and GT3, would be awesome.

This is so easy to use, there is no need for having the files pre-prepared, and now I can create whatever I want. Thanks again!

@fommil Sorry I was slow on my response. Yes, I’ve created the app in a way that makes it super simple to setup seasons. Hope you can enjoy it!


How do I pgcrypto module with Knex?

Do you have examples?

knex('test')
.select(knex.raw("convert_from(decrypt(pw,?,'aes'), 'utf-8') as pass", ['PASSKEY']))
.then(function(result) {
});

related to #864


[PFM-2413] UI Enhancement on Inbox component - Mobile View

Adding changes for Session Form data, will raise PR again.


feat(cdk): enhance Eliza AI infrastructure with new components and refactor stacks

feat(cdk): enhance Eliza AI infrastructure with new components and refactor stacks

Refactored the ElizaFleetStack to utilize helper functions for creating VPC, ECR repository, ECS cluster, task role, task definition, security group, and Fargate service, improving modularity and readability.
Introduced new files for creating essential AWS resources: VPC, ECR repository, ECS cluster, Fargate task definition, Fargate service, security group, IAM roles, and GitHub OIDC provider.
Implemented GitHubActionsStack to facilitate secure OIDC authentication for GitHub Actions, eliminating the need for long-lived AWS credentials.
Updated stack initialization in index.ts to reflect new resource creation methods and stack names for clarity.

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#13  👈 (View in Graphite)
#12
#11
main-lachie

This stack of pull requests is managed by Graphite. Learn more about stacking.

Merge activity

Dec 23, 2:40 PM EST: A user started a stack merge that includes this pull request via Graphite.


win32 platform support checks

The tty, as well as the way we execute python scripts here on windows is much different.
This commit adds three changes:

A check if we are on an nt-based system
The way we execute python scripts is not by running python3 script.py but rather, we run python as is, without specifying the version.
Limit unix specific os calls (os.setpgrp() and os.killpg(0, signal.SIGKILL)) so that they do not execute on windows

looks good

oops there we go


Parent Widget not updated

The problem is when i changed for german as showing below for example , only the current widget changed and the TabBar is not changing until set the state ..
Even though i’m using the onLocalChanged function

Have you found a solution for this?


remove fish from host config and move into home-manager

This is difficult at the moment because home-manager doesn't support installing vendor completions, config, and functions.


Add theme choice with a button

By default, browser preferences is used to set the theme thanks to Javascript instead of plain CSS.
Moreover, a new button allows the user to toggle the theme.
Solution to this issue: #299

You are awesome, thank you!