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

NexT v7 Introduced #567

Closed
ivan-nginx opened this issue Jan 5, 2019 · 4 comments
Closed

NexT v7 Introduced #567

ivan-nginx opened this issue Jan 5, 2019 · 4 comments

Comments

@ivan-nginx
Copy link
Member

ivan-nginx commented Jan 5, 2019

From this year we will start to development NexT v7. And NexT v6 will not be cutted-out for now. Instead of this, we will continue maintenance for version 6 with simultaneous development of version 7.

Versions Difference

What changes planned in that versions? Good question, here they are:

  • Development (v7) mean → all bugfixes, optimizations and features will be added in this version.
  • Maintenance (v6) mean → all bugfixes and optimizations (partially) only will be added in this version.

As we can see, v6 will be more stable version, unlike of v7. If someone want more stability with less features, recommended to use v6 without any fear about no maintenance for this version in the future.

Objectives of Version 7

There are several globally targets for NexT v7 changes planned:

Branching Models

All last year there are no problem with branching model management. All was simple:

  1. We had master branch, which at the same time was development and production branch.
  2. Changes created in separate temporarily branches were merged into master branch via pull request's.
  3. Once per month we made tag releases from current master branch.

It was when NexT development came with single version. For now, we must support multiple versions: v6.x and v7.x, what bring some complicated as for maintainers and for users too.

Last several days I thinking a lot about this and it seems the right way was successfully founded. And before understand my decision, let's see on all articles I finded.

  1. A successful Git branching modelhttps://nvie.com/posts/a-successful-git-branching-model/
    image
  2. Cactus modelhttps://barro.github.io/2016/02/a-succesful-git-branching-model-considered-harmful/
    image
  3. OneFlow modelhttps://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow
    image
  4. A stable mainline branching modelhttp://www.bitsnbites.eu/a-stable-mainline-branching-model-for-git/
    image
    image

So, lets comment this models:

  1. A little bit complicated for development. master branch keep only releases versions, but we already have tags once per month. And I read some negative responses about this branching model.
  2. Only one thing let me get to doubt: rebased branches. Yes, on local branches anyone can do what he's want, but we talking about remote branches, how we will working with them. This model is good, but need some changes to use it.
  3. Again: rebase + merge --no--ff – only with a little difference with allow to minimize merged commits history. Anyway, history will not linear.
  4. So, this is similar to our model, with except – releases created not only under the tags, but under branches too. As I understand, branches serve for temporary maintenance multiple software versions. And this model exactly what we need! With some changes, of course...

NexT Branching Model

As described above, most liked branching model is 4. But need to make some changes in this model to be sure with NexT compatibility. Let's write in order:

  1. We have master branch, which at the same time is development and production branch (as was before).
  2. We turn off merge and rebase buttons to provide to all pulls be squashed. This will allow to get single commits from any features / bugfixes or optimizations.
  3. We have separated v6.x branch and copy only bugfixes and some optimizations there via cherry-pick single commits, which previously we provide.
  4. Once per month we will make tag releases from current master branch (it will be NexT v7) and from v6.x branch (it will be NexT v6).

next-branches-model

Only one question here: are we need to have separated v7.x branch to advantage at most cases stable releases?

Don't push «Update branch» button

To provide linear history, there is no need to update branch from master!

image

When we push this button, it's mean we will merge master branch into current feature or bugfix branch. As a result, history will not linear. So, no need to push this button.

Some more about Git

Merge ≠ Rebase. Why?

By default, GitHub merge pulls (Merge button) with -no-ff option. What's different with merge and merge -no-ff?
image
As we see, it's like rebase, but with a little different. What's different?
image
With rebase – rebased branch will be at the head from parent branch. It's like snake-game, but with separated sections.
With merge – we get same at the result, but both branches will be in the head.

Cherry-pick

In simple words: you can copy any commit from any branch and paste this commit to the head of any another branch. In this picture commit F (feature-1) from feature branch was copied into G in master branch with this feature.
image

@ivan-nginx ivan-nginx added the Meta label Jan 5, 2019
@ivan-nginx ivan-nginx pinned this issue Jan 5, 2019
@ivan-nginx ivan-nginx mentioned this issue Jan 5, 2019
72 tasks
@stale stale bot added the Stale label Feb 6, 2019
@stevenjoezhang stevenjoezhang unpinned this issue Mar 3, 2019
@stevenjoezhang stevenjoezhang pinned this issue Mar 3, 2019
@stale stale bot added the Stale label Mar 13, 2019
@theme-next theme-next deleted a comment from stale bot Mar 13, 2019
@theme-next theme-next deleted a comment from stale bot Mar 13, 2019
@stale stale bot added the Stale label May 1, 2019
@stale stale bot added the Stale label May 31, 2019
@jiangtj jiangtj removed the Stale label May 31, 2019
@1v9 1v9 unpinned this issue Jun 3, 2019
@1v9 1v9 pinned this issue Jun 3, 2019
@stevenjoezhang stevenjoezhang unpinned this issue Jun 28, 2019
@theme-next theme-next deleted a comment from stale bot Jun 28, 2019
@theme-next theme-next deleted a comment from stale bot Jun 28, 2019
@stevenjoezhang
Copy link
Contributor

@ivan-nginx How about putting this article on the website?

@stale
Copy link

stale bot commented Jul 28, 2019

This issue has been automatically marked as stale because lack of recent activity. It will be closed if no further activity occurs. Thank you for your contributions. You can also use our support channels to get help with the project.

@stale stale bot added the Stale label Jul 28, 2019
@ivan-nginx
Copy link
Member Author

@ivan-nginx How about putting this article on the website?

Of course need to do it. As a Page maybe. When I wrote that post – site was not worked, as I Remember.

@stevenjoezhang
Copy link
Contributor

Posted on website: theme-next/theme-next.org@1eada15

wens07 pushed a commit to wens07/hexo-theme-next that referenced this issue May 8, 2023
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants