[phobos] [dmd-internals] svn-->git migration
Andrei Alexandrescu
andrei at erdani.com
Sun Jan 23 20:10:14 PST 2011
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 git at github.com: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 git at github.com: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
More information about the phobos
mailing list