<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HidayahTech &#187; Subversion</title>
	<atom:link href="http://blog.basilgohar.com/category/development/subversion/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.basilgohar.com</link>
	<description>Technology, Development, &#38; Interesting Stuph</description>
	<lastBuildDate>Tue, 08 Nov 2011 15:49:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>ffmpeg from svn</title>
		<link>http://blog.basilgohar.com/2008/05/18/ffmpeg-from-svn</link>
		<comments>http://blog.basilgohar.com/2008/05/18/ffmpeg-from-svn#comments</comments>
		<pubDate>Sun, 18 May 2008 12:27:38 +0000</pubDate>
		<dc:creator>Basil</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Media]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://www.basilgohar.com/blog/?p=151</guid>
		<description><![CDATA[Bismillaahir Rahmaanir Raheem Alhamdulillaah, I have really been engrossed in using ffmpeg, one of the most amazing a/v command-line tools out there, for my various personal video projects.  However, recently I was experiencing a recurring bug where I could not work with some specific codecs when either the input or the output file was on [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><em>Bismillaahir Rahmaanir Raheem</em></p>
<p><em>Alhamdulillaah</em>, I have really been engrossed in using <a title="ffmpeg website" href="http://ffmpeg.mplayerhq.hu/">ffmpeg</a>, one of the most amazing a/v command-line tools out there, for my various personal video projects.  However, recently I was experiencing a recurring bug where I could not work with some specific codecs when either the input or the output file was on a particular drive (!).  The drive in question happened to have only one FAT32 partition, so I suspect it may have had something to do with it, as using another drive for both input &amp; output would generally work flawlessly.  The particular action I was trying to perform was to encode a sequence of rather large JPEG files (3072&#215;2304) into a single video file using the outstanding (but still somewhat experimental and/or unstable) FFV1 lossless codec.</p>
<p>So, I visited the <a title="ffmpeg website" href="http://ffmpeg.mplayerhq.hu/">ffmpeg</a> website and looked at <a title="ffmpeg bug tracker" href="http://roundup.mplayerhq.hu/roundup/ffmpeg/">some of their bugs</a>, but didn&#8217;t see anything related to this.  Then, after seeing some of their pre-bug report checklist, I decided to check the version of ffmpeg I had on the system, and found it to be from March.  So, I pulled-down a fresh copy of their <a title="ffmpeg download page" href="http://ffmpeg.mplayerhq.hu/download.html">trunk via subversion</a> and ran configure &amp; make (I did not run make install).  Running the resulting ffmpeg binary from this compile run worked perfectly, <em>alhamdulillaah</em>.</p>
<p>The lesson is, if you&#8217;re running into a bug with either ffmpeg or any other package, then give a shot at running the latest code, if available.  It may seem like common sense, but I had underestimated just how easy it would be.  Surely, other packages may not work as simply, but it really was a piece of cake in this case.  Now I guess I need to learn how to package RPMs so I can help out the <a title="Livna website" href="http://rpm.livna.org/rlowiki/">Livna</a> project to get this latest code into their repository, which I also understand is not simple task, as many other projects rely on ffmpeg&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basilgohar.com/2008/05/18/ffmpeg-from-svn/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using find &amp; grep to search subversion working copies</title>
		<link>http://blog.basilgohar.com/2007/06/20/using-find-grep-to-search-subversion-working-copies</link>
		<comments>http://blog.basilgohar.com/2007/06/20/using-find-grep-to-search-subversion-working-copies#comments</comments>
		<pubDate>Wed, 20 Jun 2007 18:33:23 +0000</pubDate>
		<dc:creator>Basil</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://www.basilgohar.com/blog/2007/06/20/using-find-grep-to-search-subversion-working-copies/</guid>
		<description><![CDATA[Alhamdulillaah, I was able to write a very simple bash function that will efficiently scan an entire directory tree for files which contain a string and display those lines, along with line numbers, and highlight the searched term in the terminal. The result can be found below: function search { time find . -name '.svn' [...]]]></description>
			<content:encoded><![CDATA[<p><em>Alhamdulillaah</em>, I was able to write a very simple bash function that will efficiently scan an entire directory tree for files which contain a string and display those lines, along with line numbers, and highlight the searched term in the terminal.  The result can be found below:</p>
<pre>function search
{
    time find . -name '.svn' -prune -o -exec grep -inH --color -e "$1" '{}' ;
}</pre>
<p>The <code>search</code> function takes as its only parameter the string for which you are searching.  Three standard *nix programs are utilized – <code>time</code>, <code>find</code>, &amp; <code>grep</code>.</p>
<p><span id="more-102"></span></p>
<p>The <code>time</code> program is completely optional, and I just like to use it on most commands I execute in the terminal because I like to see how my different parameters affect general execution time.</p>
<p>There are seven arguments to the <code>find</code> command, amongst them being the call to the <code>grep</code> command, which will be explained later.  The first argument to <code>find</code>, &#8216;<code>.</code>&#8216;, simply tells <code>find</code> “search in this directory”.  By default, <code>find</code> will also recursively descend into subdirectories, and this is the behavior that I was looking for.  The second argument, &#8216;<code>-name</code>&#8216;, states that I want to match according to a name or pattern.  The third argument, &#8216;<code>.svn</code>&#8216;, is the pattern which I am trying to match – in this case, the special directories that hold specific subversion information.  The fourth argument, &#8216;<code>-prune</code>&#8216;, tells find that I want to exclude directories that match the previous pattern.  This means, do not list directories that match &#8216;.svn&#8217; nor their contents.  The fifth argument, &#8216;<code>-o</code>&#8216;, behaves like a logical OR.  In the context of this usage, it means, execute the previous match OR what comes after me.  So, if the first pattern matched, then find moves to the next file, or begins to execute the next parameter, which is &#8216;<code>-exec</code>&#8216;, which tells <code>find</code> that I want to execute a command for every matched file (in this case, not the 1st case, which would be all files that do not match &#8216;.svn&#8217;).</p>
<p>The seventh argument is actually a command that <code>find</code> will run on every match in the current case, which is a call to the <code>grep</code> command.  Specifically, the arguments to <code>grep</code> are <code>-i</code>, which means search without regard to case (case-insensitivity), <code>-n</code>, which tells <code>grep</code> to print the line number with every match, <code>-H</code>, which tells <code>grep</code> to print the filename for every match, <code>--color</code>, which tells <code>grep</code> to highlight the searched term in the matched line, and <code>-e</code>, which tells <code>grep</code> that the pattern is a regular expression. “<code>$1</code>” actually tells bash to insert the first argument to the call to the function (<code>search</code>) on the command line – in this case, it is the actual term for which we are searching.</p>
<p>The last part of the function definition has two parts, “<code>'{}'</code>” and “<code>\;</code>”.  “<code>'{}'</code>” is the syntax <code>find</code> uses to insert the filename of the matched file in the current case when running with the <code>-exec</code> argument.  The reason I put the curly brackets in quotes was based on the tip from the <code>find</code> manpage, which stated that curly brackets are generally parsed by the shell environment.  Putting them in quotes will prevent this.  The final bit is the escaped semi-colon, “<code>\;</code>”.  This tells the <code>-exec</code> argument of the <code>find</code> command that there are no more arguments to pass to the command <code>find</code> should run for every match in this case.  Once again, because semi-colons are generally parsed by the shell environment, escaping them with a forward-slash will prevent them from being parsed, thus allowing them to be passed to the find command.</p>
<p>It&#8217;s important to note that there are some caveats due to the meaning of certain characters being passed.  For example, since I am using the <code>-e</code> argument within the <code>grep</code> command to specify I am matching by a regular expression pattern, characters such as “.”, which hold special meaning within regular expressions (e.g., “.” means “match any character here”), then you will need to escape the character.  However, because the argument to the <code>search</code> function is being passed through the shell environment twice, that means, to include a literal “.” in your search, you will have to escape it twice.  Just a tip I found out when doing a search for “d.enddate” (a field in a SQL database query).</p>
<p>So there you have it!  A very fast &amp; efficient way to search the contents of all files within a subversion working copy set without also having to go through the special .svn directories, which frequently munge the return results.  Previously, I had been using only the <code>grep</code> command with the addition of the <code>-r</code> argument, which would tell it to recursively descend into directories.  This works well, but it does not allow me to exclude the .svn directories.  Combining <code>grep</code> with <code>find</code>, however, allows me to get exactly what I want.  <em>Alhamdulillaah</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basilgohar.com/2007/06/20/using-find-grep-to-search-subversion-working-copies/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Server, Apache HTTPD, PHP, &amp; Subversion source configuration &amp; installation</title>
		<link>http://blog.basilgohar.com/2006/05/27/mysql-server-apache-httpd-php-subversion-source-configuration-installation</link>
		<comments>http://blog.basilgohar.com/2006/05/27/mysql-server-apache-httpd-php-subversion-source-configuration-installation#comments</comments>
		<pubDate>Sat, 27 May 2006 21:37:23 +0000</pubDate>
		<dc:creator>Basil</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://tech.hidayahonline.org/2006/05/27/mysql-server-apache-httpd-php-subversion-source-configuration-installation/</guid>
		<description><![CDATA[I have my webserver (at the time of this writing, the one on which this blog is posted) configured rather nicely, however, as with everything that accumulates over time, it&#8217;s current state is a combination of quite a lot of trial-&#038;-error sessions that would be really hard to duplicate the first time I tried to [...]]]></description>
			<content:encoded><![CDATA[<p>I have my webserver (at the time of this writing, the one on which this blog is posted) configured rather nicely, however, as with everything that accumulates over time, it&#8217;s current state is a combination of quite a lot of trial-&#038;-error sessions that would be really hard to duplicate the first time I tried to do so on another environment.  Therefore, I&#8217;m going to try to log the configuration I use to get a system working as I like.  This may or may not turn into a tutorial-type series, but for now, it&#8217;s just notes for myself.<span id="more-36"></span></p>
<p>The core of my server is, of course, the Apache HTTPD web server.  For dynamic pages, I almost entirely rely on the PHP programming language.  For database storage, I use MySQL.  Finally, rounding out the most important services I run on my server is Subversion versioning server, which I use for nearly all my code-based projects now.  I also run the IceCast2 server, but since its configuration is pretty-much independent of the other four packages I&#8217;ve described, I&#8217;ll leave that out for the time being.</p>
<p>I strongly prefer source-based installations for the flexibility you get when it comes time to install.  With the advent of a large support community around the Fedora project, it&#8217;s really become less of any issue, as nearly every package is kept up to date with the latest version.  This is good &#038; well for my development machine at home.  But my current host, Servermatrix, only supports Redhat Enterprise Server releases.  Therefore, to get the latest versions of these server packages, I will need to go to the sources.  Plus, you get to learn a <em>lot</em> more when you&#8217;re getting down-&#038;-dirty with the code &#8211; configuring, compiling, and sometimes every altering code!  Oh&#8230;the excitement!</p>
<p>Having said that, this configuration guide is going to be dealing with the source-based installations of these packages only.  So, let&#8217;s start downloading.  Here are the relevant links (I have tried to link to the most specific, version-neutral download page available for each package):</p>
<ul>
<li><a title="MySQL downloads page" href="http://dev.mysql.com/downloads/">MySQL Server</a></li>
<li><a title="Apache HTTPD downloads page" href="http://httpd.apache.org/download.cgi">Apache web server</a></li>
<li><a title="PHP downloads page" href="http://us3.php.net/downloads.php">PHP</a></li>
<li><a title="Subversion packages page" href="http://subversion.tigris.org/project_packages.html">Subversion</a></li>
</ul>
<p>I strongly suggest you make a directory named &#8220;packages&#8221; or something unambigious in which to download &#038; extract all your files.  This is the way <em>I</em> do it, and it&#8217;s the way I&#8217;ll be doing it throughout this guide.  How <em>you</em> do it is your business, but I can&#8217;t possibly know for sure how you&#8217;ll be doing it ahead of time.  If you have a preferred, possibly <em>superior</em> package directory structure, by all means, do post a comment or let me know some other way.  I&#8217;m always up for doing things the <em>better</em> way, if &#038; when I discover such ways.  However, I&#8217;ll be referring to the packages directory throughout this guide, so now you know to what I&#8217;ll be referring.<br />
While you&#8217;re downloading these packages, now would probably be a good time to start reading up on the documentation for each package. Some more nice links to check out (I have linked to either the most updated documentation available online or, where appropriate, to the documentation related to the specific version covered by this guide):</p>
<ul>
<li><a title="MySQL Server 5.0 online documentation" href="http://dev.mysql.com/doc/refman/5.0/en/index.html">MySQL documentation</a></li>
<li><a title="Apache HTTPD 2.2 online documentation" href="http://httpd.apache.org/docs/2.2/">Apache HTTPD documentation</a></li>
<li><a title="PHP online documentation" href="http://www.php.net/manual/en/">PHP documentation</a></li>
<li><a title="Subversion " href="http://svnbook.red-bean.com/nightly/en/index.html">Subversion documentation (SVN book)</a></li>
</ul>
<p>It&#8217;s probably a good idea to bookmark these pages.  If you&#8217;re using a browser that supports tabs (e.g., Firefox), you might consider making a folder with just these relevant links.  You&#8217;ll probably appreciate it multiple times throughout this guide.</p>
<p>Once you&#8217;re downloads have all finished, it&#8217;s time to start extracting!  I usually download the bzip2 versions of each package, if they are available, because I like the idea of things taking less space where possible.  With modern CPUs, the time difference between gzip compression &#038; bzip2 compression is almost a non-issue, whereas the space savings almost always is significant (10 &#8211; 20% minimum, usually).  At a later date I will probably go into more details about how the packages are structured, but for now, I&#8217;ll just explain how to get the files out &#038; ready to configure.  The command to extract the files will look like the following:</p>
<p>For bzip2-compressed packages:</p>
<pre>tar -xf package-name-version.tar.bz2 --bzip2</pre>
<p>For gzip-compressed packages:</p>
<pre>tar -xf package-name-version.tar.gz --gzip</pre>
<p>This will usually extract out the files into a subdirectory like this:</p>
<pre>~/packages/package-name-version</pre>
<p>This will become important as we do upgrades to newer versions.  As you extract the new versions to their respective directories, you generally won&#8217;t overwrite your older versions.  This is very useful, as you&#8217;ll be able to go to your older versions &#038; retrieve your old configuration settings nearly effortlessly, which will save a lot of time when it comes time configure, compile, &#038; install a newer version of an existing package.</p>
<p>So, once we&#8217;re done, we should have four files in ~/packages and four directories with names similar to the packages.  We&#8217;ll stop here &#038; proceed forward with another session when I&#8217;m feeling up to it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basilgohar.com/2006/05/27/mysql-server-apache-httpd-php-subversion-source-configuration-installation/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

