summaryrefslogtreecommitdiffstats
path: root/chromium/docs/website/site/developers/how-tos/get-the-code/working-with-branches/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/docs/website/site/developers/how-tos/get-the-code/working-with-branches/index.md')
-rw-r--r--chromium/docs/website/site/developers/how-tos/get-the-code/working-with-branches/index.md220
1 files changed, 0 insertions, 220 deletions
diff --git a/chromium/docs/website/site/developers/how-tos/get-the-code/working-with-branches/index.md b/chromium/docs/website/site/developers/how-tos/get-the-code/working-with-branches/index.md
deleted file mode 100644
index 52f14a41843..00000000000
--- a/chromium/docs/website/site/developers/how-tos/get-the-code/working-with-branches/index.md
+++ /dev/null
@@ -1,220 +0,0 @@
----
-breadcrumbs:
-- - /developers
- - For Developers
-- - /developers/how-tos
- - How-Tos
-- - /developers/how-tos/get-the-code
- - 'Get the Code: Checkout, Build, & Run Chromium'
-page_name: working-with-branches
-title: Working with Branches
----
-
-*This applies to commits to Chromium repository branches. For changes to
-Chromium OS repositories, see the information
-[here](/chromium-os/how-tos-and-troubleshooting/working-on-a-branch).*
-
-### Basics
-
-Enumerate your local branches:
-
-cd src
-git branch
-
-Switching from one branch to another: Example: Switching from branch 'branch1'
-to branch 'branch2'.
-
-cd src
-git checkout branch2
-
-Note that `-` can be used to refer to the previous branch, which is useful when
-switching between two branches.
-
-```none
-git checkout some_branch
-git checkout - # back to previous branch!
-```
-
-### Suggested branching workflow
-
-We normally do our feature work in branches to keep changes isolated from each
-other. The recommended workflow is to make local branches off the server master,
-referred to as the origin/master branch. The `git-new-branch` command (in
-depot_tools) will do this:
-
- git new-branch branch_name
-
-Note that this is equivalent to the following:
-
- git checkout -b new_branch origin/master
-
-### Branch off a branch
-
-If you have dependent changes, a very productive workflow is to have a branch
-off a branch. Notably, this means that your patch sets (in Rietveld) will show
-the separate changes, and be easy to review, rather than showing the merged
-changes (including irrelevant changes), and means you can commit downstream CLs
-without having to rebase them after the upstream has landed. Do this as follows:
-
-```none
-git checkout master
-git checkout branch1
-# some edits, commit
-git checkout -b branch2
-git branch --set-upstream-to=branch1
-# some edits, commit
-```
-
-Now when you update the first branch, you can simply git pull on the second
-branch as normal to pull in your changes:
-
-```none
-git checkout branch1
-# some edits, commit
-git checkout branch2
-git pull
-```
-
-**Splitting up a CL**
-
-A common variant of "branch off a branch" is splitting up a large CL into
-pieces. Given a local branch `big`, you'd like to split it up into `branch1` and
-`branch2`.
-
-One way to do this is to split off `branch1`, have that reviewed and committed,
-update local repo (`gclient sync`), and then rebase `big` to `master`. This is
-ok, but adds latency, and you can get the same result locally, so the second
-part of the CL can be uploaded and reviewed even before the first part is
-committed.
-
-This can be done manually, particularly if the files don't overlap, by making a
-new branch `branch1`, manually copying the changed files in the first part, then
-branching `branch2` off of that, and manually copying the files in the second
-part.
-
-However, this can be done more cleanly via git. The main points are `git-add -i`
-([Interactive
-Staging](http://git-scm.com/book/en/Git-Tools-Interactive-Staging): to
-interactively choose files or hunks of a patch set) and `git-rebase` (to set the
-second part to be dependent on the first part, removing the common changes);
-[`git-cherry-pick`](http://git-scm.com/docs/git-cherry-pick) is a technicality:
-
-```none
-# first split off branch1
-git checkout origin/master
-git new-branch branch1
-git cherry-pick -n ..big  # apply and stage all ancestors of big that are not ancestors of HEAD, do not commit
-git add -i  # interactively choose which files or hunks to stage
-git commit  # commit staged changes
-git checkout -- . # discard unstaged changes
-# next set big to be a branch off of branch1
-git checkout big
-git branch --set-upstream-to=branch1
-git rebase branch1  # may need to resolve conflicts
-git branch -m branch2  # done!
-```
-
-Concretely, `git-cherry-pick -n` applies and stages all changes, but does not
-commit them. In `git-add -i`, you can unstage files via `3: **r**evert`, and
-then stage files (or hunks of files, or edit the diff manually) via `5:
-**p**atch`, with manually editing via by the `e - manually edit the current
-hunk` option when staging a hunk. While tedious, this is often easier than
-resolving conflicts during rebasing.
-
-### Deleting an obsolete branch
-
-You generally want to delete local branches after the changes have been
-committed to master. It is safest to check that your work has, in fact, been
-committed before deleting it.
-
-Remember that you can always apply a CL that has been posted via:
-
-git checkout -b myworkfrompatch
-git cl patch 12345 # Using CL issue number, not bug number, applies latest patch
-set
-git cl patch https://codereview.chromium.org/download/issue12345_1.diff # Use
-URL of raw patch for older patch sets
-
-...so as long as your CL has been posted, you can easily recover your work.
-Otherwise, you'll need to dig through the git repository, so be careful.
-
-Simply, if master (remote or local) is up-to-date and your branch has been
-rebased, git branch -d will delete the branch. If not, it will refuse; to force
-deletion, use git branch -D. So make sure master is up-to-date, rebase branch,
-and then try deleting (optionally check manually before).
-
-Beware that if your local branch has many revisions (instead of always amending
-a single revision), rebasing to master may fail, since it will try to apply the
-patches incrementally. You can avoid this by squashing your local revisions into
-a single revision (see [6.4 Git Tools - Rewriting
-History](http://git-scm.com/book/en/Git-Tools-Rewriting-History), or more simply
-[squashing commits with
-rebase](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)).
-This may be more trouble than it's worth, but it's the safest way.
-
-To check that the branch has been committed upstream:
-
-git checkout mywork
-git rebase origin/master
-git diff --stat origin/master # optional check
-
-If there are no differences, delete the branch:
-
-git checkout origin/master
-git branch -d mywork # will only work if has been merged
-
-**NOTE:** If you haven't waited long enough after your commit, it is possible
-that 'git fetch' did not get your commit and git will continue to believe that
-you have local changes, which will prevent "git branch -d" from succeeding. It's
-best to redo the steps later, (The repo is updated every 3 minutes) but you can
-also instruct git to force-delete your branch.
-
-Note that when you delete your branch, it will give you the SHA-1 hash for its
-tip:
-
-Deleted branch mywork (was 123abc0).
-
-You can then recover the branch via:
-
-git checkout -b mywork 123abc0
-
-If you forget the hash, you can find it via git reflog. (Reference: [Can I
-recover branch after the deletion in
-git?](http://stackoverflow.com/questions/3640764/can-i-recover-branch-after-the-deletion-in-git))
-
-### Prevent commits to master
-
-If you commit to master, updating will be messy. (This is a good reason to
-simply delete master entirely, as noted near the top of this document. You only
-need to read the remainder of this section if you don't do this.)
-
-You can prevent this by adding a pre-commit hook that checks if you're in master
-and stops you from doing this. Create a file named
-chromium/src/.git/hooks/pre-commit and add the below to it, then mark
-executable. (Blink developers: add in blink directory as well.)
-
-#!/bin/bash
-# Prevent commits against the 'master' branch
-if \[\[ \`git rev-parse --abbrev-ref HEAD\` == 'master' \]\]
-then
-echo 'You cannot commit to the master branch!'
-echo 'Stash your changes and apply them to another branch, using:'
-echo 'git stash'
-echo 'git checkout <branch>'
-echo 'git stash apply'
-exit 1
-fi
-
-If you've accidentally uploaded a change list from master, you can clear the
-association of an issue number with master via:
-
-git cl issue 0
-
-If you've accidentally committed to master, then, after copying your work to a
-new branch (e.g., make patch and then apply to new branch), you can clean up
-master by deleting your accidental commit as per [this
-answer](http://stackoverflow.com/a/6866485) to [How to undo the last Git
-commit?](http://stackoverflow.com/questions/927358/how-to-undo-the-last-git-commit)
--- see more details there.
-
-git reset --hard HEAD~1 \ No newline at end of file