{"id":9077,"date":"2005-06-15T03:58:55","date_gmt":"2005-06-15T00:58:55","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/2005\/06\/15\/the-magic-of-tla-cacherev\/"},"modified":"2005-10-03T00:19:03","modified_gmt":"2005-10-02T21:19:03","slug":"the-magic-of-tla-cacherev","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2005\/06\/15\/the-magic-of-tla-cacherev\/","title":{"rendered":"The magic of tla cacherev"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>I&#8217;ve stumbled upon an annoying problem while use Gnu Arch.  During the development process, one of the directories in the source tree was given bad permissions (<code>r-xr-x-rx<\/code>).  With the next patch, this directory was removed altogether.  That introduced a problem for <code>tla get<\/code> as it was dying with permission denied error.  That happens because when <code>tla get<\/code> is executed, it gets the base-0 tree version and then applies patch-1, patch-2, &#8230; patch-N in order. Obviously, when it gets to the patch which tries to remove the directory, it fails with &#8220;permission denied&#8221; error.<\/p>\n<p>The fix for this problem turned out to be very simple.  <code>tla get<\/code> can be executed with user root.  It won&#8217;t fail as root has enough permissions to remove the directory.  But what root can also do is <code>tla cacherev project--branch--version--patch-X<\/code>.  This will force arch to pack the whole tree at patch-X into the archive and use it as a unit.  So, next time when someone will <code>tla get<\/code> the tree version greater or equal to patch-X, he will get it straight ahead, without all the pacthing (except for the those paches that follow patch-X).<\/p>\n<p>After <code>tla cacherev<\/code> all users can execute <code>tla get<\/code> without any problems.<\/p>\n<p>This technique can also be used to save some time on the <code>tla get<\/code> operation in those cases where lots of patching needs to be done.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>I&#8217;ve stumbled upon an annoying problem while use Gnu Arch. During the development process, one of the directories in the source tree was given bad permissions (r-xr-x-rx). With the next patch, this directory was removed altogether. That introduced a problem for tla get as it was dying with permission denied error. That happens because when &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2005\/06\/15\/the-magic-of-tla-cacherev\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">The magic of tla cacherev<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1],"tags":[74,1588],"keyring_services":[],"class_list":["post-9077","post","type-post","status-publish","format-standard","hentry","category-general","tag-tips","tag-version-control"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":9079,"url":"https:\/\/mamchenkov.net\/wordpress\/2005\/06\/16\/finding-the-tree-version-in-the-working-directory\/","url_meta":{"origin":9077,"position":0},"title":"Finding the tree version in the working directory","author":"Leonid Mamchenkov","date":"June 16, 2005","format":false,"excerpt":"When using Gnu Arch, once in a while I need to verify that I am in the correct working directory. With long names, patches, and all those branches it is not always that obvious. The shortest way to find the version of the tree in the current working directory is:\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9038,"url":"https:\/\/mamchenkov.net\/wordpress\/2005\/06\/03\/recursively-adding-files-and-directories-in-gnu-arch\/","url_meta":{"origin":9077,"position":1},"title":"Recursively adding files and directories in Gnu Arch","author":"Leonid Mamchenkov","date":"June 3, 2005","format":false,"excerpt":"One of the little annoyances of Gnu Arch is that it does not add files and directories recursively. Not to worry, though. Here is a little shell script that can assist with that task: #!\/bin\/bash # Find all files and directories, skipping .\/{arch} for FILE in `find . -path '.\/{arch}'\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":7309,"url":"https:\/\/mamchenkov.net\/wordpress\/2003\/12\/19\/2003-12-19\/","url_meta":{"origin":9077,"position":2},"title":"2003-12-19","author":"Leonid Mamchenkov","date":"December 19, 2003","format":false,"excerpt":"Yet another status change at PerlMonks. Now I am a bishop (level 8). :) Also, my ranting about the lack of documentation for arch was totally wrong. There is an excellent tutorial\/reference in the distribution. :) Meanwhile, the more I use arch, the more I like it. Another sweet addition\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9078,"url":"https:\/\/mamchenkov.net\/wordpress\/2005\/06\/15\/telling-gnu-arch-the-truth\/","url_meta":{"origin":9077,"position":3},"title":"Telling Gnu Arch the truth","author":"Leonid Mamchenkov","date":"June 15, 2005","format":false,"excerpt":"Yet another problem (and solution) that I've stumbled across while using Gnu Arch. We have two branches in our archive: program--vendor--0.1 and program--local--0.1. Vendor's version has all the source files in SomeDirectory, while our local version has all source files in somedir. Except for the name and few local changes,\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":14795,"url":"https:\/\/mamchenkov.net\/wordpress\/2011\/04\/27\/mysql-export-csv-into-outfile-triggers-access-denied-error\/","url_meta":{"origin":9077,"position":4},"title":"MySQL export CSV into OUTFILE triggers &#8220;access denied&#8221; error","author":"Leonid Mamchenkov","date":"April 27, 2011","format":false,"excerpt":"I came across a weird problem today. \u00a0Gladly, the web is full of solutions, but I'm going to post this anyway, just to have it nearby for the next time. \u00a0I needed to export the results of some query into a CSV file directly from MySQL. \u00a0I prepared my query,\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":8906,"url":"https:\/\/mamchenkov.net\/wordpress\/2005\/04\/27\/subversion-and-file-permissions\/","url_meta":{"origin":9077,"position":5},"title":"Subversion and file permissions","author":"Leonid Mamchenkov","date":"April 27, 2005","format":false,"excerpt":"I've been assigned to a new project at work today. It was decided to use Subversion for version control. I haven't used Subversion before, though I've read a lot about it. Few minutes into it, I've got my first question: \"How can I make Subversion store file permissions and ownership?\".\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/9077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=9077"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/9077\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=9077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=9077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=9077"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=9077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}