{"id":3080,"date":"2025-12-24T10:00:29","date_gmt":"2025-12-24T15:00:29","guid":{"rendered":"https:\/\/www.mymiller.name\/wordpress\/?p=3080"},"modified":"2025-12-24T10:00:29","modified_gmt":"2025-12-24T15:00:29","slug":"multi-directory-git","status":"publish","type":"post","link":"https:\/\/www.mymiller.name\/wordpress\/misc\/multi-directory-git\/","title":{"rendered":"Multi-Directory GIT"},"content":{"rendered":"\n<p>You may or may not find this useful.  I work with a my GIT repositories all at the same level.   I like to keep them in sync.  However going to each repository and repeating the commands is a pain.  So I created the following shell script to make my life easier:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/sh\r\necho \"Issuing command: $@\"\r\nfor d in .\/*\/\r\ndo\r\n    (cd \"$d\" &amp;&amp; \"$@\" )\r\ndone<\/code><\/pre>\n\n\n\n<p>To use this, you just need to enter &#8220;mdexec pwd&#8221; to execute the &#8220;pwd&#8221; command in each subdirectory.  The catch on this you will want\/need to run this on each of the subdirectories in your current working directory.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Extending to Multi-Directory GIT<\/h2>\n\n\n\n<p>So we now have our &#8220;mdexec&#8221; command.  Our next step is to create &#8220;mgit&#8221;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/sh\r\nmdexec git $@<\/code><\/pre>\n\n\n\n<p>Now all you need to do is &#8220;mgit pull&#8221;  or any standard git command to execute.  GIT will be substituted into the command and run in each sub-directory.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You may or may not find this useful. I work with a my GIT repositories all at the same level. I like to keep them in sync. However going to each repository and repeating the commands is a pain. So I created the following shell script to make my life easier: To use this, you [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3081,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[10],"tags":[192],"series":[],"class_list":["post-3080","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-misc","tag-shell"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2021\/08\/electrics-3536766_640.jpg?fit=640%2C187&ssl=1","jetpack-related-posts":[{"id":3744,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_config\/3744\/","url_meta":{"origin":3080,"position":0},"title":"Spring Cloud Config: Choosing the Right Backend Storage","author":"Jeffery Miller","date":"December 23, 2025","format":false,"excerpt":"Spring Cloud Config offers a flexible way to manage your application\u2019s configuration. A crucial step is selecting the right backend to store your configuration data. Let\u2019s explore popular options, their pros and cons, configuration details, and the necessary dependencies for Maven and Gradle. 1. Git Pros: Version Control: Leverage Git\u2019s\u2026","rel":"","context":"In &quot;Spring Config&quot;","block_context":{"text":"Spring Config","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_config\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/04\/woman-8696271_640.jpg?fit=438%2C640&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1537,"url":"https:\/\/www.mymiller.name\/wordpress\/docker\/docker-basics\/","url_meta":{"origin":3080,"position":1},"title":"Docker Basics 101","author":"Jeffery Miller","date":"May 10, 2016","format":false,"excerpt":"Building Docker Image Once you create your Dockerfile for your image, you need to build it. \u00a0You do that by running the following command from the directory that contains the Dockerfile. docker build -t <image_name> . Change \"image_name\" to be the name you want to give this image. \u00a0If you\u2026","rel":"","context":"In &quot;Docker&quot;","block_context":{"text":"Docker","link":"https:\/\/www.mymiller.name\/wordpress\/category\/docker\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1886,"url":"https:\/\/www.mymiller.name\/wordpress\/app\/certificate-authority-create-your-own\/","url_meta":{"origin":3080,"position":2},"title":"Certificate Authority creating your own!","author":"Jeffery Miller","date":"September 7, 2016","format":false,"excerpt":"Ready to create your own self signed certificates? \u00a0First step is to crate a Certificate Authority. \u00a0It's easy if you follow the correct steps. We'll break this down into different sections. Install OpenSSL Assuming your on Linux, you will need to issue the command \"sudo apt-get install openssl\". \u00a0This will\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.mymiller.name\/wordpress\/category\/app\/"},"img":{"alt_text":"creating a certificate authority","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2016\/09\/security-1202344_640.png?fit=640%2C360&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2016\/09\/security-1202344_640.png?fit=640%2C360&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2016\/09\/security-1202344_640.png?fit=640%2C360&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3750,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_config\/mastering-multi-profile-environments-with-spring-cloud-config\/","url_meta":{"origin":3080,"position":3},"title":"Mastering Multi-Profile Environments with Spring Cloud Config","author":"Jeffery Miller","date":"December 19, 2025","format":false,"excerpt":"Spring Cloud Config simplifies configuration management for microservices, but its power truly shines when dealing with diverse environments. This post dives into how to leverage multiple profiles with Spring Cloud Config, giving you fine-grained control over your application\u2019s behavior. Why Use Multiple Profiles? Imagine your application needs different settings for\u2026","rel":"","context":"In &quot;Spring Config&quot;","block_context":{"text":"Spring Config","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_config\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/man-69283_1280-jpg.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/man-69283_1280-jpg.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/man-69283_1280-jpg.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/man-69283_1280-jpg.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/man-69283_1280-jpg.avif 3x"},"classes":[]},{"id":3747,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_config\/secure-your-secrets-encrypting-values-with-spring-cloud-config\/","url_meta":{"origin":3080,"position":4},"title":"Secure Your Secrets: Encrypting Values with Spring Cloud Config","author":"Jeffery Miller","date":"December 24, 2025","format":false,"excerpt":"In the world of microservices, Spring Cloud Config provides a centralized way to manage externalized configurations for your applications. But what about sensitive data like database passwords or API keys? That\u2019s where encryption comes in. This blog post will guide you through the process of encrypting your sensitive values using\u2026","rel":"","context":"In &quot;Spring Config&quot;","block_context":{"text":"Spring Config","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_config\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/security-5726869_1280-jpg.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/security-5726869_1280-jpg.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/security-5726869_1280-jpg.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/security-5726869_1280-jpg.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/security-5726869_1280-jpg.avif 3x"},"classes":[]},{"id":2768,"url":"https:\/\/www.mymiller.name\/wordpress\/misc\/shell-script-command-line-arguments\/","url_meta":{"origin":3080,"position":5},"title":"Shell Script Command Line Arguments","author":"Jeffery Miller","date":"December 24, 2025","format":false,"excerpt":"Obviously you do not want to add your Username\/Password to scripts so how can you enter those and make use of execute_cmd and sftp_file without them?\u00a0 Simple provide them as command line arguments in your master script that organizes all the steps. #!\/bin\/bash usage() { \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 echo \"Usage: $0 [-u\u2026","rel":"","context":"In &quot;Miscellaneous&quot;","block_context":{"text":"Miscellaneous","link":"https:\/\/www.mymiller.name\/wordpress\/category\/misc\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2022\/01\/bash-g44a7c159f_640.png?fit=640%2C506&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2022\/01\/bash-g44a7c159f_640.png?fit=640%2C506&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2022\/01\/bash-g44a7c159f_640.png?fit=640%2C506&ssl=1&resize=525%2C300 1.5x"},"classes":[]}],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3080","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/comments?post=3080"}],"version-history":[{"count":1,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3080\/revisions"}],"predecessor-version":[{"id":3082,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3080\/revisions\/3082"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/media\/3081"}],"wp:attachment":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/media?parent=3080"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/categories?post=3080"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/tags?post=3080"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/series?post=3080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}