quarks (new) - Add a way to update quarks (git pull or delete folder and clone again) #1386

Closed
miguel-negrao opened this Issue Mar 28, 2015 · 8 comments

Comments

Projects
None yet
3 participants
@miguel-negrao
Member

miguel-negrao commented Mar 28, 2015

Is there a way already of doing this ? I couldn't find it... How does one update a quark that is using a branch from a git repo which gets updated from time to time (no tag).

@scztt

This comment has been minimized.

Show comment
Hide comment
@scztt

scztt Mar 28, 2015

Contributor

This seems pretty necessary, since there are really only a couple quarks that are versioned, and the rest are locked to head.

It seems really important to not blow away someone's local changes, if they did something like edit the quark directly (a little ill advised, but also really easy to do without thinking). In that case, delete&clone would be problematic - pull would be good, if we could warn in cases where there are merge conflicts....

Contributor

scztt commented Mar 28, 2015

This seems pretty necessary, since there are really only a couple quarks that are versioned, and the rest are locked to head.

It seems really important to not blow away someone's local changes, if they did something like edit the quark directly (a little ill advised, but also really easy to do without thinking). In that case, delete&clone would be problematic - pull would be good, if we could warn in cases where there are merge conflicts....

@crucialfelix

This comment has been minimized.

Show comment
Hide comment
@crucialfelix

crucialfelix Mar 28, 2015

Member

you can select HEAD from the select/pop-up

it does not track a branch though, that would only track master.

but you are free to go into terminal and do anything you want to any
folder. you can checkout a branch, pull etc.
so for the hardcore people there is freedom to use development tools.

for releases and package management systems, dependencies and installs
should always reference a specific commit.

I tried to keep to what other package systems like npm, bower, gems etc. do

so when Quarks first installs a package it expects either a specific tag or
if there is none then it checks out master.
the directory.txt should specify the current release for each quark. most
will not do that.

scott: if you have changes (your checkout is dirty) then it will refuse to
checkout any other tag ! it will post that to sc console and halt.
if I remember correctly it first checks all the quarks and throws an error
before it starts any destructive operations.

miguel: thanks for those other bug reports ! I'm doing that tomorrow.

On Sat, Mar 28, 2015 at 8:45 PM Miguel Negrão notifications@github.com
wrote:

Is there a way already of doing this ? I couldn't find it... How does one
update a quark that is using a branch from a git repo which gets updated
from time to time (no tag).


Reply to this email directly or view it on GitHub
#1386.

Member

crucialfelix commented Mar 28, 2015

you can select HEAD from the select/pop-up

it does not track a branch though, that would only track master.

but you are free to go into terminal and do anything you want to any
folder. you can checkout a branch, pull etc.
so for the hardcore people there is freedom to use development tools.

for releases and package management systems, dependencies and installs
should always reference a specific commit.

I tried to keep to what other package systems like npm, bower, gems etc. do

so when Quarks first installs a package it expects either a specific tag or
if there is none then it checks out master.
the directory.txt should specify the current release for each quark. most
will not do that.

scott: if you have changes (your checkout is dirty) then it will refuse to
checkout any other tag ! it will post that to sc console and halt.
if I remember correctly it first checks all the quarks and throws an error
before it starts any destructive operations.

miguel: thanks for those other bug reports ! I'm doing that tomorrow.

On Sat, Mar 28, 2015 at 8:45 PM Miguel Negrão notifications@github.com
wrote:

Is there a way already of doing this ? I couldn't find it... How does one
update a quark that is using a branch from a git repo which gets updated
from time to time (no tag).


Reply to this email directly or view it on GitHub
#1386.

@crucialfelix

This comment has been minimized.

Show comment
Hide comment
@crucialfelix

crucialfelix Mar 28, 2015

Member

btw. I think I should not label it as HEAD but rather "Latest" in the gui

to reduce the git jargon

On Sun, Mar 29, 2015 at 12:56 AM felix crucialfelix@gmail.com wrote:

you can select HEAD from the select/pop-up

it does not track a branch though, that would only track master.

but you are free to go into terminal and do anything you want to any
folder. you can checkout a branch, pull etc.
so for the hardcore people there is freedom to use development tools.

for releases and package management systems, dependencies and installs
should always reference a specific commit.

I tried to keep to what other package systems like npm, bower, gems etc. do

so when Quarks first installs a package it expects either a specific tag
or if there is none then it checks out master.
the directory.txt should specify the current release for each quark. most
will not do that.

scott: if you have changes (your checkout is dirty) then it will refuse to
checkout any other tag ! it will post that to sc console and halt.
if I remember correctly it first checks all the quarks and throws an error
before it starts any destructive operations.

miguel: thanks for those other bug reports ! I'm doing that tomorrow.

On Sat, Mar 28, 2015 at 8:45 PM Miguel Negrão notifications@github.com
wrote:

Is there a way already of doing this ? I couldn't find it... How does one
update a quark that is using a branch from a git repo which gets updated
from time to time (no tag).


Reply to this email directly or view it on GitHub
#1386.

Member

crucialfelix commented Mar 28, 2015

btw. I think I should not label it as HEAD but rather "Latest" in the gui

to reduce the git jargon

On Sun, Mar 29, 2015 at 12:56 AM felix crucialfelix@gmail.com wrote:

you can select HEAD from the select/pop-up

it does not track a branch though, that would only track master.

but you are free to go into terminal and do anything you want to any
folder. you can checkout a branch, pull etc.
so for the hardcore people there is freedom to use development tools.

for releases and package management systems, dependencies and installs
should always reference a specific commit.

I tried to keep to what other package systems like npm, bower, gems etc. do

so when Quarks first installs a package it expects either a specific tag
or if there is none then it checks out master.
the directory.txt should specify the current release for each quark. most
will not do that.

scott: if you have changes (your checkout is dirty) then it will refuse to
checkout any other tag ! it will post that to sc console and halt.
if I remember correctly it first checks all the quarks and throws an error
before it starts any destructive operations.

miguel: thanks for those other bug reports ! I'm doing that tomorrow.

On Sat, Mar 28, 2015 at 8:45 PM Miguel Negrão notifications@github.com
wrote:

Is there a way already of doing this ? I couldn't find it... How does one
update a quark that is using a branch from a git repo which gets updated
from time to time (no tag).


Reply to this email directly or view it on GitHub
#1386.

@miguel-negrao

This comment has been minimized.

Show comment
Hide comment
@miguel-negrao

miguel-negrao Mar 29, 2015

Member

There are many sc users out there that don't know git, so it would be good to be able to do all the basic tasks from the gui or Quarks class interface.

The tags pop up menu was not immediately clear to me what the purpose of it was. It's a bit cryptic. Maybe it could have a tooltip or text before saying "choose version" ?.

Ok, let's say I'm using tags, even then how does the user do a pull from the GUI or Quarks class in order to get the new tags ?

Member

miguel-negrao commented Mar 29, 2015

There are many sc users out there that don't know git, so it would be good to be able to do all the basic tasks from the gui or Quarks class interface.

The tags pop up menu was not immediately clear to me what the purpose of it was. It's a bit cryptic. Maybe it could have a tooltip or text before saying "choose version" ?.

Ok, let's say I'm using tags, even then how does the user do a pull from the GUI or Quarks class in order to get the new tags ?

@crucialfelix crucialfelix added this to the 3.7 milestone Mar 29, 2015

@crucialfelix crucialfelix self-assigned this Mar 29, 2015

@crucialfelix

This comment has been minimized.

Show comment
Hide comment
@crucialfelix

crucialfelix Mar 29, 2015

Member

Agreed, it should just work.

Tracking an experimental branch is not a basic task IMO.

Quarks authors should tag stable releases and not be publishing a moving target.
Failing that (and at this point the majority of quarks authors will not have tagged a release),
then the master branch HEAD is the default that users will pull from.

here's the code right now:

https://github.com/supercollider/supercollider/blob/master/SCClassLibrary/Common/Quarks/Quark.sc#L74

There are some things to improve here.

If there is no tagged release and the user install LATEST (currently labelled HEAD) then they will get the latest on master.

I will add "Check for Updates" that will call git.fetch() on each installed quark. That fetches new tags and gets the latest commit, and can show on the gui that there are updates available.

Then the user can choose to update to a newer version. Not forced or automatic.

Member

crucialfelix commented Mar 29, 2015

Agreed, it should just work.

Tracking an experimental branch is not a basic task IMO.

Quarks authors should tag stable releases and not be publishing a moving target.
Failing that (and at this point the majority of quarks authors will not have tagged a release),
then the master branch HEAD is the default that users will pull from.

here's the code right now:

https://github.com/supercollider/supercollider/blob/master/SCClassLibrary/Common/Quarks/Quark.sc#L74

There are some things to improve here.

If there is no tagged release and the user install LATEST (currently labelled HEAD) then they will get the latest on master.

I will add "Check for Updates" that will call git.fetch() on each installed quark. That fetches new tags and gets the latest commit, and can show on the gui that there are updates available.

Then the user can choose to update to a newer version. Not forced or automatic.

@miguel-negrao

This comment has been minimized.

Show comment
Hide comment
@miguel-negrao

miguel-negrao Mar 29, 2015

Member

Tracking an experimental branch is not a basic task IMO.

Quarks authors should tag stable releases and not be publishing a moving target.

In the sc community we often don't have such a formal release system as you know. You are using your own lib, you find a bug, you fix it and push, but I agree, it would be good to start tagging from time to time so that users can know that their piece was working with version x of quark y and so forth. Also is HEAD, going to the HEAD of the branch where you are currently ? refspecs allows to checkout other branches...

I will add "Check for Updates" that will call git.fetch() on each installed quark. That fetches new tags and gets the latest commit, and can show on the gui that there are updates available.

Then the user can choose to update to a newer version. Not forced or automatic.

Sounds perfect !

Member

miguel-negrao commented Mar 29, 2015

Tracking an experimental branch is not a basic task IMO.

Quarks authors should tag stable releases and not be publishing a moving target.

In the sc community we often don't have such a formal release system as you know. You are using your own lib, you find a bug, you fix it and push, but I agree, it would be good to start tagging from time to time so that users can know that their piece was working with version x of quark y and so forth. Also is HEAD, going to the HEAD of the branch where you are currently ? refspecs allows to checkout other branches...

I will add "Check for Updates" that will call git.fetch() on each installed quark. That fetches new tags and gets the latest commit, and can show on the gui that there are updates available.

Then the user can choose to update to a newer version. Not forced or automatic.

Sounds perfect !

@crucialfelix

This comment has been minimized.

Show comment
Hide comment
@crucialfelix

crucialfelix Mar 29, 2015

Member

Yep, and this lazyness can continue just fine as long as the authors commit to the master branch.

LATEST (aka HEAD) is for whatever branch you are on. Which for the naive user is going to be master.

You cannot actually checkout a different branch by using a refspec / sha hash. Its a single commit and does not know which of possibly several branches that its on.

refspecs should probably be retitled to Version.

I'm improving the display right now. should be much clearer.

Member

crucialfelix commented Mar 29, 2015

Yep, and this lazyness can continue just fine as long as the authors commit to the master branch.

LATEST (aka HEAD) is for whatever branch you are on. Which for the naive user is going to be master.

You cannot actually checkout a different branch by using a refspec / sha hash. Its a single commit and does not know which of possibly several branches that its on.

refspecs should probably be retitled to Version.

I'm improving the display right now. should be much clearer.

@crucialfelix

This comment has been minimized.

Show comment
Hide comment
@crucialfelix

crucialfelix Apr 8, 2015

Member

This is solved now. The big button says "Check for updates", then the quarks you have installed will show if new updates are available and user can install them.

Member

crucialfelix commented Apr 8, 2015

This is solved now. The big button says "Check for updates", then the quarks you have installed will show if new updates are available and user can install them.

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