Comments (18)
Good idea - need to build that into the setversion.py script, however. Else I'll forget every time. Marking as enhancement.
from tinyxml2.
We would like to get tinyxml2 into the master homebrew repository, but they need tagged releases. Could we just go back and tag some commits where you increment the version number?
Homebrew/legacy-homebrew#23381
from tinyxml2.
This one is hanging over my head. I actually mean to pull out the version numbers - they aren't tested, and it isn't clear they are correct. The other option would be to just have one version number that is incremented with every checkin.
I'd appreciate thoughts on a useful-for-you version system that doesn't require me to test for binary compatibility all the time.
from tinyxml2.
The people who want tagging are probably wanting to release the code through debian/ubuntu or home-brew. Three aspects stand out to me:
- tags with sequential numbering are convenient for distinguishing the relative age of different snapshots of the code base (impossible to do by visually inspecting changeset hashes). it also helps with package management
- identifying stable versions of the software: typically code is tagged after it has been tested for a while and appears to be reasonably stable.
- indicating API / ABI stability through version numbering
I think the first two are most important to me, and would be useful even if you don't have any API/ABI testing in place.
from tinyxml2.
It's important to know whether API compatibility breaks or not. The best possible version scheme is: major.minor.build.
If you want to change the API or make a backwards-incompatible change, bump the major on your next release.
If you want to change behavior in a backwards-compatible way and without changing the API, bump the minor version.
For simple bug fixes that don't affect behavior or API, just bump the build number.
This help us know. For example, at this moment I don't know how safe is to update TinyXML-2, and whether it will break dependent applications.
from tinyxml2.
That's reasonable. I'll add notes to the code. (And not tag - I don't want to deal with both systems.)
from tinyxml2.
Tinyxml2 has effectively no release at all. That leads to packagers picking random commits for a snapshot without any good idea about it. I don't understand how notes in the code do improve that situation.
http://git-scm.com/book/en/Git-Basics-Tagging
https://github.com/blog/1547-release-your-software
from tinyxml2.
TinyXML-2 isn't intended to be packaged - that's a level of care paid to the API surface that I generally don't attempt. I'm trying to help out for those that want dll/packaging to work, but it's on the edge of the scope of the project.
All pushes to github pass the test suite.
I'm open to pulling out the versions in the source files, and switching to tagging, but having both is plainly a recipe for mistakes.
Thoughts?
from tinyxml2.
Which - to be clear - I'm fine with. I don't particularly like having the version in the header. I don't think that's actually adding real info either. I'm just checking that pulling versioning from the header to git is okay for people.
from tinyxml2.
Intended or not, it is already packaged in major distributions.
debian: https://packages.debian.org/sid/libtinyxml2-0.0.0 (here the versioning seems wrong, so there is already confusion)
gentoo: http://packages.gentoo.org/package/dev-libs/tinyxml2
fedora: https://apps.fedoraproject.org/packages/tinyxml2
from tinyxml2.
Yeah...the debian thing is TinyXML-1, They changed the version on there own. Grr. Again, I'm not trying to stop this, it just isn't the focus. So what the minimal, reasonable approach? (Git or header? Git and header?)
from tinyxml2.
Which - to be clear - I'm fine with. I don't particularly like having the version in the header. I don't think that's actually adding real info either. I'm just checking that pulling versioning from the header to git is okay for people.
Hm, theoretically some people could use the header versioning for their own code conditionals. The easiest thing could be a commit hook that checks existent git tags against the version in the header (with some grep/sed magic) and creates and pushes a new tag if there is no match.
from tinyxml2.
Tags would be a lot better. For starters, Github would actually convert them to downloadable releases.
There are two reasons distributions --Debian, at least-- prefer to pack a library (as opposed to embed in apps). One is that multiple copies of the same code is avoided, reducing oversall distribution size, reducing bandwidth and system memory footprint.
The other one is that if a vulnerability is found, fixing applications would require patching every application and unpatching when upstream adopts a newer version of the library (which may or may not happen). With numbered releases and knowing what version fixes it and having it packed separately, it's just a matter of repackaging the library and relinking/recompiling applications. The latter can sometimes be done automatically by the distribution infrastructure. See section 4.13:
http://www.debian.org/doc/debian-policy/ch-source.html#s-embeddedfiles
It's easy to "take care to the API surface" if you use Git branches: have a "master" branch where you can do whatever you want. Have a "2.x" where you carefully manage behavior only and "2.0.x" branch where you only stabilize, no behavior or API changes. It's easy to cherry-pick commits between branches.
from tinyxml2.
There are two reasons distributions --Debian, at least-- prefer to pack a library (as opposed to embed in apps).
there are a lot more:
https://blog.flameeyes.eu/2009/01/bundling-libraries-for-despair-and-insecurity
FrozenSand/ioq3-for-UrbanTerror-4#18
from tinyxml2.
Okay - how about this for a plan. There is already a python script to set the version. I can play around with expanding it to:
- set the version
- build
- commit
- tag
Which would, I think, meet everyone's needs. Then the version is in sync, in the header, in git, and has meaning to major/minor/build. And after I get the script running, it won't be annoying me. I'll take a look at getting that practically working.
from tinyxml2.
Done. There is now tags, releases, and versioning.
from tinyxml2.
Very much appreciated.
from tinyxml2.
Thank you very much. I have just submitted a formula to homebrew for tinyxml2.
from tinyxml2.
Related Issues (20)
- CMake install question HOT 2
- Converting CString to UTF-8 for saving to TinyXML2 HOT 1
- Problems occur when building a project
- XMLPrinter printer( fp ) not recognised on arduino ide compiler HOT 2
- Why return XML_ ERROR_ PARSING? HOT 2
- Documentation error? HOT 2
- Turkish Characters Support HOT 1
- When will tinyxml release a new version? HOT 1
- Assessment of the difficulty in porting CPU architecture for tinyXML2 HOT 1
- Support for char8_t and std::u8string HOT 2
- Using IntText(); HOT 1
- FirstChildElement and namespace prefixes.
- Bug with XMLElement::Attribute - it returns 0 instead of "value" if it can't find the attribute -
- Is the Doxygen tagfile published anywhere?
- v10: MinGW DLL build behavior change
- porty guide from tinyxml1
- Tags for versions below 2.0.1
- `Error()` returns false for corrupted XML (when there is no starting tag) HOT 1
- Add xmake build system HOT 1
- xmltest.exe fail Error opening test file 'dream.xml'
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tinyxml2.