CINXE.COM
Barry Kauler - Powered by PPLOG
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd> <html> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("http://bkhome.org/blog/?viewDetailed=01200","20111009225533","https://web.archive.org/","web","/_static/", "1318200933"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta http-equiv="Content-Type" content="text/html;" charset="iso-8859-1"> <meta name="Name" content="Barry Kauler"/> <meta name="Revisit-After" content="1"/> <meta name="Keywords" content="blog, posts, pplog"/> <meta name="Description" content="Barry Kauler Puppy Linux UniPup Developer Daily Blog"/> <title>Barry Kauler - Powered by PPLOG</title> <script language="javascript" type="text/javascript"> // FUNCTION BY SMF FORUMS http://www.simplemachines.org function surroundText(text1, text2, textarea) { // Can a text range be created? if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange) { var caretPos = textarea.caretPos, temp_length = caretPos.text.length; caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2; if (temp_length == 0) { caretPos.moveStart("character", -text2.length); caretPos.moveEnd("character", -text2.length); caretPos.select(); } else textarea.focus(caretPos); } // Mozilla text range wrap. else if (typeof(textarea.selectionStart) != "undefined") { var begin = textarea.value.substr(0, textarea.selectionStart); var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart); var end = textarea.value.substr(textarea.selectionEnd); var newCursorPos = textarea.selectionStart; var scrollPos = textarea.scrollTop; textarea.value = begin + text1 + selection + text2 + end; if (textarea.setSelectionRange) { if (selection.length == 0) textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length); else textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length); textarea.focus(); } textarea.scrollTop = scrollPos; } // Just put them on the end, then. else { textarea.value += text1 + text2; textarea.focus(textarea.value.length - 1); } } </script> <link href="/web/20111009225533cs_/http://bkhome.org/blog/style.css" rel="stylesheet" type="text/css"> </head> <body><div id="all"><div id="menu"> <h1>Main Menu</h1> <a href="?page=1">Home</a> <a href="?do=newEntry">New Entry</a> <a href="?do=archive">Archive</a> <a href="?do=RSS">RSS Feeds</a> <h1>Categories</h1><a href="?viewCat=Bones">Bones</a><a href="?viewCat=General">General</a><a href="?viewCat=Puppy">Puppy</a><a href="?viewCat=Quirky">Quirky</a><a href="?viewCat=Retirement">Retirement</a><a href="?viewCat=Wary">Wary</a><a href="?viewCat=Woof">Woof</a><h1>Search</h1> <form name="form1" method="post"> <input type="text" name="keyword"> <input type="hidden" name="do" value="search"> <input type="submit" name="Submit" value="Search"><br/> By Title <input name="by" type="radio" value="0" checked> By Content <input name="by" type="radio" value="1"> </form> <h1>Latest Entries</h1><a href="?viewDetailed=02534">SeaMonkey 2.4.1 ...nup</a><a href="?viewDetailed=02533">Psync 2.3</a><a href="?viewDetailed=02532">Pmusic 2.1.8</a><a href="?viewDetailed=02531">Slacko RC is out</a><a href="?viewDetailed=02530">Convert hex to decimal</a><a href="?viewDetailed=02529">PupCamera digital camera access</a><a href="?viewDetailed=02528">pupRadio fixed</a><a href="?viewDetailed=02527">Autodetect digital camera</a><a href="?viewDetailed=02526">Gtkam --- useless!!!!!!!</a><a href="?viewDetailed=02525">Generalized logo handling in Woof</a><a href="?viewDetailed=02524">Leafpad fixed</a><h1>Share</h1> <a target="_blank" href="https://web.archive.org/web/20111009225533/http://reddit.com/submit?url=http://bkhome.org/blog/?viewDetailed=01200"> Reddit This <img border="0" src="/web/20111009225533im_/http://bkhome.org/blog/reddit.gif"/></a><h1>Links</h1><a href="https://web.archive.org/web/20111009225533/http://bkhome.org/">BarryK Home</a><a href="https://web.archive.org/web/20111009225533/http://pplog.infogami.com/">Get PPLOG</a><h1>Latest Comments</h1><a href="?viewDetailed=02534" title="Posted by linuxcbon">webkit</a><a href="?viewDetailed=02534" title="Posted by Adi">new entry</a><a href="?viewDetailed=02534" title="Posted by Sage">Midori is....</a><a href="?viewDetailed=02534" title="Posted by session">Mozilla update policy</a><a href="?viewDetailed=02534" title="Posted by linuxcbon">2 favorites</a><a href="?viewDetailed=02534" title="Posted by Terryphi">Seamonkey security fixes</a><a href="?viewDetailed=02499" title="Posted by L18L">Re: Bootup messages</a><a href="?viewDetailed=02533" title="Posted by Sage">Time...</a><a href="?viewDetailed=02534" title="Posted by Sage">Can't say that I'm impressed with... Firefox and SeaMonkey</a><a href="?viewDetailed=02532" title="Posted by BarryK">Re you2pup</a><a href="?viewDetailed=02532" title="Posted by misc Pmusic">zigbert</a><a href="?do=listComments">List All Comments</a><h1>Stats</h1>Users Online: 12<br/>Hits: 184120</div><div id="content"><h1><a href="?viewDetailed=01200">Fossil version control</a></h1>I was recently evaluating <i>Dim</i> version control, see my blog report: <br/> <br/><a href="https://web.archive.org/web/20111009225533/http://bkhome.org/blog/?viewDetailed=01191" target="_blank">http://bkhome.org/blog/?viewDetailed=01191</a> <br/> <br/>Dim is a Bash/Ash shell script, and a PHP script for the web site. Very small, but at this stage there is a lot on the to-do list. <br/> <br/>Then technosaurus informed me about <i>Fossil</i>, a "small and simple" version control system. So, I have now started to evaluate Fossil. <br/> <br/>Fossil homepage: <a href="https://web.archive.org/web/20111009225533/http://www.fossil-scm.org/" target="_blank">http://www.fossil-scm.org/</a> <br/> <br/>...read that, and it sure does seem impressive! <br/> <br/>Fossil has a single binary executable, named 'fossil'. I compiled it and it is 652KB. That's the whole thing, all you need to install Fossil, and the executable even has the Sqlite database compiled statically into the executable -- which is good for uploading to a website that might not have shared Sqlite library (or wrong version). <br/>However, technosaurus has figured out how to compile Fossil against shared Sqlite library if you want. <br/> <br/><b>Install on website</b> <br/>Having had just about zero experience with installing and setting up a version control system (only a limited play with Dim), I was scratching my head. But forged ahead, and it turned out to be a simple procedure, very simple. It will be useful to others I reckon, for me to document it here... <br/> <br/>My first problem was where to upload the 'fossil' executable, as I only have a shared hosting website (with hostgator.com). I can't just bung it into the system /bin directory! Well, I took a punt, and created a 'bin' directory: /home/<username>/bin. <br/>/home/<username> is where I am when I do an ftp or ssh login. <br/>I then uploaded 'fossil' to the 'bin' directory. I set permission of 'bin' to 755 and 'fossil' to 755. <br/> <br/>I then created directories <path to bkhome.org root>/fossil/woof, set permissions at 755. <br/>Inside 'woof' I created a script 'woof.cgi' (755) with this in it: <br/> <br/><div class="code"><pre>#!/home/<username>/bin/fossil <br/>repository: <path to bkhome.org root>/fossil/woof/woof.fossil</pre></div> <br/> <br/>...of course, if you want to do this yourself, you will have to substitute the appropriate text into "< ... >". <br/> <br/>I also created a '.htaccess' file (644) in fossil/woof directory with this in it: <br/> <br/><div class="code"><pre>AddHandler cgi-script .cgi <br/>Options ExecCGI FollowSymLinks <br/>RewriteEngine On <br/>RewriteBase /fossil/woof/ <br/>RewriteRule ^$ woof.cgi</pre></div> <br/> <br/>...I wanted to completely hide the 'woof.cgi' script from the URL that users would see, but I couldn't figure out how to do that. Instead, the above just allows a URL "http://bkhome.org/fossil/woof/" which will run the 'woof.cgi' script -- but then the user still sees the full URL with "woof.cgi" in it. If anyone is an expert on Apache mod_rewrite, advice welcome! <br/> <br/>Almost there. I needed an empty "repository" to get going. I created it like this (locally, on my own computer): <br/> <br/><i>> fossil new woof.fossil</i> <br/> <br/>I then uploaded 'woof.fossil' to fossil/woof by sftp and set permissions to 744. <br/> <br/>Finally, I pointed my web browser here: <br/> <br/><a href="https://web.archive.org/web/20111009225533/http://bkhome.org/fossil/woof/" target="_blank">http://bkhome.org/fossil/woof/</a> <br/> <br/>...hey man, it works! A very pleasant experience, I must say. I just followed my nose, doing logical things to set it up, not many steps required, and it works as advertised. <br/> <br/><b>Install on local computer</b> <br/>Just copy the 'fossil' executable to the execute-path, such as /usr/bin. <br/> <br/>As far as usage goes, well, I'm just getting started. As I commented above, I have zero experience. Yeah, I have had occasion to checkout from various CVS/SVN/GIT hosted projects, and always followed whatever instructions they provided. Beyond that, I know nothing. <br/> <br/>I haven't yet put any files into my 'woof.fossil' repository. It is important to note that the entire project resides in that one file. It has its own internal Sqlite database, and all files, all revisions, will be inside 'woof.fossil'. So, the file may grow quite large! <br/> <br/>An obvious first thing to do is, how to download my online 'woof.fossil' repository to my local computer? <br/> <br/>A good place to look for basic usage instructions is the Fossil Quick Start Guide: <br/><a href="https://web.archive.org/web/20111009225533/http://www.fossil-scm.org/index.html/doc/tip/www/quickstart.wiki" target="_blank">http://www.fossil-scm.org/index.html/doc/tip/www/quickstart.wiki</a> <br/> <br/>Alright, this seems to be what is needed: <br/> <br/><i>> fossil clone http://bkhome.org/fossil/woof/ woof.fossil</i> <br/> <br/>...amazing, it works! Be sure to write down the username and password it reports. <br/> <br/>I notice though, it did not download the configuration I had done to the online woof.fossil -- title and logo -- the downloaded woof.fossil is empty, no default title and logo -- so, is something wrong? <br/> <br/>To use the web interface for looking inside the repository, run: <br/> <br/><i>> fossil ui woof.fossil</i> <br/> <br/>...at the time of writing I have not yet configured 'woof.fossil' to auto-launch the web browser, so manually start your web browser and look at: <br/> <br/><a href="https://web.archive.org/web/20111009225533/http://127.0.0.1:8080/" target="_blank">http://127.0.0.1:8080/</a> <br/> <br/>When finished, CTRL-C in the terminal window to kill the fossil web server. <br/> <br/>The logical next thing to do is checkout a project-tree. That is, extract the latest version of the project from the repository: <br/> <br/><i>> mkdir woof-tree <br/>> cd woof-tree <br/>> fossil open ../woof.fossil</i> <br/> <br/>Now I want to create a file in my project, and add it to the repository: <br/> <br/><i>> echo "test file number one" > NewFile1 <br/>> fossil add NewFile1 <br/>> fossil commit -m "first test commit NewFile1" --nosign <br/>> fossil close <br/>> cd ..</i> <br/> <br/>Problems <br/> <br/>1. <br/>The downloaded repository does not have stuff in it that I had put into the online 'woof.fossil'. <br/> <br/>2. <br/>"Autosync" is by default turned on, and when I ran the above commit, it reported that it was also uploading to my online repository. However, when I point my browser at the online Woof repository, there is nothing, zilch. <br/> <br/>3. <br/>Unfortunately, it gets worse. When I attempted to reopen my local 'woof.fossil': <br/> <br/><i>> cd woof-tree <br/>> fossil open ../woof.fossil</i> <br/><some stuff> <br/>Segmentation fault <br/> <br/>...but it was then open. <br/> <br/>So, the current situation for me is that it does not "just work". Probably I'm doing something wrong, as there are obviously other happy Fossil users. Anyway, I'll keep experimenting. <br/> <br/>I looked at my website error log, and see this: <br/> <br/><i>File does not exist: <path to bkhome.org root>/fossil/woof/xfer</i> <br/> <br/>I did try various ways of uploading. For example, these two: <br/><i>> fossil push http://bkhome.org/fossil/woof/woof.cgi --repository woof.fossil</i> <br/>> fossil push <i>http://bkhome.org/fossil/woof/woof.cgi/xfer --repository woof.fossil</i> <br/>...in both cases got a "bad command". <br/><br/><br/><center><i>Posted on 11 Nov 2009, 9:55 - Category: <a href="?viewCat=Woof">Woof</a><br/><a href="?edit=01200">Edit</a> - <a href="?delete=01200">Delete</a></i></center><br/><br/><h1>Comments:</h1>Posted on <b>11 Nov 2009, 15:43</b> by <b>BarryK</b><br/><i>Fossil progress</i><br/>My attempt to get Fossil working continues in the next blog post: <br/> <br/><a href="https://web.archive.org/web/20111009225533/http://bkhome.org/blog/?viewDetailed=01201" target="_blank">http://bkhome.org/blog/?viewDetailed=01201</a><br/><a href="?deleteComment=01200.0">Delete</a><br/><br/><br/><br/><h1>Add Comment</h1> <form name="submitform" method="post"> <table> <tr> <td>Title</td> <td><input name="title" type="text" id="title"></td> </tr> <tr> <td>Author</td> <td><input name="author" type="text" id="author"></td> </tr><tr> <td> </td> <td><input type="button" style="width:50px;font-weight:bold;" onclick="surroundText('[b]', '[/b]', document.forms.submitform.content); return false;" value="b"/> <input type="button" style="width:50px;font-style:italic;" onclick="surroundText('[i]', '[/i]', document.forms.submitform.content); return false;" value="i"/> <input type="button" style="width:50px;text-decoration:underline;" onclick="surroundText('[u]', '[/u]', document.forms.submitform.content); return false;" value="u"/> <input type="button" style="width:50px;" onclick="surroundText('[url]', '[/url]', document.forms.submitform.content); return false;" value="url"/> <input type="button" style="width:50px;" onclick="surroundText('[img]', '[/img]', document.forms.submitform.content); return false;" value="img"/> <input type="button" style="width:50px;" onclick="surroundText('[code]', '[/code]', document.forms.submitform.content); return false;" value="code"/></td> </tr><tr> <td>Content<br/><a href="?do=showSmilies" target="_blank">Show Smilies</a></td> <td><textarea name="content" id="content" cols="50" rows="10"></textarea></td> </tr> <tr><td>Security Code</td> <td><font face="Verdana, Arial, Helvetica, sans-serif" size="2">7177732</font><input name="originalCode" value="7177732" type="hidden" id="originalCode"></td> </tr> <tr> <td></td> <td><input name="code" type="text" id="code"></td> </tr><tr> <td>Name of the Puppy Linux mascot?</td> <td><input name="question" type="text" id="question"></td> </tr> <tr><tr> <td>Password (So people cannot steal your identity)</td> <td><input name="pass" type="password" id="pass"></td> </tr> <tr> <td> </td> <td><input type="submit" name="Submit" value="Add Comment"><input name="sendComment" value="01200" type="hidden" id="sendComment"></td> </tr> </table> </form></div><div id="footer">Copyright Barry Kauler 2008 - All Rights Reserved - Powered by <a href="https://web.archive.org/web/20111009225533/http://pplog.infogami.com/">PPLOG</a><br>All posts are using GMT 8</div></div></body></html><!-- FILE ARCHIVED ON 22:55:33 Oct 09, 2011 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 00:57:21 Nov 24, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.542 exclusion.robots: 0.025 exclusion.robots.policy: 0.016 esindex: 0.013 cdx.remote: 32.363 LoadShardBlock: 143.588 (3) PetaboxLoader3.datanode: 101.538 (4) PetaboxLoader3.resolve: 195.183 (2) load_resource: 232.655 -->