Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automatically generated version on build #91

Closed
lunny opened this issue Nov 6, 2016 · 20 comments · Fixed by #190
Closed

Automatically generated version on build #91

lunny opened this issue Nov 6, 2016 · 20 comments · Fixed by #190
Assignees
Labels
topic/deployment type/enhancement An improvement of existing functionality
Milestone

Comments

@lunny
Copy link
Member

lunny commented Nov 6, 2016

I think we can learn Golang's version management.

On master, all the version numbers will be gave on build and the version number is the commit hash. Since the hash is too long, we can use the first 7 characters. i.e. tip+2b445c7

On release branch, all the version number will be gave on build and the version number is branch name plus git hash. i.e. 1.0+2b445c7

For a tag version i.e. 1.0.0, the version number could be static and we can give it a special number not a git hash.

So that, when a user report an issue, we can know the question is from which version quickly.

@lunny lunny added the type/proposal The new feature has not been accepted yet but needs to be discussed first. label Nov 6, 2016
@lunny lunny added this to the 1.0.0 milestone Nov 6, 2016
@makhov
Copy link
Contributor

makhov commented Nov 6, 2016

In our project we use git describe --tag and build with

$ go build -ldflags "-w -s -X main.Version=${VERSION}"

@strk
Copy link
Member

strk commented Nov 6, 2016 via email

@lunny
Copy link
Member Author

lunny commented Nov 6, 2016

It seems it's a good idea

@lunny
Copy link
Member Author

lunny commented Nov 6, 2016

So we should create a make.bash & make.bat instead a Makefile? @tboerger

lunny added a commit to lunny/gitea that referenced this issue Nov 7, 2016
@tboerger
Copy link
Member

tboerger commented Nov 7, 2016

We can accomplish that with the Makefile as well, I would just add the version part to it.

@lunny
Copy link
Member Author

lunny commented Nov 7, 2016

Makefile ask people to install make system first. Many gophers come from Ruby and Python not C or C++. And since build Gitea is so easy that it's no need a Makefile. Or we can move it to 1.1.0?

@strk
Copy link
Member

strk commented Nov 7, 2016 via email

@tboerger
Copy link
Member

tboerger commented Nov 7, 2016

Go get should simply have 0.0.0+master

@tboerger
Copy link
Member

tboerger commented Nov 7, 2016

But most gophers also got build-essentials installed which also includes make

@strk
Copy link
Member

strk commented Nov 7, 2016

On Mon, Nov 07, 2016 at 06:31:56AM -0800, Thomas Boerger wrote:

Go get should simply have 0.0.0+master

How about 1.0.0-dev, and incremented after release ?

@tboerger
Copy link
Member

tboerger commented Nov 7, 2016

Because we should always provide valid version numbers.

@strk
Copy link
Member

strk commented Nov 7, 2016

is 1.0.0-dev invalid ?

@tboerger
Copy link
Member

tboerger commented Nov 7, 2016

Yes

@strk
Copy link
Member

strk commented Nov 7, 2016 via email

@lunny
Copy link
Member Author

lunny commented Nov 7, 2016

go build on branch master: 1.0+dev
go build on branch v1.0: 1.0.0+dev
go build on tag v1.0.0: 1.0.0

make on branch master: 1.0+hash
make on branch v1.0: 1.0.0+hash
make on tag v1.0.0: 1.0.0

@strk
Copy link
Member

strk commented Nov 7, 2016

@lunny that means never having the commit-hash !
I think commit-hash should always be there except for builds on tag

@tboerger
Copy link
Member

tboerger commented Nov 7, 2016

These are my 2 cents, because we should always keep valid semver versions:

go build on branch master: 1.0.0+dev, 1.1.0+dev, 1.2.0+dev
go build on branch v1.0: 1.0.0+dev, 1.0.1+dev, 1.0.2+dev
go build on tag v1.0.0: 1.0.0+631c18a

make on branch master: 1.0.0+dev, 1.1.0+dev, 1.2.0+dev
make on branch v1.0: 1.0.0+631c18a, 1.0.1+631c18b, 1.0.2+631c18c
make on tag v1.0.0: 1.0.0+631c18a

These are also valid versions for most packages like rpm or deb.

Edit: Maybe we should even stick with make on branch master: 1.0.0+dev, 1.1.0+dev, 1.2.0+dev, otherwise we can not differentiate it anymore.

Edit: And maybe go build on tag v1.0.0: 1.0.0+631c18a won't work because we can not patch the commit into the tag code, so more like go build on tag v1.0.0: 1.0.0+dev ;)

@strk
Copy link
Member

strk commented Nov 7, 2016

On Mon, Nov 07, 2016 at 07:26:56AM -0800, Thomas Boerger wrote:

These are my 2 cents, because we should always keep valid semver versions:

go build on branch master: 1.0.0+dev, 1.1.0+dev, 1.2.0+dev
go build on branch v1.0: 1.0.0+dev, 1.0.1+dev, 1.0.2+dev
go build on tag v1.0.0: 1.0.0+631c18a

make on branch master: 1.0.0+631c18a, 1.1.0+631c18b, 1.2.0+631c18c
make on branch v1.0: 1.0.0+631c18a, 1.0.1+631c18b, 1.0.2+631c18c
make on tag v1.0.0: 1.0.0+631c18a

These are also valid versions for most packages like rpm or deb.

+1, it works for me.

@lunny
Copy link
Member Author

lunny commented Nov 8, 2016

go build on tag v1.0.0: 1.0.0+631c18a
make on tag v1.0.0: 1.0.0+631c18a

I think only 1.0.0 is ok for tags.

@strk
Copy link
Member

strk commented Nov 8, 2016

@lunny that'd be even better but I'm afraid go build cannot possibly include the hash w/out changing a version file on each and every commit. make instead would extract it dynamically

@bkcsoft bkcsoft added type/enhancement An improvement of existing functionality and removed type/proposal The new feature has not been accepted yet but needs to be discussed first. labels Dec 12, 2016
lunny pushed a commit to lunny/gitea that referenced this issue Feb 7, 2019
* Faster commit lookup

* Fix copy/rename bug

* Comment

* Use defer
@go-gitea go-gitea locked and limited conversation to collaborators Nov 23, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
topic/deployment type/enhancement An improvement of existing functionality
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants