<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Marcin Juszkiewicz - scm</title><link href="https://marcin.juszkiewicz.com.pl/" rel="alternate"/><link href="https://marcin.juszkiewicz.com.pl/tag/scm/feed/" rel="self"/><id>https://marcin.juszkiewicz.com.pl/</id><updated>2010-10-06T16:24:00+02:00</updated><entry><title>Bazaar — what is wrong with it?</title><link href="https://marcin.juszkiewicz.com.pl/2010/10/06/bazaar-what-is-wrong-with-it/" rel="alternate"/><published>2010-10-06T16:24:00+02:00</published><updated>2010-10-06T16:24:00+02:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2010-10-06:/2010/10/06/bazaar-what-is-wrong-with-it/</id><summary type="html">&lt;p&gt;Each time when I have to use Bazaar I feel sick. It takes hours to do things which should not take more then few minutes. Let&amp;#8217;s start with today problem and compare it to&amp;nbsp;git.&lt;/p&gt;
&lt;p&gt;I finally got &lt;a href="https://launchpad.net/ubuntu/maverick/+source/armel-cross-toolchain-base"&gt;armel-cross-toolchain-base&lt;/a&gt; to build with non-sysrooted binutils. It required adding one patch …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Each time when I have to use Bazaar I feel sick. It takes hours to do things which should not take more then few minutes. Let&amp;#8217;s start with today problem and compare it to&amp;nbsp;git.&lt;/p&gt;
&lt;p&gt;I finally got &lt;a href="https://launchpad.net/ubuntu/maverick/+source/armel-cross-toolchain-base"&gt;armel-cross-toolchain-base&lt;/a&gt; to build with non-sysrooted binutils. It required adding one patch and building binutils twice (once with sysroot for use during build, second without to put it in Ubuntu archive). After whole work I had 2 files to add, 3 hunks of changes in debian/rules and that&amp;#8217;s&amp;nbsp;all.&lt;/p&gt;
&lt;p&gt;So I used &amp;#8220;bzr add&amp;#8221; on new files and &amp;#8220;bzr commit -i&amp;#8221; to select which hunks goes into which commit and repeated it until all changes landed in local branch. But then I discovered that I forgot to add 1.51 version into debian/changelog file before whole that work. So I did it now and next commit added 1.52&amp;nbsp;version.&lt;/p&gt;
&lt;p&gt;And this is when whole &amp;#8220;fun&amp;#8221; started&amp;#8230; I wanted to move r131 (the one with 1.51 changelog entry) to be before r128 one. With git it is just a matter or &amp;#8220;git rebase -i&amp;#8221; and whole work is done. But this was&amp;nbsp;bzr&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;bzr rebase&amp;#8221; command (part of &amp;#8220;bzr-rewrite&amp;#8221; package) supports only rebasing on top of other branch. But it was also useful as my branch was a bit out of sync with upstream one. So I started to ask questions on #linaro channel as Zygmunt was there and his knowledge of Bazaar was a big help in past. There were few ideas and I did some reading in&amp;nbsp;meanwhile.&lt;/p&gt;
&lt;p&gt;One solution was &amp;#8220;use pipelines&amp;#8221; and you know? They even works but then I needed to cherry pick one commit (r131 one). The only way which I found was &amp;#8220;bzr merge -r130..131 :first&amp;#8221; and I got all changes but not changeset. Right, git users, you &lt;strong&gt;have&lt;/strong&gt; to commit after merge (and use &amp;#8220;bzr log&amp;#8221; to find commit message). And when you try &amp;#8220;bzr merge&amp;#8221; for few revisions they will be squashed&amp;#8230; So finally what I did was merging changeset by changeset and commiting with original commit messages. Good that it was just few of&amp;nbsp;them.&lt;/p&gt;
&lt;p&gt;So after more then 10 minutes (&amp;#8220;git rebase -i&amp;#8221;) I finally got branch ready to be pushed. Next time I will spend that time on checking what is wrong with &lt;a href="http://github.com/termie/git-bzr-ng"&gt;git-bzr-ng&lt;/a&gt; plugin as this will give me working two-way handling of Bazaar repositories without touching &amp;#8220;bzr&amp;#8221;&amp;nbsp;command.&lt;/p&gt;</content><category term="bzr"/><category term="git"/><category term="scm"/></entry><entry><title>GIT - second try</title><link href="https://marcin.juszkiewicz.com.pl/2008/03/20/git-second-try/" rel="alternate"/><published>2008-03-20T16:11:00+01:00</published><updated>2008-03-20T16:11:00+01:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2008-03-20:/2008/03/20/git-second-try/</id><summary type="html">&lt;p&gt;Due to recent discussion on OpenEmbedded mailing list I decided to give &lt;span class="caps"&gt;GIT&lt;/span&gt; second chance (&lt;a href="/2007/11/14/git-and-i-do-not-match/"&gt;first one was few months ago&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I imported Poky&amp;nbsp;using &lt;code&gt;git-svn&lt;/code&gt; tool and started hacking. First work was switching to &lt;span class="caps"&gt;OPKG&lt;/span&gt; (described in &lt;a href="/2008/03/17/good-bye-ipkg-welcome-opkg/"&gt;other post&lt;/a&gt;). I created branch for it and changed bit after bit …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Due to recent discussion on OpenEmbedded mailing list I decided to give &lt;span class="caps"&gt;GIT&lt;/span&gt; second chance (&lt;a href="/2007/11/14/git-and-i-do-not-match/"&gt;first one was few months ago&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I imported Poky&amp;nbsp;using &lt;code&gt;git-svn&lt;/code&gt; tool and started hacking. First work was switching to &lt;span class="caps"&gt;OPKG&lt;/span&gt; (described in &lt;a href="/2008/03/17/good-bye-ipkg-welcome-opkg/"&gt;other post&lt;/a&gt;). I created branch for it and changed bit after bit &amp;#8212; result was patchset with 17 patches. I pushed them into official Subversion repository in a bit other order and as few less revisions. After that I dropped branch as not needed any&amp;nbsp;more.&lt;/p&gt;
&lt;p&gt;Next was creating few branches for local hacks. Merging branches is easy when there are no conflicts and require manual calling&amp;nbsp;of &lt;code&gt;git mergetool FILE&lt;/code&gt; (instead of that being called automatically). Cherry picker works very nice and &amp;#8220;rebasing&amp;#8221; branches recognize such&amp;nbsp;revisions.&lt;/p&gt;
&lt;p&gt;Nasty thing is that every change has to be committed before switching branches as there is only one &amp;#8220;working copy&amp;#8221; at time (not like in &lt;span class="caps"&gt;CVS&lt;/span&gt;, Subversion or Monotone where you need &amp;#8220;working copy&amp;#8221; per&amp;nbsp;branch).&lt;/p&gt;
&lt;p&gt;What do I feel about &lt;span class="caps"&gt;GIT&lt;/span&gt; now? I started to like&amp;nbsp;it.&lt;/p&gt;</content><category term="git"/><category term="poky"/><category term="scm"/></entry><entry><title>GIT and I do not match</title><link href="https://marcin.juszkiewicz.com.pl/2007/11/14/git-and-i-do-not-match/" rel="alternate"/><published>2007-11-14T20:17:00+01:00</published><updated>2007-11-14T20:17:00+01:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2007-11-14:/2007/11/14/git-and-i-do-not-match/</id><summary type="html">&lt;p&gt;For both of my desktop machines I use git kernels and from time to time I add some additional patches to get something experimental to test. By default I use &amp;#8220;quilt&amp;#8221; to manage patches so my usual kernel session looks&amp;nbsp;like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;quilt pop -a
git pull
quilt push -a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And …&lt;/p&gt;</summary><content type="html">&lt;p&gt;For both of my desktop machines I use git kernels and from time to time I add some additional patches to get something experimental to test. By default I use &amp;#8220;quilt&amp;#8221; to manage patches so my usual kernel session looks&amp;nbsp;like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;quilt pop -a
git pull
quilt push -a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And as a result I have updated kernel with all my patches applied. If one of them do not apply I usually do updating by hand and&amp;nbsp;call &lt;code&gt;quilt refresh&lt;/code&gt; or search for newer version of&amp;nbsp;patch.&lt;/p&gt;
&lt;p&gt;Today I decided to do another attempt to use just &lt;span class="caps"&gt;GIT&lt;/span&gt; for managing my patched kernel tree instead of using &lt;span class="caps"&gt;GIT&lt;/span&gt; + quilt. And I failed&amp;nbsp;:(&lt;/p&gt;
&lt;p&gt;I cannot understand why &lt;span class="caps"&gt;GIT&lt;/span&gt; developers say that they hate &lt;span class="caps"&gt;CVS&lt;/span&gt; but follow its way when it comes to merging stuff&amp;#8230; If any operation ends in merge conflicts all you get is file with &lt;span class="caps"&gt;CVS&lt;/span&gt; conflict markers inside. You &lt;strong&gt;need to call merge tool by hand&lt;/strong&gt;, resolve problem, add files back to repository (do not ask me why adding files &lt;strong&gt;already&lt;/strong&gt; known to &lt;span class="caps"&gt;SCM&lt;/span&gt; is needed) and tell that you resolved conflict. Even &lt;span class="caps"&gt;CVS&lt;/span&gt; or Subversion does not works that&amp;nbsp;way&amp;#8230;&lt;/p&gt;
&lt;p&gt;I like the way it works with monotone &amp;#8212; if there is conflict during update&amp;nbsp;(so &lt;code&gt;git pull&lt;/code&gt; like) merge tool is called (kdiff3 on my system) and user has to resolve all conflicts before monotone will go into next step. Whole merging stuff is then stored as another revision (with git it can be then remove&amp;nbsp;during &lt;code&gt;git rebase&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Maybe one day I will find a way to get familiar with git but it is not&amp;nbsp;today&amp;#8230;&lt;/p&gt;</content><category term="git"/><category term="linux"/><category term="scm"/></entry><entry><title>I really don’t like CVS</title><link href="https://marcin.juszkiewicz.com.pl/2005/10/12/i-really-dont-like-cvs/" rel="alternate"/><published>2005-10-12T22:53:00+02:00</published><updated>2005-10-12T22:53:00+02:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2005-10-12:/2005/10/12/i-really-dont-like-cvs/</id><summary type="html">&lt;p&gt;After using BitKeeper (when it has free license), Subversion and monotone each time when I have to work with &lt;span class="caps"&gt;CVS&lt;/span&gt; repository I feel sick. Simple operations takes time &amp;#8212; comparing changes need contact with remote repository which sucks especially with SourceForge &lt;span class="caps"&gt;CVS&lt;/span&gt; service (avoid if you&amp;nbsp;can).&lt;/p&gt;
&lt;p&gt;But sometimes there is …&lt;/p&gt;</summary><content type="html">&lt;p&gt;After using BitKeeper (when it has free license), Subversion and monotone each time when I have to work with &lt;span class="caps"&gt;CVS&lt;/span&gt; repository I feel sick. Simple operations takes time &amp;#8212; comparing changes need contact with remote repository which sucks especially with SourceForge &lt;span class="caps"&gt;CVS&lt;/span&gt; service (avoid if you&amp;nbsp;can).&lt;/p&gt;
&lt;p&gt;But sometimes there is no other choice&amp;nbsp;;(&lt;/p&gt;</content><category term="scm"/></entry></feed>