[rules-dev] Getting started with git on drools for svn guys

Geoffrey De Smet ge0ffrey.spam at gmail.com
Mon Dec 20 03:03:57 EST 2010


"git commit" != "svn commit"
"git commit; git push;" == "svn commit"

A /git commit/ doesn't push your changes to the remote repository.
Use /git push/ to one or more commits to the remote repository.

Op 20-12-10 08:03, Wolfgang Laun schreef:
> Hi!
>
> Not by hacking ;-)
>
> I proceeded according to your howto and obtrained a copy of the 
> repository (git clone).
> I had saved a changed file, copied it into the right place and did
>    git add <pathname>
>    git commit
> <comment>
> which appeared to work; for confirmation I ran
>    git log
> and saw what there is to see.
>
> I sent you my data from git registration, so perhaps you did give me 
> permission?
>
> Wolfgang
>
>
> On 19 December 2010 21:49, Geoffrey De Smet <ge0ffrey.spam at gmail.com 
> <mailto:ge0ffrey.spam at gmail.com>> wrote:
>
>     You're not given authorization yet, how's that possible?
>     Are you on irc? irc.codehaus.org <http://irc.codehaus.org> #drools
>
>     Op 19-12-10 21:46, Wolfgang Laun schreef:
>>     I think I did the first commit on the git repository and also the
>>     last one on the subversion one :-)
>>     -W
>>
>>
>>     On 19 December 2010 21:30, Edson Tirelli <ed.tirelli at gmail.com
>>     <mailto:ed.tirelli at gmail.com>> wrote:
>>
>>           All,
>>
>>           Some comments on the document bellow as I was discussing
>>         with Geoffrey:
>>
>>         * "git checkout" is actually the same as "svn switch", i.e.,
>>         switching
>>         between branches in the same working directory... although
>>         git is so
>>         fast doing this you can't even compare with svn switch.
>>
>>         * git has the concept of staging area. Because of that, when
>>         you do a
>>         commit, either you do "git commit -a" to commit everything,
>>         or you
>>         list the files you want to commit: "git commit
>>         <files_to_commit>". The
>>         git pro book explains this in detail and how to take
>>         advantage of the
>>         staging area with "git add".
>>
>>         * be careful when using branches and rebase. The book also
>>         lists the
>>         golden rule for rebase:
>>
>>         "Do not rebase commits that you have pushed to a public
>>         repository."
>>
>>         * do not push personal branches to the reference repository.
>>         If you
>>         need to share a personal/development branch with someone,
>>         clone the
>>         repo into your github account and use that clone to make your
>>         personal/development branches public.
>>
>>           I am also a beginner on git, but so far it has been working
>>         so much
>>         better for me and bringing so many features that I never imagined
>>         possible that I am very happy with the move. I strongly
>>         recommend, as
>>         Geoffrey mentioned before, that you read the "Pro Git"
>>         book... it is
>>         really good.
>>
>>           Edson
>>
>>         2010/12/19 Geoffrey De Smet <ge0ffrey.spam at gmail.com
>>         <mailto:ge0ffrey.spam at gmail.com>>:
>>         > Purpose
>>         >
>>         > This document shows you how to use Git, just as you were
>>         using SVN in the
>>         > past. It is to get you guys up and running with git as soon
>>         as possible by
>>         > relying on your SVN knowledge and it is focuses on what you
>>         want to do in
>>         > drools.
>>         > This document does not really teach you Git. Git is not
>>         just SVN++, it is
>>         > much more and you should take some time to learn that too.
>>         >
>>         > Terminology
>>         >
>>         > SVN trunk is renamed to Git master. A branch is still a
>>         branch. A tag is
>>         > still a tag.
>>         > Translation note: trunk == master
>>         >
>>         > The SVN central repository is now the reference repository
>>         on github, see
>>         > https://github.com:droolsjbpm/droolsjbpm.
>>         >
>>         > Part 1: Need to know
>>         >
>>         > Preparation
>>         >
>>         > If:
>>         >
>>         > you’ve done the preparation in the dev list mail
>>         >
>>         > and the correction too, skip to section Getting the source
>>         code locally.
>>         > haven’t done the correction yet, do this first (and the
>>         skip to that
>>         > section):
>>         >
>>         > Step 4 stated:
>>         >
>>         > $ git config --global user.name <http://user.name>
>>         myUsername  // WRONG
>>         >
>>         > Correct that by running:
>>         >
>>         > $ git config --global user.name <http://user.name> "My Name"
>>         > $ git config --global -l
>>         >
>>         > you haven’t done the preparation yet, do it now, as stated
>>         below.
>>         >
>>         > Full preparation:
>>         >
>>         > 1) Install git for your OS
>>         >
>>         > 1a) Linux: Install the package git (and optionally gitk)
>>         >
>>         > $ sudo apt-get install git
>>         > $ sudo apt-get install gitk
>>         >
>>         > 1b) Windows: Use the icon on the right on http://git-scm.com
>>         > 1c) Mac OSX: Use the icon on the right on http://git-scm.com
>>         >
>>         > Optionally install gitx from http://gitx.frim.nl/
>>         >
>>         > 2) Install git in your IDE
>>         >
>>         > 2b) Eclipse: Install the EGit plugin.
>>         >
>>         > Menu Help, menu item Install new software.
>>         > Work with update site Helios, open Tree item Collaboration,
>>         tree item
>>         > Eclipse EGit.
>>         >
>>         > 2c) IntelliJ: Enable the git plugin (if not enabled):
>>         >
>>         > Menu file, menu item Other Settings, menu item Configure
>>         plugins.
>>         >
>>         > 3) Get a Github account: https://github.com/signup/free
>>         > 4) Configure git correctly (Github also tells you this):
>>         >
>>         > $ git --version
>>         > git version 1.7.1
>>         > $ git config --global user.name <http://user.name> "My Full
>>         Name"
>>         > $ git config --global user.email myAccount at gmail.com
>>         <mailto:myAccount at gmail.com>
>>         > $ git config --global -l
>>         > user.name <http://user.name>=Geoffrey De Smet
>>         > user.email=ge0ffrey.spam at ...
>>         >
>>         > 6) Push your public key to github:
>>         >
>>         > Follow the instructions on
>>         http://github.com/guides/providing-your-ssh-key
>>         >
>>         > Getting the source code locally
>>         >
>>         > First move your old SVN working directory aside, so you’re
>>         not confused that
>>         > you shouldn’t work there any more:
>>         > $ cd projects
>>         > $ mv drools drools-oldsvn
>>         >
>>         > Now you’re ready to get the sources with git. In SVN this
>>         is a svn checkout,
>>         > but in Git this is called a git clone. Prefer the faster,
>>         stabler git
>>         > protocol over the slower https protocol:
>>         > $ git clone git at github.com:droolsjbpm/droolsjbpm.git
>>         <mailto:git at github.com:droolsjbpm/droolsjbpm.git> droolsjbpm
>>         > Next go into that directory
>>         > $ cd droolsjbpm
>>         >
>>         > So what’s the command git checkout for? To switch to
>>         another branch, but in
>>         > the same working directory. In SVN you also use svn
>>         checkout for that.
>>         > Translation note: svn checkout == git clone (new
>>         repository) OR git checkout
>>         > (change branch)
>>         >
>>         > Follow the instructions in the README.txt to set up your
>>         Eclipse or IntelliJ
>>         > again.
>>         >
>>         > Getting changes from others
>>         >
>>         > So Mark and Edson changed something in drools-core in the
>>         reference
>>         > repository. How do I get those changes? In SVN this is svn
>>         update, but in
>>         > Git this is a git pull.
>>         > $ git pull
>>         > Translation note: svn update == git pull
>>         >
>>         > Making changes
>>         >
>>         > While making your changes, do the same as in SVN: git add,
>>         git rm (instead
>>         > of svn delete), git status.
>>         > Translation note: svn delete = git rm
>>         >
>>         > After making your changes, you ‘ll want to do a git commit
>>         (when you’re done
>>         > with a changeset) and a git push (to share those changes
>>         with the rest of
>>         > the team). To recap: doing a git commit does not push your
>>         changes to the
>>         > remote repository yet, you also need to do a git push.
>>         > $ git commit -m “JBRULES-123 fix testcase”
>>         > $ git push
>>         > Translation note: svn commit == git commit + git push
>>         >
>>         > Part 2: Tell me more
>>         >
>>         > Extra terminology
>>         >
>>         > What is rebasing? A rebase is an alternative manner of
>>         merging: instead of
>>         > merging your changes with the incoming changes, it takes
>>         the incoming
>>         > changes and applies your changes on top of that. For example:
>>         > $ git pull --rebase
>>         >
>>         > What is origin? Because git can work with multiple remote
>>         repositories
>>         > (usually forks of the same project), the default remote
>>         repository is known
>>         > as origin. If you’ve cloned the reference repository, then
>>         origin is the
>>         > reference repository. If you’ve forked the reference
>>         repository as A and
>>         > cloned A, then origin is A.
>>         >
>>         > Branching
>>         >
>>         > Usually we’ll have 2 types of branches: release branches
>>         and topic branches.
>>         > To switch to another branch, just use git checkout:
>>         > $ git checkout 5.1.x
>>         >
>>         > To create a branch do:
>>         > $ git checkout -b 5.2.x
>>         >
>>         > Release branching
>>         >
>>         > A release branches is copied from the master branch and
>>         only receives
>>         > bug-fixes. It is separated from the master branch so no
>>         unstable features or
>>         > improvements (pushed by other developers) leak in.
>>         > For example: $ git checkout 5.1.x
>>         >
>>         > Cherry picking is very interesting to pick bug-fixes from
>>         the master branch
>>         > into the release branch.
>>         >
>>         > Topic branching
>>         >
>>         > A topic branch is copied from the master branch and is
>>         eventually merged
>>         > back into the master branch. Its changes are to disruptive
>>         to other team
>>         > members to be committed to the master immediately.
>>         > For example: $ git checkout trueModify
>>         >
>>         > Rebasing is very interesting when you’re working on an
>>         experimental feature
>>         > in a topic branch for the last few weeks and you want to
>>         have the latest
>>         > changes of master(=trunk) in there too (= sync up with master):
>>         > // on my the myTopic branch
>>         > $ git rebase master
>>         >
>>         > After your topic branch is stable, you’ll merge it into the
>>         master branch:
>>         > $ git checkout master
>>         > $ git merge trueModify
>>         >
>>         > Learn more
>>         >
>>         > Do you want to really learn Git?
>>         > Read the Pro Git book (freely available online):
>>         http://progit.org/book/
>>         > You’ll easily gain the time you spend reading that book,
>>         because Git is more
>>         > than SVN++.
>>         > Read that book, especially if you’re going to do branching
>>         and merging!
>>         > Other references: Hibernate git tricks, SVN crash course,
>>         Git for Gnome
>>         > developers, ...
>>         >
>>         > --
>>         > With kind regards,
>>         > Geoffrey De Smet
>>         >
>>         > _______________________________________________
>>         > rules-dev mailing list
>>         > rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
>>         > https://lists.jboss.org/mailman/listinfo/rules-dev
>>         >
>>         >
>>
>>
>>
>>         --
>>           Edson Tirelli
>>           JBoss Drools Core Development
>>           JBoss by Red Hat @ www.jboss.com <http://www.jboss.com>
>>
>>         _______________________________________________
>>         rules-dev mailing list
>>         rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
>>         https://lists.jboss.org/mailman/listinfo/rules-dev
>>
>>
>>
>>     _______________________________________________
>>     rules-dev mailing list
>>     rules-dev at lists.jboss.org  <mailto:rules-dev at lists.jboss.org>
>>     https://lists.jboss.org/mailman/listinfo/rules-dev
>
>     -- 
>     With kind regards,
>     Geoffrey De Smet
>
>
>     _______________________________________________
>     rules-dev mailing list
>     rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
>     https://lists.jboss.org/mailman/listinfo/rules-dev
>
>
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev

-- 
With kind regards,
Geoffrey De Smet

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20101220/f45e46b7/attachment-0001.html 


More information about the rules-dev mailing list