* Emacs branches in git @ 2014-02-16 4:50 Bill Wohler 2014-02-16 5:01 ` Dmitry Gutov 0 siblings, 1 reply; 11+ messages in thread From: Bill Wohler @ 2014-02-16 4:50 UTC (permalink / raw) To: emacs-devel I missed the transition discussion in January, but it doesn't look like I missed the transition :-). I didn't see any discussion about branching conventions in regards to release strategy and branch namespaces. I apologize if I missed it. For a release strategy, the one espoused in this page is popular: http://nvie.com/posts/a-successful-git-branching-model/ I'd also recommend against a flat branch namespace in the upstream repository. Here are some thoughts on dividing the branches, including dev and master for completeness: master: For tagged releases. dev: How trunk is used now. releases: Release branches, such as releases/emacs-24 features: Larger features, such as features/gnus or features/mh-e. topics: Ephemeral feature or bugfix branches, such as topics/vc-git or topics/16694. bugs: Perhaps folks might prefer bugs/16694 instead. The latter two namespaces would mostly only live in the developer's repository, but it would be good to have a convention in case they are pushed for sharing. -- Bill Wohler <wohler@newt.com> aka <Bill.Wohler@nasa.gov> http://www.newt.com/wohler/ GnuPG ID:610BD9AD ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Emacs branches in git 2014-02-16 4:50 Emacs branches in git Bill Wohler @ 2014-02-16 5:01 ` Dmitry Gutov 2014-02-16 20:11 ` Bill Wohler 0 siblings, 1 reply; 11+ messages in thread From: Dmitry Gutov @ 2014-02-16 5:01 UTC (permalink / raw) To: emacs-devel Bill Wohler <wohler@newt.com> writes: > master: For tagged releases. > > dev: How trunk is used now. Why is that? 1. People can put tags on revisions in release branches. Why dedicate a branch just for release tags? 2. I suspect that at least some releases won't be direct descendants of one another. I.e. there won't be a way to have all release revisions on one branch. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Emacs branches in git 2014-02-16 5:01 ` Dmitry Gutov @ 2014-02-16 20:11 ` Bill Wohler 2014-02-16 20:17 ` David Kastrup 0 siblings, 1 reply; 11+ messages in thread From: Bill Wohler @ 2014-02-16 20:11 UTC (permalink / raw) To: emacs-devel Dmitry Gutov <dgutov@yandex.ru> writes: > Bill Wohler <wohler@newt.com> writes: > >> master: For tagged releases. >> >> dev: How trunk is used now. > > Why is that? > > 1. People can put tags on revisions in release branches. Why dedicate a > branch just for release tags? Please see http://nvie.com/posts/a-successful-git-branching-model/ for the rationale. Also, in git, release branches are deleted when they are no longer needed. > 2. I suspect that at least some releases won't be direct descendants of > one another. I.e. there won't be a way to have all release revisions on > one branch. Yes, that is one reason why you want to tag on master. As a related aside, I find that after tagging a release on master, it is helpful to merge master into the release branch and then in into dev. That way, "git describe" can refer to a reasonable tag no matter which branch you are on. -- Bill Wohler <wohler@newt.com> aka <Bill.Wohler@nasa.gov> http://www.newt.com/wohler/ GnuPG ID:610BD9AD ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Emacs branches in git 2014-02-16 20:11 ` Bill Wohler @ 2014-02-16 20:17 ` David Kastrup 2014-02-16 22:30 ` Bill Wohler 0 siblings, 1 reply; 11+ messages in thread From: David Kastrup @ 2014-02-16 20:17 UTC (permalink / raw) To: emacs-devel Bill Wohler <wohler@newt.com> writes: > Dmitry Gutov <dgutov@yandex.ru> writes: > >> Bill Wohler <wohler@newt.com> writes: >> >>> master: For tagged releases. >>> >>> dev: How trunk is used now. >> >> Why is that? >> >> 1. People can put tags on revisions in release branches. Why dedicate a >> branch just for release tags? > > Please see http://nvie.com/posts/a-successful-git-branching-model/ for > the rationale. Also, in git, release branches are deleted when they are > no longer needed. You are talking past each other. You want to organize tags into a directory of tags, Dmitry is talking about placing tags all into a single branch. Which makes very little sense. But it's not obvious to casual users of gits that you can have tags in a directory structure that has nothing to do with either the work directory or the commit tree. -- David Kastrup ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Emacs branches in git 2014-02-16 20:17 ` David Kastrup @ 2014-02-16 22:30 ` Bill Wohler 2014-02-16 23:53 ` Dmitry Gutov 0 siblings, 1 reply; 11+ messages in thread From: Bill Wohler @ 2014-02-16 22:30 UTC (permalink / raw) To: emacs-devel David Kastrup <dak@gnu.org> writes: > Bill Wohler <wohler@newt.com> writes: > >> Dmitry Gutov <dgutov@yandex.ru> writes: >> >>> Bill Wohler <wohler@newt.com> writes: >>> >>>> master: For tagged releases. >>>> >>>> dev: How trunk is used now. >>> >>> Why is that? >>> >>> 1. People can put tags on revisions in release branches. Why dedicate a >>> branch just for release tags? >> >> Please see http://nvie.com/posts/a-successful-git-branching-model/ for >> the rationale. Also, in git, release branches are deleted when they are >> no longer needed. > > You are talking past each other. You want to organize tags into a > directory of tags, s/tags/branches/ > Dmitry is talking about placing tags all into a > single branch. Which makes very little sense. Except that's not the point, but rather a side-effect. The point is that master holds the production-ready commits. > But it's not obvious to > casual users of gits that you can have tags in a directory structure > that has nothing to do with either the work directory or the commit > tree. Can you expound on that? -- Bill Wohler <wohler@newt.com> aka <Bill.Wohler@nasa.gov> http://www.newt.com/wohler/ GnuPG ID:610BD9AD ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Emacs branches in git 2014-02-16 22:30 ` Bill Wohler @ 2014-02-16 23:53 ` Dmitry Gutov 2014-02-17 0:36 ` Bill Wohler 0 siblings, 1 reply; 11+ messages in thread From: Dmitry Gutov @ 2014-02-16 23:53 UTC (permalink / raw) To: Bill Wohler; +Cc: emacs-devel Bill Wohler <wohler@newt.com> writes: >>> Please see http://nvie.com/posts/a-successful-git-branching-model/ for >>> the rationale. I don't see any justification there, except "We consider origin/master to be ... a production-ready state." Which is just an arbitrary opinion. >>> Also, in git, release branches are deleted when they are >>> no longer needed. So what? Tags can live on. >> You are talking past each other. You want to organize tags into a >> directory of tags, > > s/tags/branches/ ?? >> Dmitry is talking about placing tags all into a >> single branch. Which makes very little sense. If master is to be used "for tagged releases", all release-tagged revisions have to be able to line up in one branch. Interspersed with plain revisions, of course. > Except that's not the point, but rather a side-effect. The point is that > master holds the production-ready commits. Yes, and why do we need that? If one wants to use the latest release, they can just fetch the list of tags, and then checkout the one with the greatest number. >> But it's not obvious to >> casual users of gits that you can have tags in a directory structure >> that has nothing to do with either the work directory or the commit >> tree. > > Can you expound on that? Yes, please. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Emacs branches in git 2014-02-16 23:53 ` Dmitry Gutov @ 2014-02-17 0:36 ` Bill Wohler 2014-02-17 2:22 ` Dmitry Gutov 0 siblings, 1 reply; 11+ messages in thread From: Bill Wohler @ 2014-02-17 0:36 UTC (permalink / raw) To: Dmitry Gutov; +Cc: emacs-devel Dmitry Gutov <dgutov@yandex.ru> wrote: > Bill Wohler <wohler@newt.com> writes: > > >>> Please see http://nvie.com/posts/a-successful-git-branching-model/ for > >>> the rationale. > > I don't see any justification there, except "We consider origin/master > to be ... a production-ready state." Which is just an arbitrary opinion. OK, it might not have justification, but it isn't arbitrary. What is the justification for *not* doing this? > >>> Also, in git, release branches are deleted when they are > >>> no longer needed. > > So what? Tags can live on. Except you will no longer see them in git log output. > >> You are talking past each other. You want to organize tags into a > >> directory of tags, > > > > s/tags/branches/ > > ?? I was suggesting directories of branches, not tags. Regardless of where you tag, creating a hierarchy of branches would help clean things up and make things easier to find. Can you organize tags into a directory, and would "git tag" only list the directory? That would be neat, because then I could put, for example, the MH-E tags into a subdirectory so Emacs users would not have them in their "git tags" output. > >> Dmitry is talking about placing tags all into a > >> single branch. Which makes very little sense. > > If master is to be used "for tagged releases", all release-tagged > revisions have to be able to line up in one branch. Interspersed with > plain revisions, of course. > > > Except that's not the point, but rather a side-effect. The point is that > > master holds the production-ready commits. > > Yes, and why do we need that? If one wants to use the latest release, > they can just fetch the list of tags, and then checkout the one with the > greatest number. While an expert might have a lot more reasons, a couple of things that come to mind are: - Looking for and checking out a tag is more work than "git checkout master". - Conversely, if master tracked the release version, you just have to do a "git pull" to stay up to date with the latest released version. - Checking out a tag doesn't work if you have continuous integration. Granted, you wouldn't have CI with master in this scheme, but the generalization may apply elsewhere. - Checking out a tagged version puts you in a "detached HEAD" state for better or for worse. - git log master would yield a concise history of releases. Since branches are cheap, why not? > >> But it's not obvious to > >> casual users of gits that you can have tags in a directory structure > >> that has nothing to do with either the work directory or the commit > >> tree. > > > > Can you expound on that? > > Yes, please. -- Bill Wohler <wohler@newt.com> aka <Bill.Wohler@nasa.gov> http://www.newt.com/wohler/ GnuPG ID:610BD9AD ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Emacs branches in git 2014-02-17 0:36 ` Bill Wohler @ 2014-02-17 2:22 ` Dmitry Gutov 2014-02-17 9:11 ` Andreas Schwab ` (2 more replies) 0 siblings, 3 replies; 11+ messages in thread From: Dmitry Gutov @ 2014-02-17 2:22 UTC (permalink / raw) To: emacs-devel On 17.02.2014 02:36, Bill Wohler wrote: > OK, it might not have justification, but it isn't arbitrary. What is the > justification for *not* doing this? As far as I'm concerned, it subverts the meaning of "master". That's just one opinion, though. >> So what? Tags can live on. > > Except you will no longer see them in git log output. Why not? A tag just marks a commit. If the tagged commits are in a certain branch's history, and you call 'git log' while it's checked out, the tags will show up. For example, if all release branches are eventually merged into 'devel', its 'git log' will show all tags. > I was suggesting directories of branches, not tags. Regardless of where > you tag, creating a hierarchy of branches would help clean things up and > make things easier to find. If you mean the naming conventions for the other branches, then yeah, they look okay to me. > Can you organize tags into a directory, and would "git tag" only list > the directory? That would be neat, because then I could put, for > example, the MH-E tags into a subdirectory so Emacs users would not have > them in their "git tags" output. git tag | grep ^foo ? > - Looking for and checking out a tag is more work than "git > checkout master". > - Conversely, if master tracked the release version, you just have to do > a "git pull" to stay up to date with the latest released version. I wonder how popular would that be. ATM, people who build from the repository usually stay with the trunk. Because it's stable most of the time, and offers the latest features. > - git log master would yield a concise history of releases. Plain 'git log' wouldn't, since it shows the full branch history. But yes, you'd be able to limit the history to only merge or non-merge commits with additional argument. But this would also work for non-"stable" master or devel. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Emacs branches in git 2014-02-17 2:22 ` Dmitry Gutov @ 2014-02-17 9:11 ` Andreas Schwab 2014-02-17 12:51 ` Thien-Thi Nguyen 2014-02-17 22:51 ` Xue Fuqiao 2 siblings, 0 replies; 11+ messages in thread From: Andreas Schwab @ 2014-02-17 9:11 UTC (permalink / raw) To: Dmitry Gutov; +Cc: emacs-devel Dmitry Gutov <dgutov@yandex.ru> writes: > On 17.02.2014 02:36, Bill Wohler wrote: >> Can you organize tags into a directory, and would "git tag" only list >> the directory? That would be neat, because then I could put, for >> example, the MH-E tags into a subdirectory so Emacs users would not have >> them in their "git tags" output. > > git tag | grep ^foo ? git tag -l foo/* Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Emacs branches in git 2014-02-17 2:22 ` Dmitry Gutov 2014-02-17 9:11 ` Andreas Schwab @ 2014-02-17 12:51 ` Thien-Thi Nguyen 2014-02-17 22:51 ` Xue Fuqiao 2 siblings, 0 replies; 11+ messages in thread From: Thien-Thi Nguyen @ 2014-02-17 12:51 UTC (permalink / raw) To: Dmitry Gutov; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1133 bytes --] () Dmitry Gutov <dgutov@yandex.ru> () Mon, 17 Feb 2014 04:22:43 +0200 > OK, it might not have justification, but it isn't arbitrary. What > is the justification for *not* [using "master" for named releases]? As far as I'm concerned, it subverts the meaning of "master". That's just one opinion, though. Well, it's possible to have a repo w/o "master" (e.g., all my local repos), so there is really no inherent meaning tied to that branch name. I prefer branch discipline ((re-)naming, operation, role in the DAG) to be explicit, and like the scheme on the referenced page very much, the only exception being the name "master". If that were renamed "public" or "archive", for example, then it would be perfect (IMHO). This way, the name reflects the function, and we sidestep the potential confusion of "conventional meanings" (insert "so many standards" smirk, here). -- Thien-Thi Nguyen GPG key: 4C807502 (if you're human and you know it) read my lisp: (responsep (questions 'technical) (not (via 'mailing-list))) => nil [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Emacs branches in git 2014-02-17 2:22 ` Dmitry Gutov 2014-02-17 9:11 ` Andreas Schwab 2014-02-17 12:51 ` Thien-Thi Nguyen @ 2014-02-17 22:51 ` Xue Fuqiao 2 siblings, 0 replies; 11+ messages in thread From: Xue Fuqiao @ 2014-02-17 22:51 UTC (permalink / raw) To: emacs-devel Dmitry Gutov <dgutov@yandex.ru> writes: > As far as I'm concerned, it subverts the meaning of "master". That's > just one opinion, though. In the famous "Pro Git"[fn:1]: [...] Many Git developers have a workflow that embraces this approach, such as having only code that is entirely stable in their `master' branch — possibly only code that has been or will be released. They have another parallel branch named develop or next that they work from or use to test stability — it isn’t necessarily always stable, but whenever it gets to a stable state, it can be merged into `master'. [...] You can keep doing this for several levels of stability. Some larger projects also have a `proposed' or `pu' (proposed updates) branch that has integrated branches that may not be ready to go into the `next' or `master' branch. The idea is that your branches are at various levels of stability; when they reach a more stable level, they’re merged into the branch above them. Footnotes: [fn:1] http://git-scm.com/book/en/Git-Branching-Branching-Workflows -- http://www.gnu.org/software/emacs/ ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2014-02-17 22:51 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-02-16 4:50 Emacs branches in git Bill Wohler 2014-02-16 5:01 ` Dmitry Gutov 2014-02-16 20:11 ` Bill Wohler 2014-02-16 20:17 ` David Kastrup 2014-02-16 22:30 ` Bill Wohler 2014-02-16 23:53 ` Dmitry Gutov 2014-02-17 0:36 ` Bill Wohler 2014-02-17 2:22 ` Dmitry Gutov 2014-02-17 9:11 ` Andreas Schwab 2014-02-17 12:51 ` Thien-Thi Nguyen 2014-02-17 22:51 ` Xue Fuqiao
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).