| Name: gRPC, an RPC library and framework |
| Short Name: gRPC |
| URL: https://github.com/grpc/grpc |
| License: BSD-style, copyright Google |
| License File: LICENSE |
| Revision: 1bc2976a0f51e14d3525aecbf4b3450445ed2d1b |
| Security Critical: yes |
| |
| This directory contains Chrome's version of the C-version of the gRPC |
| library. |
| |
| Updating BUILD.gn: |
| |
| The BUILD.gn file is autogenerated from template/BUILD.gn.template file. To |
| regenerate it, run tools/buildgen/generate_projects.sh . Since it's not always |
| done for every upstream commit, this command is likely to regenerate also many |
| build files. Don't commit those changes -- they will only result in conflicts |
| once upstream updates them. |
| |
| Rolling DEPS: |
| |
| third_party/grpc is a Git repository separate from main Chromium repository. The |
| contents of third_party/grpc directory of your Chromium checkout are managed by |
| the gclient tool. It determines the version to checkout by looking at src/DEPS |
| file. |
| |
| To update third_party/grpc you need to first make sure a proper version exists |
| in the repository, and then edit the DEPS file to point to a proper commit. |
| |
| There are two possible ways in which one would like to update gRPC: merge |
| upstream changes, and make new local changes. |
| |
| Merging upstream changes: |
| |
| To merge upstream changes, one needs to rebase our local changes on top of |
| upstream changes. We cannot just rebase it on top of master, and force push to |
| the same branch, as this will result in the commit that is currently HEAD of |
| that branch (and as such pointed to by DEPS file) to get garbage collected. We |
| need to create a new branch with the rebase. |
| |
| Suppose origin/chromium-deps/2016-07-27 is the remote branch with our most |
| recent local changes (to confirm this, do `git branch -r`, and check whether top |
| commit of branch with newest date matches the commit id in src/DEPS). The |
| process is as follows: |
| |
| xyzzyz@xyzzyz:/tmp/grpc$ git checkout origin/chromium-deps/2016-07-27 |
| Note: checking out 'origin/chromium-deps/2016-07-27'. |
| |
| You are in 'detached HEAD' state. (...) |
| |
| HEAD is now at 3334ae7... Update gRPC's BUILD.gn template to fix the public_configs, and targets dependencies. |
| |
| xyzzyz@xyzzyz:/tmp/grpc$ git checkout -b 2016-08-17 |
| Switched to a new branch '2016-08-17 |
| |
| # Master branch is mirroring upstream changes, and doesn't include our local |
| # commits. |
| xyzzyz@xyzzyz:/tmp/grpc$ git rebase master |
| First, rewinding head to replay your work on top of it... |
| Applying: Add codereview.settings and README.chromium to gRPC |
| Applying: Add OWNERS, update README.chromium in Chromium's gRPC repo. |
| Applying: Add BUILD.gn to third_party/gRPC |
| Applying: Update BUILD.gn after recent gRPC roll. |
| Applying: Generate BUILD.gn from template |
| Applying: Update gRPC's BUILD.gn template to fix the public_configs, and targets dependencies. |
| |
| xyzzyz@xyzzyz:/tmp/grpc$ git push -u origin HEAD:refs/heads/chromium-deps/2016-08-17 |
| Counting objects: 25, done. |
| Delta compression using up to 48 threads. |
| Compressing objects: 100% (22/22), done. |
| Writing objects: 100% (25/25), 18.71 KiB | 0 bytes/s, done. |
| Total 25 (delta 10), reused 11 (delta 2) |
| remote: Resolving deltas: 100% (10/10) |
| remote: Processing changes: done |
| remote: (W) 4d49641: commit subject >65 characters; use shorter first paragraph |
| To https://chromium.googlesource.com/external/github.com/grpc/grpc |
| * [new branch] HEAD -> chromium-deps/2016-08-17 |
| Branch 2016-08-17 set up to track remote branch chromium-deps/2016-08-17 from origin. |
| |
| xyzzyz@xyzzyz:/tmp/grpc$ git log | head |
| commit 4d496419f70a70df0fb99753cdcfd168aa5b5053 |
| |
| |
| Now the most recent remote branch is origin/chromium-deps/2016-08-17. What |
| remains is to edit chromium/src/DEPS file to point to the commit |
| 4d496419f70a70df0fb99753cdcfd168aa5b5053, create a Chromium CL, send it to |
| review and land using Chromium CQ. |
| |
| If any conflicts arise during rebase, one should resolve them before pushing to |
| new remote branch. |
| |
| Creating new local changes: |
| |
| Since new local changes only add new commits on top of existing ones, we don't |
| have to create a new branch, as old commits are still reachable through the new |
| HEAD, and thus won't get garbage collected. |
| |
| Suppose origin/chromium-deps/2016-08-17 is the remote branch with our most |
| recent local changes. The process is the following: |
| |
| xyzzyz@xyzzyz:/tmp/grpc$ git checkout origin/chromium-deps/2016-08-17 |
| Note: checking out 'origin/chromium-deps/2016-08-17'. |
| |
| You are in 'detached HEAD' state. (...) |
| |
| HEAD is now at 4d49641... Update gRPC's BUILD.gn template to fix the public_configs, and targets dependencies. |
| |
| xyzzyz@xyzzyz:/tmp/grpc$ git checkout -b my_new_local_changes |
| Switched to a new branch 'my_new_local_changes' |
| |
| # This is very important step to ensure the Code Review tool knows on top of |
| # which remote branch to take a diff and land the change. |
| xyzzyz@xyzzyz:/tmp/grpc$ git branch --set-upstream-to origin/chromium-deps/2016-08-17 |
| Branch my_new_local_changes set up to track remote branch chromium-deps/2016-08-17 from origin. |
| |
| xyzzyz@xyzzyz:/tmp/grpc$ emacsclient README.chromium |
| ... make changes ... |
| |
| xyzzyz@xyzzyz:/tmp/grpc$ git add README.chromium && git commit -m "Update README.chromium" |
| |
| xyzzyz@xyzzyz:/tmp/grpc$ git cl upload |
| ... send to code review, and once LGTM is obtained... |
| |
| xyzzyz@xyzzyz:/tmp/grpc$ git cl land |
| |
| After landing the change, you can edit the chromium/src/DEPS file to point to |
| the commit id of this change, commit, create a Chromium CL and land it using the |
| usual process. |