Perfect. In the meantime I was antsy and patched the workflow from
various resources found on the net. Your message is an excellent
reference for us all. Thanks!
We're at our first git commit in Phobos!
https://github.com/D-Programming-Language/phobos/commit/81a4a4034aabe83d41cf2a0a202fedb428da66b6
(Let me know if I screwed up something...)
Andrei
On 1/23/11 9:32 PM, Jason Evans wrote:
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