[ANN] Mustache moved to github

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
17 messages Options
Reply | Threaded
Open this post in threaded view
|

[ANN] Mustache moved to github

NorbertHartl
In the spirit of git notification…I moved mustache to github.


Enjoy!

Norbert


Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Stephane Ducasse-3
Hi norbert

did you update the catalog entry?

Stef

On Fri, Jul 28, 2017 at 12:40 PM, Norbert Hartl <[hidden email]> wrote:
> In the spirit of git notification…I moved mustache to github.
>
> https://github.com/noha/mustache
>
> Enjoy!
>
> Norbert
>
>

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

NorbertHartl
I don't know how. I must say that it is not clear to me what to do. Do I need a configuration? Do I still need to put it in Metarepo?

Norbert


> Am 28.07.2017 um 14:06 schrieb Stephane Ducasse <[hidden email]>:
>
> Hi norbert
>
> did you update the catalog entry?
>
> Stef
>
> On Fri, Jul 28, 2017 at 12:40 PM, Norbert Hartl <[hidden email]> wrote:
>> In the spirit of git notification…I moved mustache to github.
>>
>> https://github.com/noha/mustache
>>
>> Enjoy!
>>
>> Norbert
>>
>>

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Denis Kudriashov
In my projects I defined configuration with single stable which points to baseline master:

stable: spec
<symbolicVersion: #stable>.
spec for: #'pharo' version: 'master'

master: spec
<version: 'master'>
spec for: #pharo do: [ 
spec
baseline: 'Mustache'
with: [ spec repository: 'github://noha/mustache' ];
import: 'Mustache' ]

And I am supposed that master will be always stable. 

2017-07-28 14:13 GMT+02:00 Norbert Hartl <[hidden email]>:
I don't know how. I must say that it is not clear to me what to do. Do I need a configuration? Do I still need to put it in Metarepo?

Norbert


> Am 28.07.2017 um 14:06 schrieb Stephane Ducasse <[hidden email]>:
>
> Hi norbert
>
> did you update the catalog entry?
>
> Stef
>
> On Fri, Jul 28, 2017 at 12:40 PM, Norbert Hartl <[hidden email]> wrote:
>> In the spirit of git notification…I moved mustache to github.
>>
>> https://github.com/noha/mustache
>>
>> Enjoy!
>>
>> Norbert
>>
>>


Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Peter Uhnak
ConfigurationOf still remains (for the time-being), however now you don't have to specify what packages and their commits to load for each version.

Instead you point to a Baseline with a specific version.

E.g.

https://github.com/peteruhnak/IconFactory/tree/master/repository/ConfigurationOfIconFactory.package/ConfigurationOfIconFactory.class/instance


the syntax for the repo is 'github://<user>/<project>:<branch name or commit id or tag id>/<optional subfolder where the packages are>'

(the branch is optional, and if ommitted the latest commit of the master branch will be used)


Peter



On Fri, Jul 28, 2017 at 02:48:08PM +0200, Denis Kudriashov wrote:

> In my projects I defined configuration with single stable which points to
> baseline master:
>
> stable: spec
> <symbolicVersion: #stable>.
> spec for: #'pharo' version: 'master'
>
> master: spec
> <version: 'master'>
> spec for: #pharo do: [
> spec
> baseline: 'Mustache'
> with: [ spec repository: 'github://noha/mustache' ];
> import: 'Mustache' ]
>
> And I am supposed that master will be always stable.
>
> 2017-07-28 14:13 GMT+02:00 Norbert Hartl <[hidden email]>:
>
> > I don't know how. I must say that it is not clear to me what to do. Do I
> > need a configuration? Do I still need to put it in Metarepo?
> >
> > Norbert
> >
> >
> > > Am 28.07.2017 um 14:06 schrieb Stephane Ducasse <[hidden email]
> > >:
> > >
> > > Hi norbert
> > >
> > > did you update the catalog entry?
> > >
> > > Stef
> > >
> > > On Fri, Jul 28, 2017 at 12:40 PM, Norbert Hartl <[hidden email]>
> > wrote:
> > >> In the spirit of git notification…I moved mustache to github.
> > >>
> > >> https://github.com/noha/mustache
> > >>
> > >> Enjoy!
> > >>
> > >> Norbert
> > >>
> > >>
> >
> >

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Tim Mackinnon

If I've understood correctly, this means you can rage master with a version number like v1.1 and then put that in the URL

Tim

Sent from my iPhone

On 28 Jul 2017, at 14:59, Peter Uhnak <[hidden email]> wrote:

ConfigurationOf still remains (for the time-being), however now you don't have to specify what packages and their commits to load for each version.

Instead you point to a Baseline with a specific version.

E.g.

https://github.com/peteruhnak/IconFactory/tree/master/repository/ConfigurationOfIconFactory.package/ConfigurationOfIconFactory.class/instance


the syntax for the repo is 'github://<user>/<project>:<branch name or commit id or tag id>/<optional subfolder where the packages are>'

(the branch is optional, and if ommitted the latest commit of the master branch will be used)


Peter



On Fri, Jul 28, 2017 at 02:48:08PM +0200, Denis Kudriashov wrote:
In my projects I defined configuration with single stable which points to
baseline master:

stable: spec
<symbolicVersion: #stable>.
spec for: #'pharo' version: 'master'

master: spec
<version: 'master'>
spec for: #pharo do: [
spec
baseline: 'Mustache'
with: [ spec repository: 'github://noha/mustache' ];
import: 'Mustache' ]

And I am supposed that master will be always stable.

2017-07-28 14:13 GMT+02:00 Norbert Hartl <[hidden email]>:

I don't know how. I must say that it is not clear to me what to do. Do I
need a configuration? Do I still need to put it in Metarepo?

Norbert


Am 28.07.2017 um 14:06 schrieb Stephane Ducasse <[hidden email]
:

Hi norbert

did you update the catalog entry?

Stef

On Fri, Jul 28, 2017 at 12:40 PM, Norbert Hartl <[hidden email]>
wrote:
In the spirit of git notification…I moved mustache to github.

https://github.com/noha/mustache

Enjoy!

Norbert





Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Torsten Bergmann
In reply to this post by NorbertHartl
Hi Norbert,

I manage some of my projects already in GitHub. For example Tealight which is also in catalog.

Anything you have to do is
1) to create a "tag" in git  (see https://stackoverflow.com/questions/18216991/create-a-tag-in-github-repository), I name the tags with the according version number like 0.0.2 following semantic versioning (http://semver.org)
2) provide a ConfigurationOf (as you had in the past) where the "version" references the "git tag" with the same name
             a) also #stable has to point to the "version" as it was in the past
  optional:  b) the #development should point to the Baseline in the git branch that you typically use for development (this allows for loading of bleeding edge as before)
3) upload the Configuration to a MetaRepo as before to appear in catalog


Example:
=======
 1) I have two tagged versions for Tealight on Git (0.0.1 and 0.0.2)
    https://github.com/astares/Tealight/releases

 2) In my ConfigurationOfTealight (which I also manage in git) I reference the tag, for example in version 0.0.2 I reference the tag with the same name "github://astares/Tealight:0.0.2/repository":
    See  https://github.com/astares/Tealight/blob/master/repository/ConfigurationOfTealight.package/ConfigurationOfTealight.class/instance/v0_0_2..st

    Side note: a) now you can use your #stable definition in the ConfigurationOf as before https://github.com/astares/Tealight/blob/master/repository/ConfigurationOfTealight.package/ConfigurationOfTealight.class/instance/stable..st
               b) Your #development definition should point to the master branch (or whatever the development branch is)
               
                  https://github.com/astares/Tealight/blob/master/repository/ConfigurationOfTealight.package/ConfigurationOfTealight.class/instance/development..st
                  https://github.com/astares/Tealight/blob/master/repository/ConfigurationOfTealight.package/ConfigurationOfTealight.class/instance/dev..st

 3) http://smalltalkhub.com/#!/~Pharo/MetaRepoForPharo60/packages/ConfigurationOfTealight

Iceberg is managed in a similar way (but is now included in the image and the catalog part is only for compatibility).

Hope this helps.

Thanks
Torsten


> Gesendet: Freitag, 28. Juli 2017 um 14:13 Uhr
> Von: "Norbert Hartl" <[hidden email]>
> An: "Pharo Dev" <[hidden email]>
> Betreff: Re: [Pharo-dev] [ANN] Mustache moved to github
>
> I don't know how. I must say that it is not clear to me what to do. Do I need a configuration? Do I still need to put it in Metarepo?
>
> Norbert
>
>
> > Am 28.07.2017 um 14:06 schrieb Stephane Ducasse <[hidden email]>:
> >
> > Hi norbert
> >
> > did you update the catalog entry?
> >
> > Stef
> >
> > On Fri, Jul 28, 2017 at 12:40 PM, Norbert Hartl <[hidden email]> wrote:
> >> In the spirit of git notification…I moved mustache to github.
> >>
> >> https://github.com/noha/mustache
> >>
> >> Enjoy!
> >>
> >> Norbert
> >>
> >>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Peter Uhnak
In reply to this post by Tim Mackinnon
>
> If I've understood correctly, this means you can rage master with a version number like v1.1 and then put that in the URL
>
> > https://github.com/peteruhnak/IconFactory/tree/master:v1.1/
>

I am not sure where you got this url from, but combining branch and tag name makes nor sense... that's like you wanted a version 1.1 AND 2.3 (or whatever would be the latest in master).

(as mentioned in the syntax: branch name OR commit id OR tag id)

Peter

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Esteban A. Maringolo
Hi all

Sorry to Norbert for hijacking this post, but I'd also like to move
some of my projects to Github, I used Peter's scripts in the past, but
one thing I don't understand is how to automatically convert a
ConfigurationOf to a BaselineOf, and if this is really necessary.

Is the FileTree format, as used by filetree and gitfiletree MC repos,
100% compatible with the repository format of Iceberg? It seems so to
me, but it's better to ask than be sorry.

Regards!

Esteban A. Maringolo


2017-07-30 11:35 GMT-03:00 Peter Uhnak <[hidden email]>:

>>
>> If I've understood correctly, this means you can rage master with a version number like v1.1 and then put that in the URL
>>
>> > https://github.com/peteruhnak/IconFactory/tree/master:v1.1/
>>
>
> I am not sure where you got this url from, but combining branch and tag name makes nor sense... that's like you wanted a version 1.1 AND 2.3 (or whatever would be the latest in master).
>
> (as mentioned in the syntax: branch name OR commit id OR tag id)
>
> Peter
>

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Tim Mackinnon
In reply to this post by Peter Uhnak
Peter - I meant it as a figurative example - on a master branch you can tag whenever you want right? And so you can point users to a specific tag on master so they have a stable point to load from (possibly while you merge a branch back to master and then update any documentation or config before retagging and updating a BaselineOf?

This looks like what the AWS Smalltalk git repo has used as an example.

Tim

(Ps
Apologies for the "rage" iOS autocorrect - apparently that's what Apple thinks tags is corrected to ;)

Sent from my iPhone



Sent from my iPhone
On 30 Jul 2017, at 16:35, Peter Uhnak <[hidden email]> wrote:

>>
>> If I've understood correctly, this means you can rage master with a version number like v1.1 and then put that in the URL
>>
>>> https://github.com/peteruhnak/IconFactory/tree/master:v1.1/
>
> I am not sure where you got this url from, but combining branch and tag name makes nor sense... that's like you wanted a version 1.1 AND 2.3 (or whatever would be the latest in master).
>
> (as mentioned in the syntax: branch name OR commit id OR tag id)
>
> Peter
>


Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Peter Uhnak
Nono, I don't think you fully understand git's versioning.

To oversimplify: git's history is composed of commits and parental relationships between them. Nothing more, nothing less; it is just a directed acyclic graph.

On top of this graph structure you have additional stuff like branches, which are just labels atteched to the commits, and also tags, which are also just labels.

So when you tag a commit, it doesn't really matter what branch it was on, you've simply said that tag 1.0 points to a particular commit XXXXXX in the history; that commit could belong to master branch, or development branch, or any other branch (or no named branch at all, also known as detached head).

In another words, your tag points to a commit only, and branches do not play any role in this whatsoever.

Am I being clear? (I'm sipping my morning coffee so my brain is not fully operational yet ;) )

Peter


On Sun, Jul 30, 2017 at 05:28:44PM +0200, Tim Mackinnon wrote:

> Peter - I meant it as a figurative example - on a master branch you can tag whenever you want right? And so you can point users to a specific tag on master so they have a stable point to load from (possibly while you merge a branch back to master and then update any documentation or config before retagging and updating a BaselineOf?
>
> This looks like what the AWS Smalltalk git repo has used as an example.
>
> Tim
>
> (Ps
> Apologies for the "rage" iOS autocorrect - apparently that's what Apple thinks tags is corrected to ;)
>
> Sent from my iPhone
>
>
>
> Sent from my iPhone
> On 30 Jul 2017, at 16:35, Peter Uhnak <[hidden email]> wrote:
>
> >>
> >> If I've understood correctly, this means you can rage master with a version number like v1.1 and then put that in the URL
> >>
> >>> https://github.com/peteruhnak/IconFactory/tree/master:v1.1/
> >
> > I am not sure where you got this url from, but combining branch and tag name makes nor sense... that's like you wanted a version 1.1 AND 2.3 (or whatever would be the latest in master).
> >
> > (as mentioned in the syntax: branch name OR commit id OR tag id)
> >
> > Peter
> >
>
>

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Peter Uhnak
In reply to this post by Esteban A. Maringolo
* you can have metadata-less filetree and metadata-full(?) filetree
        * metadata are version information like the author name, versions of packages, parent versions, etc.
        * metadata-less do not store such information as it is assumed that the information is stored elsewhere (e.g. in git history)
* gitfiletree is just a filetree format, which in addition performs git commits of the exported files via shell execution of Git executable
* gitfiletree can operate both in metadata, and metadata-less mode (the latter is preferable, otherwise you'll have an endless barrage of merge conflicts)
* iceberg is metadata-less filetree only, and performs git commits using libgit

So yes, the format is the same and you can even use gitfiletree and iceberg at the same time from e.g. different images.

Peter


On Sun, Jul 30, 2017 at 12:11:48PM -0300, Esteban A. Maringolo wrote:

> Hi all
>
> Sorry to Norbert for hijacking this post, but I'd also like to move
> some of my projects to Github, I used Peter's scripts in the past, but
> one thing I don't understand is how to automatically convert a
> ConfigurationOf to a BaselineOf, and if this is really necessary.
>
> Is the FileTree format, as used by filetree and gitfiletree MC repos,
> 100% compatible with the repository format of Iceberg? It seems so to
> me, but it's better to ask than be sorry.
>
> Regards!
>
> Esteban A. Maringolo
>
>
> 2017-07-30 11:35 GMT-03:00 Peter Uhnak <[hidden email]>:
> >>
> >> If I've understood correctly, this means you can rage master with a version number like v1.1 and then put that in the URL
> >>
> >> > https://github.com/peteruhnak/IconFactory/tree/master:v1.1/
> >>
> >
> > I am not sure where you got this url from, but combining branch and tag name makes nor sense... that's like you wanted a version 1.1 AND 2.3 (or whatever would be the latest in master).
> >
> > (as mentioned in the syntax: branch name OR commit id OR tag id)
> >
> > Peter
> >
>

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Tim Mackinnon
In reply to this post by Peter Uhnak
Hi Peter - I am confused now, I’ve always understood that git tags are used to mark important points in history. From the Git online manual - "

Tagging

Like most VCSs, Git has the ability to tag specific points in history as being important. Typically people use this functionality to mark release points (v1.0, and so on). In this section, you’ll learn how to list the available tags, how to create new tags, and what the different types of tags are.


So I’ve always understood that by putting a tag on a commit, I was getting a snapshot of the whole graph at that point in time? Thus - by specifying the “:tag name” on the baseline url, you were getting that version?

Thinking a bit more, I guess if you want to to actually make some changes from that tag point - you do need to create a -b branch from it (otherwise you have a detached head right?) - is this what you are getting at?

Or is there a more obvious thing I am missing that lets you point to a particular version in GIT? I appreciate your insight into this, as I think we all need to learn how to do this properly.

Tim

On 31 Jul 2017, at 08:17, Peter Uhnak <[hidden email]> wrote:

Nono, I don't think you fully understand git's versioning.

To oversimplify: git's history is composed of commits and parental relationships between them. Nothing more, nothing less; it is just a directed acyclic graph.

On top of this graph structure you have additional stuff like branches, which are just labels atteched to the commits, and also tags, which are also just labels.

So when you tag a commit, it doesn't really matter what branch it was on, you've simply said that tag 1.0 points to a particular commit XXXXXX in the history; that commit could belong to master branch, or development branch, or any other branch (or no named branch at all, also known as detached head).

In another words, your tag points to a commit only, and branches do not play any role in this whatsoever.

Am I being clear? (I'm sipping my morning coffee so my brain is not fully operational yet ;) )

Peter


On Sun, Jul 30, 2017 at 05:28:44PM +0200, Tim Mackinnon wrote:
Peter - I meant it as a figurative example - on a master branch you can tag whenever you want right? And so you can point users to a specific tag on master so they have a stable point to load from (possibly while you merge a branch back to master and then update any documentation or config before retagging and updating a BaselineOf?

This looks like what the AWS Smalltalk git repo has used as an example.

Tim

(Ps
Apologies for the "rage" iOS autocorrect - apparently that's what Apple thinks tags is corrected to ;)

Sent from my iPhone



Sent from my iPhone
On 30 Jul 2017, at 16:35, Peter Uhnak <[hidden email]> wrote:


If I've understood correctly, this means you can rage master with a version number like v1.1 and then put that in the URL

https://github.com/peteruhnak/IconFactory/tree/master:v1.1/

I am not sure where you got this url from, but combining branch and tag name makes nor sense... that's like you wanted a version 1.1 AND 2.3 (or whatever would be the latest in master).

(as mentioned in the syntax: branch name OR commit id OR tag id)

Peter





Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

alistairgrant
Hi Tim,

Perhaps a different way of phrasing it that might help is that tags are global, not per branch.

Checking out a commit, whether by id, tag, or Branch name implies the entire tree.

Cheers,
Alistair


On 31 Jul. 2017 11:09 am, "Tim Mackinnon" <[hidden email]> wrote:
Hi Peter - I am confused now, I’ve always understood that git tags are used to mark important points in history. From the Git online manual - "

Tagging

Like most VCSs, Git has the ability to tag specific points in history as being important. Typically people use this functionality to mark release points (v1.0, and so on). In this section, you’ll learn how to list the available tags, how to create new tags, and what the different types of tags are.


So I’ve always understood that by putting a tag on a commit, I was getting a snapshot of the whole graph at that point in time? Thus - by specifying the “:tag name” on the baseline url, you were getting that version?

Thinking a bit more, I guess if you want to to actually make some changes from that tag point - you do need to create a -b branch from it (otherwise you have a detached head right?) - is this what you are getting at?

Or is there a more obvious thing I am missing that lets you point to a particular version in GIT? I appreciate your insight into this, as I think we all need to learn how to do this properly.

Tim

On 31 Jul 2017, at 08:17, Peter Uhnak <[hidden email]> wrote:

Nono, I don't think you fully understand git's versioning.

To oversimplify: git's history is composed of commits and parental relationships between them. Nothing more, nothing less; it is just a directed acyclic graph.

On top of this graph structure you have additional stuff like branches, which are just labels atteched to the commits, and also tags, which are also just labels.

So when you tag a commit, it doesn't really matter what branch it was on, you've simply said that tag 1.0 points to a particular commit XXXXXX in the history; that commit could belong to master branch, or development branch, or any other branch (or no named branch at all, also known as detached head).

In another words, your tag points to a commit only, and branches do not play any role in this whatsoever.

Am I being clear? (I'm sipping my morning coffee so my brain is not fully operational yet ;) )

Peter


On Sun, Jul 30, 2017 at 05:28:44PM +0200, Tim Mackinnon wrote:
Peter - I meant it as a figurative example - on a master branch you can tag whenever you want right? And so you can point users to a specific tag on master so they have a stable point to load from (possibly while you merge a branch back to master and then update any documentation or config before retagging and updating a BaselineOf?

This looks like what the AWS Smalltalk git repo has used as an example.

Tim

(Ps
Apologies for the "rage" iOS autocorrect - apparently that's what Apple thinks tags is corrected to ;)

Sent from my iPhone



Sent from my iPhone
On 30 Jul 2017, at 16:35, Peter Uhnak <[hidden email]> wrote:


If I've understood correctly, this means you can rage master with a version number like v1.1 and then put that in the URL

https://github.com/peteruhnak/IconFactory/tree/master:v1.1/

I am not sure where you got this url from, but combining branch and tag name makes nor sense... that's like you wanted a version 1.1 AND 2.3 (or whatever would be the latest in master).

(as mentioned in the syntax: branch name OR commit id OR tag id)

Peter






Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Tim Mackinnon
So I’m still puzzled why what I have said is incorrect - tag on master, update your repository url to include that tag with “:tagname” and then users will get that stable version when they load your baseline (vs. Leaving it off and they get whatever you might have in progress on master. And sure - you might develop on a branch and get it all perfect first and then merge to master - but I still think it is good idea to tag the point you are happy with and then update your baselineOf again?)

Peter seems to be implying there is a different (better?) way to do this - and I’m wondering if I’m missing something obvious or whether we are all saying the same thing (me rather badly it seems)

Tim

On 31 Jul 2017, at 10:18, Alistair Grant <[hidden email]> wrote:

Hi Tim,

Perhaps a different way of phrasing it that might help is that tags are global, not per branch.

Checking out a commit, whether by id, tag, or Branch name implies the entire tree.

Cheers,
Alistair


On 31 Jul. 2017 11:09 am, "Tim Mackinnon" <[hidden email]> wrote:
Hi Peter - I am confused now, I’ve always understood that git tags are used to mark important points in history. From the Git online manual - "

Tagging

Like most VCSs, Git has the ability to tag specific points in history as being important. Typically people use this functionality to mark release points (v1.0, and so on). In this section, you’ll learn how to list the available tags, how to create new tags, and what the different types of tags are.


So I’ve always understood that by putting a tag on a commit, I was getting a snapshot of the whole graph at that point in time? Thus - by specifying the “:tag name” on the baseline url, you were getting that version?

Thinking a bit more, I guess if you want to to actually make some changes from that tag point - you do need to create a -b branch from it (otherwise you have a detached head right?) - is this what you are getting at?

Or is there a more obvious thing I am missing that lets you point to a particular version in GIT? I appreciate your insight into this, as I think we all need to learn how to do this properly.

Tim

On 31 Jul 2017, at 08:17, Peter Uhnak <[hidden email]> wrote:

Nono, I don't think you fully understand git's versioning.

To oversimplify: git's history is composed of commits and parental relationships between them. Nothing more, nothing less; it is just a directed acyclic graph.

On top of this graph structure you have additional stuff like branches, which are just labels atteched to the commits, and also tags, which are also just labels.

So when you tag a commit, it doesn't really matter what branch it was on, you've simply said that tag 1.0 points to a particular commit XXXXXX in the history; that commit could belong to master branch, or development branch, or any other branch (or no named branch at all, also known as detached head).

In another words, your tag points to a commit only, and branches do not play any role in this whatsoever.

Am I being clear? (I'm sipping my morning coffee so my brain is not fully operational yet ;) )

Peter


On Sun, Jul 30, 2017 at 05:28:44PM +0200, Tim Mackinnon wrote:
Peter - I meant it as a figurative example - on a master branch you can tag whenever you want right? And so you can point users to a specific tag on master so they have a stable point to load from (possibly while you merge a branch back to master and then update any documentation or config before retagging and updating a BaselineOf?

This looks like what the AWS Smalltalk git repo has used as an example.

Tim

(Ps
Apologies for the "rage" iOS autocorrect - apparently that's what Apple thinks tags is corrected to ;)

Sent from my iPhone



Sent from my iPhone
On 30 Jul 2017, at 16:35, Peter Uhnak <[hidden email]> wrote:


If I've understood correctly, this means you can rage master with a version number like v1.1 and then put that in the URL

https://github.com/peteruhnak/IconFactory/tree/master:v1.1/

I am not sure where you got this url from, but combining branch and tag name makes nor sense... that's like you wanted a version 1.1 AND 2.3 (or whatever would be the latest in master).

(as mentioned in the syntax: branch name OR commit id OR tag id)

Peter







Reply | Threaded
Open this post in threaded view
|

Referencing Git tags/branchs/commits [Hijacked: Re: [ANN] Mustache moved to github]

Peter Uhnak
In reply to this post by Tim Mackinnon
> I’ve always understood that git tags are used to mark important points in history

Correct (mark=label)

> putting a tag on a commit, I was getting a snapshot of the whole graph

No, there's no need to perform a snapshot of the whole graph.

Commit id (the 40-bit SHA of a commit) is computed from various properties including the content of the commit and the parents, therefore if a single bit would have changed in the content, then the ID would be different.

Thus you don't need to perform a whole snapshot (that would be git clone --depth=1), because knowing just the ID is enough to identify the version, content, and ancestry.

Without anything else, you would work only with the SHA numbers... checking out XXXXXX, merging XXXX to YYYY, etc.
As this is very annoying, you have several concepts to help you

* lightweight tag --- this is literally just a text file in .git/refs/tags/tag-name that has the ID of the pointed-to commit
* annotated tag --- stored again in `.git/refs/tags/tag-name`, but instead it points to an intermediate file that contains info about the person creating the tag, the tag message, etc, but not the tag content; instead the intermediate file again points to a commit ID (you can look at the content of the intermediate file in .git/objects (git cat-file to read it)
* branch is a kind of a "moving tag"; in e.g. `.git/refs/heads/master` you would see the ID of the latest commit (just like a lightweight tag)

So branch is in reality just the tip of the branch (the head of it), and the previous commits do not really belong to any branch. (You can see this when you merge a branch and then delete the merged branch... the commits are still there, only the label was removed.). So it would be as if you deleted a tag and created it again after each commit.

> So I’ve always understood that by putting a tag on a commit, I was getting a snapshot of the whole graph at that point in time? Thus - by specifying the “:tag name” on the baseline url, you were getting that version?

tags and branches are just labels; you could directly use :<commit sha> in the baseline with the same effect
 
> Thinking a bit more, I guess if you want to to actually make some changes from that tag point - you do need to create a -b branch from it (otherwise you have a detached head right?) - is this what you are getting at?

you don't need a branch, you can just carry on from the "detached" head

> Or is there a more obvious thing I am missing that lets you point to a particular version in GIT?

Yes, you can just say, I want code as it was in version <COMMIT-SHA>.


To summarize:
* the commit graph representation has no notion of branches or tags
* you can use commit sha instead of tags/branchs
* tags are just references to particular commits
* branches are just like tags, only the reference changes after each commit
* the data representation is very simple and straight-forward, and you can easily view it by hand (from terminal with git cat-file) in the .git folder

Peter

(am I making it more clear or more obscure? :-D)

Reply | Threaded
Open this post in threaded view
|

Re: [ANN] Mustache moved to github

Ben Coman
In reply to this post by Tim Mackinnon
I found this useful to clarify my understanding of git...
https://git-scm.com/book/en/v1/Git-Internals

cheers -ben

On Mon, Jul 31, 2017 at 5:31 PM, Tim Mackinnon <[hidden email]> wrote:
So I’m still puzzled why what I have said is incorrect - tag on master, update your repository url to include that tag with “:tagname” and then users will get that stable version when they load your baseline (vs. Leaving it off and they get whatever you might have in progress on master. And sure - you might develop on a branch and get it all perfect first and then merge to master - but I still think it is good idea to tag the point you are happy with and then update your baselineOf again?)

Peter seems to be implying there is a different (better?) way to do this - and I’m wondering if I’m missing something obvious or whether we are all saying the same thing (me rather badly it seems)

Tim

On 31 Jul 2017, at 10:18, Alistair Grant <[hidden email]> wrote:

Hi Tim,

Perhaps a different way of phrasing it that might help is that tags are global, not per branch.

Checking out a commit, whether by id, tag, or Branch name implies the entire tree.

Cheers,
Alistair


On 31 Jul. 2017 11:09 am, "Tim Mackinnon" <[hidden email]> wrote:
Hi Peter - I am confused now, I’ve always understood that git tags are used to mark important points in history. From the Git online manual - "

Tagging

Like most VCSs, Git has the ability to tag specific points in history as being important. Typically people use this functionality to mark release points (v1.0, and so on). In this section, you’ll learn how to list the available tags, how to create new tags, and what the different types of tags are.


So I’ve always understood that by putting a tag on a commit, I was getting a snapshot of the whole graph at that point in time? Thus - by specifying the “:tag name” on the baseline url, you were getting that version?

Thinking a bit more, I guess if you want to to actually make some changes from that tag point - you do need to create a -b branch from it (otherwise you have a detached head right?) - is this what you are getting at?

Or is there a more obvious thing I am missing that lets you point to a particular version in GIT? I appreciate your insight into this, as I think we all need to learn how to do this properly.

Tim

On 31 Jul 2017, at 08:17, Peter Uhnak <[hidden email]> wrote:

Nono, I don't think you fully understand git's versioning.

To oversimplify: git's history is composed of commits and parental relationships between them. Nothing more, nothing less; it is just a directed acyclic graph.

On top of this graph structure you have additional stuff like branches, which are just labels atteched to the commits, and also tags, which are also just labels.

So when you tag a commit, it doesn't really matter what branch it was on, you've simply said that tag 1.0 points to a particular commit XXXXXX in the history; that commit could belong to master branch, or development branch, or any other branch (or no named branch at all, also known as detached head).

In another words, your tag points to a commit only, and branches do not play any role in this whatsoever.

Am I being clear? (I'm sipping my morning coffee so my brain is not fully operational yet ;) )

Peter


On Sun, Jul 30, 2017 at 05:28:44PM +0200, Tim Mackinnon wrote:
Peter - I meant it as a figurative example - on a master branch you can tag whenever you want right? And so you can point users to a specific tag on master so they have a stable point to load from (possibly while you merge a branch back to master and then update any documentation or config before retagging and updating a BaselineOf?

This looks like what the AWS Smalltalk git repo has used as an example.

Tim

(Ps
Apologies for the "rage" iOS autocorrect - apparently that's what Apple thinks tags is corrected to ;)

Sent from my iPhone



Sent from my iPhone
On 30 Jul 2017, at 16:35, Peter Uhnak <[hidden email]> wrote:


If I've understood correctly, this means you can rage master with a version number like v1.1 and then put that in the URL

https://github.com/peteruhnak/IconFactory/tree/master:v1.1/

I am not sure where you got this url from, but combining branch and tag name makes nor sense... that's like you wanted a version 1.1 AND 2.3 (or whatever would be the latest in master).

(as mentioned in the syntax: branch name OR commit id OR tag id)

Peter