176 | | |
177 | | == First post-svn conversion merge to {{{master}}} == |
178 | | |
179 | | When you are ready to merge the {{{develop}}} branch to {{{master}}} (or better yet a release branch that's branched off {{{master}}}), there's a bit of housekeeping to be done the first time after the conversion from svn so that future merges proceed smoothly. We're going to create a merge point between |
180 | | the develop and master branches so that Git knows the last point the two branches were in synch. Once we've done that Git will perform a merge by replaying the commits on develop on top of master, starting from the last known merge: in other words Git will perform the tricky stuff of figuring out what to merge for us. |
181 | | |
182 | | * Navigate to the history for your library on !GitHub, starting with branch master. For example the Config library [https://github.com/boostorg/config/commits/master can be seen here]. |
183 | | * Look down through the commit history and make a note of the last merge in svn land. In our example, it was on October 25th 2013. |
184 | | * Use the dropdown box to change the history to point to the develop branch. [https://github.com/boostorg/config/commits/develop Config library can be seen here]. |
185 | | * Find the last commit '''before the date noted above'''. Click on the commit message for that commit to go to the actual diff for that change, [https://github.com/boostorg/config/commit/67f6b934f161dc5da2039004986a14d9217afae4 in our example here]. The SHA1 for that commit is shown below and to the right of the commit message, in this case it's {{{67f6b934f161dc5da2039004986a14d9217afae4}}}. Copy that SHA1 to your clipboard. |
186 | | |
187 | | Create a merge to that specific commit. Begin by changing your library to the master branch: |
188 | | |
189 | | {{{ |
190 | | git checkout master |
191 | | }}} |
192 | | |
193 | | Now create a merge to the specific commit above; since we don't really want to actually change the master branch we'll use the {{{-s ours}}} option to avoid any conflicts: |
194 | | |
195 | | {{{ |
196 | | git merge --no-ff --no-commit -s ours 67f6b934f161dc5da2039004986a14d9217afae4 |
197 | | }}} |
198 | | |
199 | | '''Caution:''' Check any changed files carefully, particularly if you thought {{{master}}} was up-to-date. You can use {{{git status}}} and {{{git diff}}} to check for modifications. In the example case there are none. If all is as expected, make the commit and push to !GitHub: |
200 | | |
201 | | {{{ |
202 | | git commit -am "Create first merge point for Git" |
203 | | git push |
204 | | }}} |
205 | | |
206 | | Then navigate to your libraries history again, and check that the merge shows up, [https://github.com/boostorg/config/commits/master our config example is here]. |
207 | | You're now ready for "routine" merges to proceed as per Git Flow (or whatever other strategy you wish to use). |