OLD | NEW |
1 # Vanilla msysgit workflow | 1 # Vanilla msysgit workflow |
2 | 2 |
3 This describes how you can use msysgit on Windows to work on the Chromium git | 3 This describes how you can use msysgit on Windows to work on the Chromium git |
4 repository, without setting up Cygwin or hacking the `git cl`, `git try` and | 4 repository, without setting up Cygwin or hacking the `git cl`, `git try` and |
5 other scripts to work under a regular Windows shell. | 5 other scripts to work under a regular Windows shell. |
6 | 6 |
7 The basic setup is to set up a regular git checkout on a Linux (or Mac) box, and | 7 The basic setup is to set up a regular git checkout on a Linux (or Mac) box, and |
8 use this exclusively to create your branches and run tools such as `git cl`, and | 8 use this exclusively to create your branches and run tools such as `git cl`, and |
9 have your Windows box treat this git repository as its upstream. | 9 have your Windows box treat this git repository as its upstream. |
10 | 10 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 1. `git push` | 91 1. `git push` |
92 1. Later, on Linux: | 92 1. Later, on Linux: |
93 1. `make_new_lkgr_branch lk0428` | 93 1. `make_new_lkgr_branch lk0428` |
94 1. `git merge lk0428 lk0426-mytopic` | 94 1. `git merge lk0428 lk0426-mytopic` |
95 1. `git branch -m lk0426-mytopic lk0428-mytopic` (to rename) | 95 1. `git branch -m lk0426-mytopic lk0428-mytopic` (to rename) |
96 1. `git merge lk0428-mytopic lk0426-mytopic-nextstep` | 96 1. `git merge lk0428-mytopic lk0426-mytopic-nextstep` |
97 1. `git branch -m lk0428-mytopic-nextstep lk0428-mytopic-nextstep` | 97 1. `git branch -m lk0428-mytopic-nextstep lk0428-mytopic-nextstep` |
98 (to rename) | 98 (to rename) |
99 1. Later, when you want to commit one of the earlier changes in the pipeline; | 99 1. Later, when you want to commit one of the earlier changes in the pipeline; |
100 all on Linux. The reason you may want to create the separate tip-of-tree | 100 all on Linux. The reason you may want to create the separate tip-of-tree |
101 branch is in case the trybots show your change failing on tip-of-tree and | 101 branch is in case the try bots show your change failing on tip-of-tree and |
102 you need to do significant additional work, this avoids having to roll back | 102 you need to do significant additional work, this avoids having to roll back |
103 the tip-of-tree merge: | 103 the tip-of-tree merge: |
104 | 104 |
105 Janitorial work on Windows: | 105 Janitorial work on Windows: |
106 | 106 |
107 * When you rename branches on the Linux side, the Windows repo will not know | 107 * When you rename branches on the Linux side, the Windows repo will not know |
108 automatically; so if you already had a branch `lk0426-mytopic` open on | 108 automatically; so if you already had a branch `lk0426-mytopic` open on |
109 Windows and then `git fetch`, you will still have `lk0426-mytopic` even if | 109 Windows and then `git fetch`, you will still have `lk0426-mytopic` even if |
110 that was renamed on the Linux side to `lk0428-mytopic`. | 110 that was renamed on the Linux side to `lk0428-mytopic`. |
111 * Dealing with this is straight-forward; you just | 111 * Dealing with this is straight-forward; you just |
112 `git checkout lk0428-mytopic` to switch to the renamed (and likely updated) | 112 `git checkout lk0428-mytopic` to switch to the renamed (and likely updated) |
113 branch. Then `git branch -d lk0426-mytopic` to get rid of the tracking | 113 branch. Then `git branch -d lk0426-mytopic` to get rid of the tracking |
114 branch for the older name. Then, occasionally, `git remotes prune origin` | 114 branch for the older name. Then, occasionally, `git remotes prune origin` |
115 to prune remote tracking branches (you don't normally see these listed | 115 to prune remote tracking branches (you don't normally see these listed |
116 unless you do `git branch -a`). | 116 unless you do `git branch -a`). |
117 | 117 |
118 Gotchas: | 118 Gotchas: |
119 | 119 |
120 * You should normally create your branches on Linux only, so that the Windows | 120 * You should normally create your branches on Linux only, so that the Windows |
121 repo gets tracking branches for them. Any branches you create in the | 121 repo gets tracking branches for them. Any branches you create in the |
122 Windows repo would be local to that repository, and so will be non-trivial | 122 Windows repo would be local to that repository, and so will be non-trivial |
123 to push to Linux. | 123 to push to Linux. |
124 * `git push` from Windows will fail if your Linux repo is checked out to the | 124 * `git push` from Windows will fail if your Linux repo is checked out to the |
125 same branch. It is easy to switch back manually, but I also have a script I | 125 same branch. It is easy to switch back manually, but I also have a script I |
126 call `safepush` that switches the Linux-side branch for you before pushing; | 126 call `safepush` that switches the Linux-side branch for you before pushing; |
127 let me (joi@chromium.org) know if interested. | 127 let me (joi@chromium.org) know if interested. |
OLD | NEW |