<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Magnus Hagander's PostgreSQL blog (Entries tagged as git)</title>
    <link>http://blog.hagander.net/</link>
    <description></description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.6.2 - http://www.s9y.org/</generator>
    
    

<item>
    <title>About security updates and repository &quot;lockdown&quot;</title>
    <link>http://blog.hagander.net/archives/212-About-security-updates-and-repository-lockdown.html</link>
            <category>PostgreSQL</category>
    
    <comments>http://blog.hagander.net/archives/212-About-security-updates-and-repository-lockdown.html#comments</comments>
    <wfw:comment>http://blog.hagander.net/wfwcomment.php?cid=212</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.hagander.net/rss.php?version=2.0&amp;type=comments&amp;cid=212</wfw:commentRss>
    

    <author>nospam@example.com (Magnus Hagander)</author>
    <content:encoded>
    &lt;p&gt;I have received a lot of questions since the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.postgresql.org/message-id/14040.1364490185@sss.pgh.pa.us&#039;]);&quot;  href=&quot;http://www.postgresql.org/message-id/14040.1364490185@sss.pgh.pa.us&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;announcement&lt;/a&gt; that we are temporarily shutting down the anonymous git mirror and commit messages. And we&#039;re also seeing quite a lot of media coverage.&lt;/p&gt;

&lt;p&gt;Let me start by clarifying exactly what we&#039;re doing:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;We are shutting down the mirror from our upstream git to our anonymous mirror&lt;/li&gt;
    &lt;li&gt;This also, indirectly, shuts down the mirror to github&lt;/li&gt;
    &lt;li&gt;We&#039;re temporarily placing a hold on all commit messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There has been some speculation in that we are going to shut down &lt;i&gt;all&lt;/i&gt; list traffic for a few days - that is completely wrong. All other channels in the project will operate just as usual. This of course also includes all developers working on separate git repositories (such as a personal fork on github).&lt;/p&gt;

&lt;p&gt;We are also not shutting down the repositories themselves. They will remain open, with the same content as today (including patches applied between now and Monday), they will just be frozen in time for a few days.&lt;/p&gt;

&lt;h3 id=&quot;toc0&quot;&gt;Why?&lt;/h3&gt;
&lt;p&gt;So why are we doing this? It&#039;s pretty simple - it takes a few days to prepare packages for all our supported platforms, to do testing on these, and get them ready for release. If we just committed the security fixes and then proceeded with the packaging, that would mean that anybody who was following our repository would be able to see those fixes a few days before the fixes were available to the majority of the users. That also means that anybody looking for the flaw would get a few days of time when the full details of the bug was in the open (since the fix was applied in public), but yet all the installations around the world would be unpatched and left wide open for exploit.&lt;/p&gt;

&lt;p&gt;By restricting access to view the patches until release time, we close this window. Yes, the vulnerability is still in the code that is out there today. But it has been in there for a few years, and nobody (that we know of) found it in that time. Hopefully, nobody will between now and release time. But by not explicitly showing the bug, we&#039;re at least keeping that risk as low as possible while still being able to warn our users that they will need to apply the patch as soon as it&#039;s out.&lt;/p&gt;

&lt;p&gt;We do realize that this will make some people look harder at the PostgreSQL code over the next couple of days trying to find this bug, and write an exploit for it.&lt;/p&gt;

&lt;h3 id=&quot;toc1&quot;&gt;But you&#039;re using git?&lt;/h3&gt;
&lt;p&gt;I&#039;ve seen a couple of comments along the line of &quot;isn&#039;t this where you should be using a DVCS like git you&#039;re using, letting the people building the security fixes do that in a separate repository and merge it once ready, not needing to shut down the central one&quot;.&lt;/p&gt;

&lt;p&gt;Turns out that is actually exactly what we are doing. The security fixes are mostly already developed, and as such are sitting somewhere else from the main repository. But we need at some point to merge these into the main repository, in order to let people build the packages. We only close down the repository mirroring right before this merge is done, and until the packages are ready to be released. It&#039;s not the work to &lt;i&gt;develop&lt;/i&gt; the patch that requires the shutdown of the mirroring, it&#039;s the work to build and release packages.&lt;/p&gt;

&lt;p&gt;The other advantage of the fact that we are using a DVCS, is that development does not stop during this time. Anybody working on a patch can keep working on it in their local copy of the repository. It&#039;s only the merge (&quot;apply&quot;)  of the patch to the upstream master branch that&#039;s going to be delayed. And that affects a much smaller group of people. Of course, it is a bit of an extra annoyance since we are currently trying to close out the open patches for the next release, but it&#039;s not a huge difference for most developers.&lt;/p&gt;

&lt;h3 id=&quot;toc2&quot;&gt;Are you going to publish the fixes eventually?&lt;/h3&gt;
&lt;p&gt;Yes, &lt;i&gt;absolutely&lt;/i&gt;! We are not going to permanently hide any information, or try to obfuscate the contents of security patches (*cough*unlike some other players in the field).&lt;/p&gt;

&lt;p&gt;Once the new versions are released, the git mirroring will resume. This will immediately mirror all the individual commits, including detailed commit messages showing what the bugs were (and of course including the fix itself). And we are assigning public CVE numbers to all security related bugs. At this point, the commit messages held in the queue will also be released, and appear on the &lt;i&gt;pgsql-committers&lt;/i&gt; list for anybody who wants to read up on them. And of course, complete tarballs with the full release will be made available alongside the binary packages.&lt;/p&gt;

&lt;h3 id=&quot;toc3&quot;&gt;Bottom line&lt;/h3&gt;
&lt;p&gt;It&#039;s a difficult balance between keeping things open so that everybody can verify what&#039;s going on, and keep exploit information out of the hands of the bad guys. Our goal with what we did this time is to minimize exposure to our users for a potentially very bad exploit (depends on the scenario for each individual install, of course), while we work with downstream distributions to make sure our fixes can reach the users as quickly as possible.&lt;/p&gt;

&lt;p&gt;Is it the right way? We don&#039;t know. It&#039;s the first time we do this, and it&#039;s not something we plan to do as a general process. We&#039;ll of course have to evaluate whether it was successful once it&#039;s all done.&lt;/p&gt;

&lt;p&gt;Finally, for those of you who are our &lt;i&gt;users&lt;/i&gt;, a short repeat. A new release is planned next week, current schedule is release on April 4th. We advise all users to review the security announcement and apply the fix as quickly as possible if the vulnerability is targetable in your environment. The patch will require installation of new binaries and a restart of the database, but no further migration work than that.&lt;/p&gt;

&lt;p&gt;We take the security of our users seriously, and try our best to protect them as much as possible. It&#039;s out belief that the tradoffs we&#039;ve done here are in their best interest. The future will tell, of course, if that belief is correct.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Fri, 29 Mar 2013 16:58:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.hagander.net/archives/212-guid.html</guid>
    <category>git</category>
<category>postgresql</category>
<category>security</category>

</item>
<item>
    <title>PostgreSQL - now on git!</title>
    <link>http://blog.hagander.net/archives/175-PostgreSQL-now-on-git!.html</link>
            <category>PostgreSQL</category>
    
    <comments>http://blog.hagander.net/archives/175-PostgreSQL-now-on-git!.html#comments</comments>
    <wfw:comment>http://blog.hagander.net/wfwcomment.php?cid=175</wfw:comment>

    <slash:comments>10</slash:comments>
    <wfw:commentRss>http://blog.hagander.net/rss.php?version=2.0&amp;type=comments&amp;cid=175</wfw:commentRss>
    

    <author>nospam@example.com (Magnus Hagander)</author>
    <content:encoded>
    &lt;p&gt;So it finally happened. The official PostgreSQL master source tree is now managed in &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/git.postgresql.org/gitweb?p=postgresql.git;a=summary&#039;]);&quot;  href=&quot;http://git.postgresql.org/gitweb?p=postgresql.git;a=summary&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;git&lt;/a&gt;, instead of cvs. This means, amongst other things, that the worlds most advanced open source database now has a version control system with.. eh. atomic commits!&lt;/p&gt;

&lt;p&gt;Like the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/rhaas.blogspot.com/2010/09/so-why-isnt-postgresql-using-git-yet.html&#039;]);&quot;  href=&quot;http://rhaas.blogspot.com/2010/09/so-why-isnt-postgresql-using-git-yet.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;first run&lt;/a&gt;, this one had some issues with it, but it was smaller and resolved in time not to have to roll back. This time, it turned out that the cvs version that ships in Debian GNU/Linux comes with patches that change the default date format to the ISO standard. But since one of our main requirements on the conversion was to be able to faithfully represent the old versions of the code, this broke every single file - since we used CVS keyword expansion in the old tree. Once we found this, it was a simple case of adding the DateFormat=old parameter to the CVS config file and re-run the whole conversion - which took several hours.&lt;/p&gt;

&lt;p&gt;A lot of work went into making the repository conversion correct. Some of this was due to issues in the toolchain used - many thanks to Michael Haggerty and Max Bowsher for getting those fixed and explaining some of the behaviors of the software for us. In the end, a number of things needed to be changed in our existing CVS repository to make it migrate properly. Tom Lane provided a big patch to apply to the CVS repository itself prior to the conversion that cleaned most of those up - you can find a copy of it &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/github.com/mhagander/pggit_migrate/blob/master/repository_fixups&#039;]);&quot;  href=&quot;http://github.com/mhagander/pggit_migrate/blob/master/repository_fixups&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;my github page&lt;/a&gt; if you&#039;re interested.&lt;/p&gt;

&lt;p&gt;With this patch applied, we managed a conversion that was &lt;strong&gt;very&lt;/strong&gt; close to the original repository. I personally think this is only because the PostgreSQL project has been very careful about how it deals with it&#039;s CVS repository - using it in a fairly simple way. And even with that, we had a number of issues - such as tags moved &quot;after the fact&quot;, and branches created off partial checkouts. A fair number of the issues were simply because CVS doesn&#039;t have ways to represent everything in a reasonable way, such as issues when a file was deleted, re-added, deleted again, and mix this over different branches.&lt;/p&gt;

&lt;p&gt;Git obviously deals with this better, and hopefully we&#039;ll have no such issues creeping into the new repository. However, the PostgreSQL project will be sticking with our &quot;conservative approach&quot; to source control - at least for the time being. For this reason, we are &lt;i&gt;restricting&lt;/i&gt; what committers can use within git. We still allow any developers (and committers) to use whatever parts of git they want as they develop, but for commits going into the main tree, we are making a number of restrictions:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;We will not allow merge commits. The PostgreSQL project doesn&#039;t follow the &quot;git workflow&quot; - we generally develop our patches on the master branch, and then back-patch to released stable branches for important bugs. We will continue doing this as separate commits and not using merges, thus keeping history linear.&lt;/li&gt;
    &lt;li&gt;We will not use the author field in git to tag it with the patches original author (even in the few cases when the patch is actually authored by a single person). Instead, we will require that author and committer are always set to the same thing, and we will then credit the author(s) (along with the reviewer(s)) in the commit message, just like we&#039;ve done before.&lt;/li&gt;
    &lt;li&gt;As a follow-on to that requirement, we will require that all committers are the ones registered with the project, using the same name and address on all commits. So even if a patch is developed on a topic branch on say &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/github.com/postgres&#039;]);&quot;  href=&quot;http://github.com/postgres&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;github&lt;/a&gt;, it will get collapsed into a single commit (or maybe a couple, depending on size) tagged with the committers name on that.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There has been a lot of discussion around this, and this is how the PostgreSQL project has worked and wants to continue working. We may change this sometime in the future, but not now - we are only changing the tool, and not the workflow.&lt;/p&gt;

&lt;p&gt;To enforce these requirements, I&#039;ve developed a policy hook for our git server that makes sure we don&#039;t make the mistake. It&#039;s up on &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/github.com/mhagander/pg_githooks&#039;]);&quot;  href=&quot;http://github.com/mhagander/pg_githooks&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;my github page&lt;/a&gt;, along with the script we use to generate commit mails to the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/archives.postgresql.org/pgsql-committers/&#039;]);&quot;  href=&quot;http://archives.postgresql.org/pgsql-committers/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;pgsql-committers&lt;/a&gt; list that look just the way we want them to.&lt;/p&gt;

&lt;p&gt;What does this mean for you as a PostgreSQL user? Really, nothing at all.&lt;/p&gt;

&lt;p&gt;What does this mean for you as a PostgreSQL patch developer? Not much. If you did your work off the cvs-to-git mirror, you need to do a new clone. This repository is converted from scratch, so the old one is not valid anymore. We still encourage you to use for example github if you want to do your development there, but the patch submission process remains the same - send a context style diff to the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/archives.postgresql.org/pgsql-hackers/&#039;]);&quot;  href=&quot;http://archives.postgresql.org/pgsql-hackers/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;pgsql-hackers&lt;/a&gt; mailinglist.&lt;/p&gt;

&lt;p&gt;What does this mean for you as a buildfarm-animal maintainer? You need to reconfigure it to use git. I expect &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/people.planetpostgresql.org/andrew/&#039;]);&quot;  href=&quot;http://people.planetpostgresql.org/andrew/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Andrew&lt;/a&gt; to post instructions on exactly what to do, and keep track of who hasn&#039;t done it &lt;img src=&quot;http://blog.hagander.net/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks&lt;/strong&gt; and &lt;strong&gt;Well done&lt;/strong&gt; to all the people involved in making this happen!&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Tue, 21 Sep 2010 11:14:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.hagander.net/archives/175-guid.html</guid>
    <category>cvs</category>
<category>git</category>
<category>postgresql</category>

</item>
<item>
    <title>Testing PostgreSQL patches on Windows using Amazon EC2</title>
    <link>http://blog.hagander.net/archives/151-Testing-PostgreSQL-patches-on-Windows-using-Amazon-EC2.html</link>
            <category>PostgreSQL</category>
    
    <comments>http://blog.hagander.net/archives/151-Testing-PostgreSQL-patches-on-Windows-using-Amazon-EC2.html#comments</comments>
    <wfw:comment>http://blog.hagander.net/wfwcomment.php?cid=151</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>http://blog.hagander.net/rss.php?version=2.0&amp;type=comments&amp;cid=151</wfw:commentRss>
    

    <author>nospam@example.com (Magnus Hagander)</author>
    <content:encoded>
    &lt;p&gt;Many people who develop patches for PostgreSQL don&#039;t have access to Windows machines to test their patches on. Particularly not with complete build environments for the MSVC build on them. The net result of this is that a fair amount of patches are never tested on Windows until after they are committed. For most patches this doesn&#039;t actually matter, since it&#039;s changes that don&#039;t deal with anything platform specific other than that which is already taken care of by our build system. But Windows is not Posix, so the platform differences are generally larger than between the different Unix platforms PostgreSQL builds on, and in MSVC the build system is completely different. In a non-trivial number of cases it ends up with breaking the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/pgbuildfarm.org&#039;]);&quot;  href=&quot;http://pgbuildfarm.org&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;buildfarm&lt;/a&gt; until somebody with access to a Windows build environment can fix it. Lucky, we have a number of machines running on the buildfarm with Windows on them, so we do catch these things long before release.&lt;/p&gt;

&lt;p&gt;There are a couple of reasons why it&#039;s not easy for developers to have a Windows machine ready for testing, even a virtual one. For one, it requires a Windows license. In this case the same problem with availability for testing exists for other proprietary platforms such as for example Mac OSX, but it&#039;s different from all the free Linux/Unix platforms available. Second, setting up the build environment is quite complex - not at all as easy as on the most common Linux platforms for example. This second point is particularly difficult for those not used to Windows.&lt;/p&gt;

&lt;p&gt;A third reason I noticed myself was that running the builds, and regression tests, is very very slow at least on my laptop using VirtualBox. It works, but it takes ages. For this reason, a while back I started investigating using &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/aws.amazon.com/ec2/&#039;]);&quot;  href=&quot;http://aws.amazon.com/ec2/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Amazon EC2&lt;/a&gt; to do my Windows builds on, for my own usage. Turns out this was a very good solution to my problem - the time for a complete rebuild on a typical EC2 instance is around 7 minutes, whereas it can easily take over 45 minutes on my laptop.&lt;/p&gt;

&lt;p&gt;Now, EC2 provides a pretty nice way to create what&#039;s called an AMI (Amazon Machine Image) that can be shared. Using these facilities, I have created an AMI that contains Windows plus a complete PostgreSQL build environment. Since this AMI has been made public, anybody who wants to can boot up an &lt;i&gt;instance&lt;/i&gt; of it to run tests. Each of these instances are completely independent of each other - the AMI only provides a common starting point.&lt;/p&gt;

&lt;p&gt;I usually run these on a &lt;i&gt;medium&lt;/i&gt; size Amazon instance. The cost for such an instance is, currently, &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/aws.amazon.com/ec2/#pricing&#039;]);&quot;  href=&quot;http://aws.amazon.com/ec2/#pricing&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;$0.30 per hour&lt;/a&gt; that the instance is running. The big advantage here is that this &lt;i&gt;includes&lt;/i&gt; the Windows license. That makes it a very cost-effective way to do quick builds and tests on Windows.&lt;/p&gt;

&lt;p&gt;Read on for a full step-by-step instruction on how to get started with this AMI (screenshot overload warning).&lt;/p&gt;

 &lt;br /&gt;&lt;a href=&quot;http://blog.hagander.net/archives/151-Testing-PostgreSQL-patches-on-Windows-using-Amazon-EC2.html#extended&quot;&gt;Continue reading &quot;Testing PostgreSQL patches on Windows using Amazon EC2&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 03 Sep 2009 14:48:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.hagander.net/archives/151-guid.html</guid>
    <category>amazon</category>
<category>build</category>
<category>cloud</category>
<category>ec2</category>
<category>git</category>
<category>postgresql</category>
<category>windows</category>

</item>
<item>
    <title>Updates to the postgresql.org git service</title>
    <link>http://blog.hagander.net/archives/140-Updates-to-the-postgresql.org-git-service.html</link>
            <category>PostgreSQL</category>
            <category>git</category>
    
    <comments>http://blog.hagander.net/archives/140-Updates-to-the-postgresql.org-git-service.html#comments</comments>
    <wfw:comment>http://blog.hagander.net/wfwcomment.php?cid=140</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.hagander.net/rss.php?version=2.0&amp;type=comments&amp;cid=140</wfw:commentRss>
    

    <author>nospam@example.com (Magnus Hagander)</author>
    <content:encoded>
    &lt;p&gt;As &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/petereisentraut.blogspot.com/2009/03/news-on-postgresql-source-code.html&#039;]);&quot;  href=&quot;http://petereisentraut.blogspot.com/2009/03/news-on-postgresql-source-code.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Peter&lt;/a&gt; has already noted, we have been planning for a while to update the service on &lt;i&gt;git.postgresql.org&lt;/i&gt;, and as of now we just flipped the switch to the new version. We are still waiting for the DNS zone to update (yes, we could&#039;ve lowered the TTL. No, we didn&#039;t think it was that important). So within 5 hours, anybody accessing &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/git.postgresql.org&#039;]);&quot;  href=&quot;http://git.postgresql.org&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;git.postgresql.org&lt;/a&gt; through http, git or ssh will be accessing the new server.&lt;/p&gt;

&lt;p&gt;First a note to all those people who use the git clone of the main cvs repository to do PostgreSQL development: &lt;b&gt;nothing has changed for you&lt;/b&gt;. The URL is the same, the repository is the same, just keep pulling.&lt;/p&gt;

&lt;p&gt;The only real difference there should be that the new server the service is hosted on has a little bit more bandwidth available, but it should not normally be noticeable.&lt;/p&gt;

The changes are all around the repositories that are originally hosted at the site. The changes have been made to make it easier to collaborate on projects, and to require less manual work to set things up. It is our hope that this will lower the bar of entry for those who are interested in developing PostgreSQL-related projects using git. The main changes for these users are:
&lt;ul&gt;
    &lt;li&gt;Login is now integrated with the postgresql.org community account system. This means unified usernames across PostgreSQL services, such as for example the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/wiki.postgresql.org&#039;]);&quot;  href=&quot;http://wiki.postgresql.org&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;wiki&lt;/a&gt;. You just need to upload your SSH key to enable access.&lt;/li&gt;
    &lt;li&gt;Users no longer have shell accounts on the server. Instead, all users use &lt;i&gt;git@git.postgresql.org&lt;/i&gt; as their ssh login. This makes the management and securing of the server much easier.&lt;/li&gt;
    &lt;li&gt;It is now possible for the &lt;i&gt;owner&lt;/i&gt; of a repository to delegate permissions to &lt;i&gt;other users&lt;/i&gt; directly from a &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/git.postgresql.org/adm/&#039;]);&quot;  href=&quot;http://git.postgresql.org/adm/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;web interface&lt;/a&gt;. As long as the other user has also uploaded his ssh key, this will be completely automatic.&lt;/li&gt;
    &lt;li&gt;It is now possible to request a new repository for your code using the same &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/git.postgresql.org/adm/&#039;]);&quot;  href=&quot;http://git.postgresql.org/adm/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;web interface&lt;/a&gt;. Requests for new repositories will still have to be approved before the repository is created.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Per an inventory that was made before the switch was made, several inactive repositories were not migrated to the new server. If you are missing a repository that was for some reason not migrated, feel free to contact us at &lt;a href=&quot;mailto:pgsql-www@postgresql.org&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;the pgsql-www mailinglist&lt;/a&gt; for a recovery - we will keep all the old files around for a while just in case.&lt;/p&gt;

&lt;p&gt;As a final note, the source code for the git management tool itself is of course available &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/git.postgresql.org/gitweb?p=pggit.git;a=summary&#039;]);&quot;  href=&quot;http://git.postgresql.org/gitweb?p=pggit.git;a=summary&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;in the git repository&lt;/a&gt; (when your DNS has updated).&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Fri, 27 Mar 2009 21:06:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.hagander.net/archives/140-guid.html</guid>
    <category>git</category>
<category>postgresql</category>

</item>
<item>
    <title>Todays trivial git tip</title>
    <link>http://blog.hagander.net/archives/133-Todays-trivial-git-tip.html</link>
            <category>PostgreSQL</category>
            <category>git</category>
    
    <comments>http://blog.hagander.net/archives/133-Todays-trivial-git-tip.html#comments</comments>
    <wfw:comment>http://blog.hagander.net/wfwcomment.php?cid=133</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://blog.hagander.net/rss.php?version=2.0&amp;type=comments&amp;cid=133</wfw:commentRss>
    

    <author>nospam@example.com (Magnus Hagander)</author>
    <content:encoded>
    &lt;p&gt;If you&#039;re like me, you are using the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/git.postgresql.org/?p=postgresql.git;a=summary&#039;]);&quot;  href=&quot;http://git.postgresql.org/?p=postgresql.git;a=summary&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;git.postgresql.org&lt;/a&gt; repository to do your PostgreSQL development, because it&#039;s much nicer to work with than CVS.&lt;/p&gt;

&lt;p&gt;If you&#039;re also like me, you like &lt;i&gt;git diff&lt;/i&gt; with it&#039;s nice coloring and trailing-whitespace-warnings and such features. But you&#039;re a little bit annoyed that your tabs come out as 8-characters, when the PostgreSQL source uses 4-character tabs, making diffs a bit hard to read. But if you just pipe the output to &lt;i&gt;less&lt;/i&gt; or something, the coloring goes away.&lt;/p&gt;

I finally got around to looking for a way to fix that today. And it took me all of 2 minutes to find it - I really should&#039;ve done this before. Put the following in your &lt;i&gt;.git/config&lt;/i&gt; file:
&lt;pre&gt;&lt;code&gt;[core]
  pager = less -x4&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and it&#039;ll show you the diffs with 4-space tabs.&lt;/p&gt;

&lt;p&gt;Trivial, yes. But it took me this long to even look at fixing it, so hopefully this can help someone...&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Wed, 07 Jan 2009 11:38:25 +0000</pubDate>
    <guid isPermaLink="false">http://blog.hagander.net/archives/133-guid.html</guid>
    <category>git</category>
<category>postgresql</category>

</item>

</channel>
</rss>