On 01/23/2011 06:57 PM, Andrei Alexandrescu wrote:
Say I have a change to make to one file in phobos 2 to get
started. Could you please summarize what steps I need to take?
Let's suppose we want to update the README.txt in druntime, which
currently refers to dsource.org. First we need a git repository to work
in. Take a look at the following web page to get the appropriate ssh
location.
https://github.com/D-Programming-Language/druntime
Clone the repository.
$ git clone [email protected]:D-Programming-Language/druntime.git
$ cd druntime
Create a working branch, based on the master branch. (I won't get much
into branch management in this email.)
$ git checkout -b update-README
Switched to a new branch 'update-README'
Edit README.txt, then verify the diff.
$ git diff
diff --git a/README.txt b/README.txt
index d0ae645..9183765 100644
--- a/README.txt
+++ b/README.txt
@@ -1,5 +1,5 @@
The source code repository for Druntime is:
-http://dsource.org/projects/druntime
+https://github.com/D-Programming-Language/druntime
Druntime is the minimum library required to support the D programming
language. It includes the system code required to support the garbage
Add README.txt to the staging index.
$ git status
# On branch update-README
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working
directory)
#
# modified: README.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git add README.txt
$ git diff
$ git status
# On branch update-README
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: README.txt
#
Commit to working branch.
$ git commit -m "Update URL."
[update-README 1fbddd4] Update URL.
1 files changed, 1 insertions(+), 1 deletions(-)
Check out master branch and merge. (If someone else had committed to
master in the meanwhile, we would want to do a dance to "rebase" our
working branch, but let's ignore that for now.)
$ git checkout master
Switched to branch 'master'
$ git merge update-README
Updating 559df80..1fbddd4
Fast-forward
README.txt | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
Now let's push the change to the master repository, and finally delete
our working branch.
$ git push origin master
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 330 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
To [email protected]:D-Programming-Language/druntime.git
559df80..1fbddd4 master -> master
$ git branch -d update-README
Deleted branch update-README (was 1fbddd4).
The above example has several steps in it that can be skipped for such a
simple change, but for more involved changes, this work flow is the
foundation. git is a complex tool, but the underlying concepts are
coherent, consistent, and straightforward. Learn those concepts well
and you will be largely able to infer what git is capable of.
Thanks,
Jason
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos