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