which branch is more stable?

199 views
Skip to first unread message

joker

unread,
Jun 12, 2014, 7:15:10 AM6/12/14
to chromi...@chromium.org
I have tried master, lkgr, and chrome-current-stable release branch, the lkgr branch unit_tests result was best(with 39 failed).
Does it mean lkgr is more stable for ship?

PhistucK

unread,
Jun 12, 2014, 12:31:30 PM6/12/14
to 李少杰, Chromium-dev
The current stable branch is always the most stable to ship (it is shipped to millions of people, so it must be the most stable branch).
The branch changes every (roughly) six weeks, though, so you should check http://omahaproxy.appspot.com/ in order to get the number of the current stable branch.

I am not sure about the git branch, but the SVN branch is named after the third figure in the version (so 35.0.1916.153 is the 1916 branch).
You can find the SVN branch here -


PhistucK


On Thu, Jun 12, 2014 at 2:15 PM, joker <sslik...@gmail.com> wrote:
I have tried master, lkgr, and chrome-current-stable release branch, the lkgr branch unit_tests result was best(with 39 failed).
Does it mean lkgr is more stable for ship?

--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-dev...@chromium.org.

joker

unread,
Jun 12, 2014, 10:38:21 PM6/12/14
to chromi...@chromium.org, sslik...@gmail.com
Thanks!
I am a little confused why the trunk uses git but release branch uses svn? Which scm are you using in chromium team on earth?

在 2014年6月13日星期五UTC+8上午12时31分30秒,PhistucK写道:

Aaron Gable

unread,
Jun 12, 2014, 10:44:17 PM6/12/14
to 李少杰, Chromium-dev

The chromium project is based in SVN. However, most developers prefer to use Git locally, so that is the default checkout. We have systems that replicate our SVN repo (including both trunk and the release branches) to Git for developers to use. We use many systems including git-svn to make communication between the repositories easier. There is currently a project underway to make Git the "source of truth" and get rid of SVN entirely, and then this confusion will end :)

Aaron

Aaron Gable

unread,
Jun 12, 2014, 10:45:50 PM6/12/14
to 李少杰, Chromium-dev

Clarification since I realized my prior message didn't go through:

In chromium/src.git:
master is tip-of-tree. Not stable at all.

lkgr is "last known good revision". It is the most recent revision to pass a certain set of benchmark tests from the main continuous integration system.

refs/branch-heads/* contains all the other release branches. The current stable release branch can be found by going to omahaproxy, getting the current branch number (as said by PhistucK above), and checking out refs/branch-heads/######.

Aaron

joker

unread,
Jun 13, 2014, 12:55:05 AM6/13/14
to chromi...@chromium.org, sslik...@gmail.com
How can i update from previous stable version to current stable version using gclient?
I have read the "Rolling DEPS" section of Get the Code page, but still can't get the point.

在 2014年6月13日星期五UTC+8上午10时45分50秒,agable写道:

Arunprasad Rajkumar

unread,
Jun 13, 2014, 1:25:49 AM6/13/14
to aga...@chromium.org, 李少杰, Chromium-dev
Below link [1] provides more information about how to work with release branches using git.

Primiano Tucci

unread,
Jun 13, 2014, 6:50:37 AM6/13/14
to ararun...@gmail.com, aga...@chromium.org, 李少杰, Chromium-dev
You shouldn't do any roll ^__^. Also, what you really want is "Syncing a compilable release branch".
You probably don't wont to "work" on a release branch (also because that is technical not possible from the outside).
You just want to checkout the configuration that the official builders built at some point (i.e. 36.0.1985.36).

Recently mmoss@ et al. (Apologies if I attribute to the wrong people) did some great work that made it possible to do everything in git.
See this thread for the details, all boils down to:
The quick version for doing anything in git (yay) is:
$ git  config --local --add remote.origin.fetch +refs/tags/*:refs/remotes/tags/*
$ git remote update

You can see now all the release builds by doing
$ git branch -a 

Checkout the one you want:
$ git checkout ref/tags/36.0.1985.36

Sync the deps
$ gclient sync --with_branch_heads 

Profit! (gyp and build as usual)



On Fri, Jun 13, 2014 at 6:23 AM, Arunprasad Rajkumar <ararun...@gmail.com> wrote:
Below link [1] provides more information about how to work with release branches using git.

--

Arunprasad Rajkumar

unread,
Jun 16, 2014, 5:46:37 AM6/16/14
to Primiano Tucci, aga...@chromium.org, 李少杰, Chromium-dev
Thanks @Primiano.

I tried the steps you suggested, But got below error,

arunprasadr@builder:~/works/chromium/src$ git checkout ref/tags/35.0.1916.153
error: pathspec 'ref/tags/35.0.1916.153' did not match any file(s) known to git.

It seems the tag checkout command was wrong, I tried using remotes/tags/35.0.1916.153,

arunprasadr@builder:~/works/chromium/src$ git checkout tags/35.0.1916.153
warning: refname 'tags/35.0.1916.153' is ambiguous.
warning: unable to rmdir breakpad/src: Directory not empty
warning: unable to rmdir chrome/browser/resources/pdf/html_office: Directory not empty
warning: unable to rmdir chrome/test/data/extensions/api_test/permissions/nacl_enabled/bin: Directory not empty
warning: unable to rmdir chrome/test/data/perf/canvas_bench: Directory not empty
warning: unable to rmdir chrome/test/data/perf/frame_rate/content: Directory not empty
warning: unable to rmdir chrome/test/data/perf/third_party/octane: Directory not empty
warning: unable to rmdir chrome/tools/test/reference_build/chrome_linux: Directory not empty
warning: unable to rmdir media/cdm/ppapi/api: Directory not empty
warning: unable to rmdir native_client: Directory not empty
warning: unable to rmdir sdch/open-vcdiff: Directory not empty
warning: unable to rmdir testing/gmock: Directory not empty
warning: unable to rmdir testing/gtest: Directory not empty
....
....
....
Note: checking out 'tags/35.0.1916.153'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 0c1e7ae... Publish DEPS for Chromium 35.0.1916.153

I tried to create branch after checking out the tag,

arunprasadr@builder:~/works/chromium/src$ git checkout -b 35.0.1916.153
Switched to a new branch '35.0.1916.153'
arunprasadr@builder:~/works/chromium/src$ git status
# On branch 35.0.1916.153
arunprasadr@builder:~/works/chromium/src$ gclient sync
....
Hook '/usr/bin/python src/build/gyp_chromium' took 31.91 secs

So, my question is the Chromium release branches are not real git branches? Is it just tags?



<BR/>
<Arun/>

Primiano Tucci

unread,
Jun 16, 2014, 8:08:09 AM6/16/14
to Arunprasad Rajkumar, aga...@chromium.org, 李少杰, Chromium-dev
arunprasadr@builder:~/works/chromium/src$ git checkout ref/tags/35.0.1916.153
error: pathspec 'ref/tags/35.0.1916.153' did not match any file(s) known to git.

It seems the tag checkout command was wrong, I tried using remotes/tags/35.0.1916.153,

Yeah sorry. remotes/tags/35.0.1916, not ref.
 
arunprasadr@builder:~/works/chromium/src$ git checkout tags/35.0.1916.153
warning: refname 'tags/35.0.1916.153' is ambiguous.
warning: unable to rmdir breakpad/src: Directory not empty
warning: unable to rmdir chrome/browser/resources/pdf/html_office: Directory not empty
warning: unable to rmdir chrome/test/data/extensions/api_test/permissions/nacl_enabled/bin: Directory not empty
warning: unable to rmdir chrome/test/data/perf/canvas_bench: Directory not empty
warning: unable to rmdir chrome/test/data/perf/frame_rate/content: Directory not empty
warning: unable to rmdir chrome/test/data/perf/third_party/octane: Directory not empty
warning: unable to rmdir chrome/tools/test/reference_build/chrome_linux: Directory not empty
warning: unable to rmdir media/cdm/ppapi/api: Directory not empty
warning: unable to rmdir native_client: Directory not empty
warning: unable to rmdir sdch/open-vcdiff: Directory not empty
warning: unable to rmdir testing/gmock: Directory not empty
warning: unable to rmdir testing/gtest: Directory not empty

It looks like you're using a pretty old checkout with the submodules workflow.
I can guarantee that this doesn't happen if you are in a consistent situation.
There was a lot of discussion in this forum about how to get rid of the submodules status.
The quick answer is that if you don't really care too much and have time / bandwidth, just fetch chromium --nosvn=True again (otherwise search for "submodules" in chromium-dev).

I tried to create branch after checking out the tag,

You don't need to create any branch. You can build / gclient sync perfectly in detached head state.
Probalby, you're not going to commit / send for review stuff for M35 :-)
 
arunprasadr@builder:~/works/chromium/src$ gclient sync
....
Hook '/usr/bin/python src/build/gyp_chromium' took 31.91 secs
Right, at this point you should have a buildable M35 snapshot, modulo your submodules above which might end up causing your repo to be in an inconsistent state (fix them).

 
So, my question is the Chromium release branches are not real git branches? Is it just tags?

That's a bit more complicated.
Release branches are in SVN as historically SVN was our source of truth (things are changing in these days). The gclient specs for checking out / building an actual release branch lives in some mysterious place which probably nobody except very few people cares about (and IIRC is not publicly accessible).
Nobody works on a release branch (directly). People just request merges and use drover to cherry-pick stuff into that.
What, instead, is more accessible are snapshots of the release branches as they're built by the release bots (which generate the progressive number in the last part of the build string, e.g. 153).
The builder bots generate, at each cycle, a special DEPS file, with the subprojects pinned to the revision at the time of building. These DEPS file (which refer to SVN branches) are checked in here

Then, there is another piece of magic, which turns these DEPS files into .DEPS.git files, and creates a corresponding git tag.
The git tag is based on the git snapshot of the branch (e.g. 1916), and has a commit on top which adds the proper DEPS and .DEPS.git.

.DEPS.git refers to the git mirrors of the release branches (e.g. https://chromium.googlesource.com/chromium/blink.git refs/branch-heads/chromium/1916), that's why you need to pass --with_branch_heads to gclient (otherwise you'll end up referring GIT objects which are not found in your local repo which just tracks origin/master)

Arunprasad Rajkumar

unread,
Jun 16, 2014, 8:45:59 AM6/16/14
to Primiano Tucci, aga...@chromium.org, 李少杰, Chromium-dev
Thanks @Primiano for your in-depth explanation :)

On 16 June 2014 17:37, Primiano Tucci <prim...@chromium.org> wrote:
arunprasadr@builder:~/works/chromium/src$ git checkout ref/tags/35.0.1916.153
error: pathspec 'ref/tags/35.0.1916.153' did not match any file(s) known to git.

It seems the tag checkout command was wrong, I tried using remotes/tags/35.0.1916.153,

Yeah sorry. remotes/tags/35.0.1916, not ref.
 
arunprasadr@builder:~/works/chromium/src$ git checkout tags/35.0.1916.153
warning: refname 'tags/35.0.1916.153' is ambiguous.
warning: unable to rmdir breakpad/src: Directory not empty
warning: unable to rmdir chrome/browser/resources/pdf/html_office: Directory not empty
warning: unable to rmdir chrome/test/data/extensions/api_test/permissions/nacl_enabled/bin: Directory not empty
warning: unable to rmdir chrome/test/data/perf/canvas_bench: Directory not empty
warning: unable to rmdir chrome/test/data/perf/frame_rate/content: Directory not empty
warning: unable to rmdir chrome/test/data/perf/third_party/octane: Directory not empty
warning: unable to rmdir chrome/tools/test/reference_build/chrome_linux: Directory not empty
warning: unable to rmdir media/cdm/ppapi/api: Directory not empty
warning: unable to rmdir native_client: Directory not empty
warning: unable to rmdir sdch/open-vcdiff: Directory not empty
warning: unable to rmdir testing/gmock: Directory not empty
warning: unable to rmdir testing/gtest: Directory not empty

It looks like you're using a pretty old checkout with the submodules workflow.
I can guarantee that this doesn't happen if you are in a consistent situation.
There was a lot of discussion in this forum about how to get rid of the submodules status.
The quick answer is that if you don't really care too much and have time / bandwidth, just fetch chromium --nosvn=True again (otherwise search for "submodules" in chromium-dev).

I will try to fetch again :)
 

I tried to create branch after checking out the tag,

You don't need to create any branch. You can build / gclient sync perfectly in detached head state.
Probalby, you're not going to commit / send for review stuff for M35 :-)

I have some local changes (not worth to upstream) applied on top of stable branches. At least for my case creating a branch would be easier to work.

 
arunprasadr@builder:~/works/chromium/src$ gclient sync
....
Hook '/usr/bin/python src/build/gyp_chromium' took 31.91 secs
Right, at this point you should have a buildable M35 snapshot, modulo your submodules above which might end up causing your repo to be in an inconsistent state (fix them).

 
So, my question is the Chromium release branches are not real git branches? Is it just tags?

That's a bit more complicated.
Release branches are in SVN as historically SVN was our source of truth (things are changing in these days). The gclient specs for checking out / building an actual release branch lives in some mysterious place which probably nobody except very few people cares about (and IIRC is not publicly accessible).
Nobody works on a release branch (directly). People just request merges and use drover to cherry-pick stuff into that.
What, instead, is more accessible are snapshots of the release branches as they're built by the release bots (which generate the progressive number in the last part of the build string, e.g. 153).
The builder bots generate, at each cycle, a special DEPS file, with the subprojects pinned to the revision at the time of building. These DEPS file (which refer to SVN branches) are checked in here

Then, there is another piece of magic, which turns these DEPS files into .DEPS.git files, and creates a corresponding git tag.
The git tag is based on the git snapshot of the branch (e.g. 1916), and has a commit on top which adds the proper DEPS and .DEPS.git.

.DEPS.git refers to the git mirrors of the release branches (e.g. https://chromium.googlesource.com/chromium/blink.git refs/branch-heads/chromium/1916), that's why you need to pass --with_branch_heads to gclient (otherwise you'll end up referring GIT objects which are not found in your local repo which just tracks origin/master)
 


 
Thanks for this. I hope soon chromium will switch into a full git workflow which avoids confusions (at least to me :)).
<BR/>,
<Arun/>

Alex Stemaly

unread,
Jun 16, 2014, 11:34:20 AM6/16/14
to ararun...@gmail.com, Primiano Tucci, aga...@chromium.org, 李少杰, Chromium-dev
i believe the command you are looking for may be gif
 


To unsubscribe from this group and stop receiving emails from it, send an email to chromium-dev...@chromium.org.

Primiano Tucci

unread,
Jun 16, 2014, 12:54:00 PM6/16/14
to Alex Stemaly, Arunprasad Rajkumar, aga...@chromium.org, 李少杰, Chromium-dev
On Mon, Jun 16, 2014 at 4:33 PM, Alex Stemaly <axl...@gmail.com> wrote:
i believe the command you are looking for may be gif

?? 

joker

unread,
Jun 24, 2014, 4:47:02 AM6/24/14
to chromi...@chromium.org, ararun...@gmail.com, aga...@chromium.org, sslik...@gmail.com
I tried those steps too, and got errors:
git remote update
Fetching origin
remote: Counting objects: 1996057, done
remote: Finding sources: 100% (117376/117376)
remote: Total 117376 (delta 79463), reused 117083 (delta 79463)
Receiving objects: 100% (117376/117376), 130.04 MiB | 775 KiB/s, done.
Resolving deltas: 100% (79463/79463), completed with 9213 local objects.
error: no such remote ref refs/tags/35.0.1916.156
error: no such remote ref refs/tags/35.0.1916.157
error: no such remote ref refs/tags/36.0.1985.62
error: no such remote ref refs/tags/36.0.1985.63
error: no such remote ref refs/tags/36.0.1985.64
error: no such remote ref refs/tags/36.0.1985.65
error: no such remote ref refs/tags/36.0.1985.66
error: no such remote ref refs/tags/36.0.1985.67
error: no such remote ref refs/tags/36.0.1985.68
error: no such remote ref refs/tags/36.0.1985.69
error: no such remote ref refs/tags/36.0.1985.70
error: no such remote ref refs/tags/36.0.1985.72
error: no such remote ref refs/tags/36.0.1985.73
error: no such remote ref refs/tags/36.0.1985.74
error: no such remote ref refs/tags/36.0.1985.75
error: no such remote ref refs/tags/36.0.1985.76
error: no such remote ref refs/tags/36.0.1985.77
error: no such remote ref refs/tags/36.0.1985.78
error: no such remote ref refs/tags/36.0.1985.79
error: no such remote ref refs/tags/36.0.1985.80
error: no such remote ref refs/tags/36.0.1985.81
error: no such remote ref refs/tags/36.0.1985.82
error: no such remote ref refs/tags/36.0.1985.83
error: no such remote ref refs/tags/36.0.1985.84
error: no such remote ref refs/tags/36.0.1985.85
error: no such remote ref refs/tags/36.0.1985.86
error: no such remote ref refs/tags/36.0.1985.87
error: no such remote ref refs/tags/36.0.1985.88
error: no such remote ref refs/tags/36.0.1985.89
error: no such remote ref refs/tags/36.0.1985.90
error: no such remote ref refs/tags/36.0.1985.91
error: no such remote ref refs/tags/36.0.1985.92
error: no such remote ref refs/tags/36.0.1985.93
error: no such remote ref refs/tags/36.0.1985.94
error: no such remote ref refs/tags/36.0.1985.95
error: no such remote ref refs/tags/37.0.2040.0
error: no such remote ref refs/tags/37.0.2040.1
error: no such remote ref refs/tags/37.0.2041.0
error: no such remote ref refs/tags/37.0.2041.1
error: no such remote ref refs/tags/37.0.2041.2
error: no such remote ref refs/tags/37.0.2041.3
error: no such remote ref refs/tags/37.0.2041.4
error: no such remote ref refs/tags/37.0.2041.5
error: no such remote ref refs/tags/37.0.2041.6
error: no such remote ref refs/tags/37.0.2042.0
error: no such remote ref refs/tags/37.0.2042.1
error: no such remote ref refs/tags/37.0.2042.2
error: no such remote ref refs/tags/37.0.2042.3
error: no such remote ref refs/tags/37.0.2042.4
error: no such remote ref refs/tags/37.0.2043.0
error: no such remote ref refs/tags/37.0.2043.1
error: no such remote ref refs/tags/37.0.2044.0
error: no such remote ref refs/tags/37.0.2044.1
error: no such remote ref refs/tags/37.0.2044.2
error: no such remote ref refs/tags/37.0.2044.3
error: no such remote ref refs/tags/37.0.2044.4
error: no such remote ref refs/tags/37.0.2044.5
error: no such remote ref refs/tags/37.0.2045.0
error: no such remote ref refs/tags/37.0.2045.1
error: no such remote ref refs/tags/37.0.2045.2
error: no such remote ref refs/tags/37.0.2045.3
error: no such remote ref refs/tags/37.0.2045.4
error: no such remote ref refs/tags/37.0.2046.0
error: no such remote ref refs/tags/37.0.2046.1
error: no such remote ref refs/tags/37.0.2046.2
error: no such remote ref refs/tags/37.0.2046.3
error: no such remote ref refs/tags/37.0.2047.0
error: no such remote ref refs/tags/37.0.2047.1
error: no such remote ref refs/tags/37.0.2047.2
error: no such remote ref refs/tags/37.0.2048.0
error: no such remote ref refs/tags/37.0.2048.1
error: no such remote ref refs/tags/37.0.2048.2
error: no such remote ref refs/tags/37.0.2049.0
error: no such remote ref refs/tags/37.0.2049.1
error: no such remote ref refs/tags/37.0.2049.2
error: no such remote ref refs/tags/37.0.2050.0
error: no such remote ref refs/tags/37.0.2050.1
error: no such remote ref refs/tags/37.0.2050.2
error: no such remote ref refs/tags/37.0.2050.3
error: no such remote ref refs/tags/37.0.2051.1
error: no such remote ref refs/tags/37.0.2051.2
error: no such remote ref refs/tags/37.0.2051.3
error: no such remote ref refs/tags/37.0.2052.0
error: no such remote ref refs/tags/37.0.2052.1
error: no such remote ref refs/tags/37.0.2053.0
error: no such remote ref refs/tags/37.0.2053.1
error: no such remote ref refs/tags/37.0.2053.2
error: no such remote ref refs/tags/37.0.2053.3
error: no such remote ref refs/tags/37.0.2054.0
error: no such remote ref refs/tags/37.0.2054.1
error: no such remote ref refs/tags/37.0.2054.2
error: no such remote ref refs/tags/37.0.2054.3
error: no such remote ref refs/tags/37.0.2055.0
error: no such remote ref refs/tags/37.0.2055.1
error: no such remote ref refs/tags/37.0.2055.2
error: no such remote ref refs/tags/37.0.2056.0
error: no such remote ref refs/tags/37.0.2056.1
error: no such remote ref refs/tags/37.0.2056.2
error: no such remote ref refs/tags/37.0.2057.0
error: no such remote ref refs/tags/37.0.2057.1
error: no such remote ref refs/tags/37.0.2057.2
error: no such remote ref refs/tags/37.0.2057.3
error: no such remote ref refs/tags/37.0.2057.4
error: no such remote ref refs/tags/37.0.2058.0
error: no such remote ref refs/tags/37.0.2058.1
error: no such remote ref refs/tags/37.0.2058.2
error: no such remote ref refs/tags/37.0.2059.0
error: no such remote ref refs/tags/37.0.2059.1
error: no such remote ref refs/tags/37.0.2059.2
error: no such remote ref refs/tags/37.0.2059.3
error: no such remote ref refs/tags/37.0.2059.4
error: no such remote ref refs/tags/37.0.2060.0
error: no such remote ref refs/tags/37.0.2060.1
error: no such remote ref refs/tags/37.0.2060.2
error: no such remote ref refs/tags/37.0.2060.3
error: no such remote ref refs/tags/37.0.2060.4
error: no such remote ref refs/tags/37.0.2061.0
error: no such remote ref refs/tags/37.0.2061.1
error: no such remote ref refs/tags/37.0.2062.0
error: no such remote ref refs/tags/37.0.2062.1
error: no such remote ref refs/tags/38.0.2063.0
error: no such remote ref refs/tags/38.0.2063.1
error: no such remote ref refs/tags/38.0.2064.0
error: no such remote ref refs/tags/38.0.2064.1
error: no such remote ref refs/tags/38.0.2065.0
error: no such remote ref refs/tags/38.0.2065.1
error: no such remote ref refs/tags/38.0.2065.2
error: no such remote ref refs/tags/38.0.2066.0
error: no such remote ref refs/tags/38.0.2066.1
error: no such remote ref refs/tags/38.0.2066.2
error: no such remote ref refs/tags/38.0.2066.3
error: no such remote ref refs/tags/38.0.2066.4
error: Could not fetch origin


在 2014年6月13日星期五UTC+8下午6时50分37秒,Primiano Tucci写道:

Primiano Tucci

unread,
Jun 24, 2014, 4:52:32 AM6/24/14
to 李少杰, Chromium-dev, Arunprasad Rajkumar, aga...@chromium.org
How does the [remote "origin"] section of your src/.git/config look like?
Here's mine and definitely works.

[remote "origin"]
  fetch = +refs/heads/*:refs/remotes/origin/*
  fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
  fetch = +refs/tags/*:refs/remotes/tags/*

joker

unread,
Jun 24, 2014, 5:00:16 AM6/24/14
to chromi...@chromium.org, sslik...@gmail.com, ararun...@gmail.com, aga...@chromium.org
mine:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
fetch = +refs/tags/*:refs/remotes/tags/*


在 2014年6月24日星期二UTC+8下午4时52分32秒,Primiano Tucci写道:
Reply all
Reply to author
Forward
0 new messages