{"thread":{"id":"42450","subject":"[PATCH 2/3] submodule-config: keep `depth` around","startedAt":"2016-05-25T22:00:03Z","lastAt":"2020-08-02T15:14:08Z","messageCount":9,"participants":["Stefan Beller","Junio C Hamano","medoo"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"287516","messageId":"20160525220006.27138-1-sbeller@google.com","threadId":"42450","inReplyTo":null,"subject":"[PATCH 0/3] Submodules: have a depth field in the .gitmodules file","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2016-05-25T22:00:03Z","receivedAt":"2016-05-25T22:00:03Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"Sometimes the history of a submodule is not considered important by\nthe projects upstream. To make it easier for downstream users, allow\na field 'submodule.<name>.depth' in .gitmodules, which can be used\nto indicate the recommended depth.\n\nStefan Beller (3):\n  submodule update: make use of the existing fetch_in_submodule function\n  submodule-config: keep `depth` around\n  submodule update: learn `--recommended-depth` option\n\n Documentation/git-submodule.txt | 10 ++++++++--\n builtin/submodule--helper.c     |  8 +++++++-\n git-submodule.sh                | 11 +++++++++--\n submodule-config.c              | 16 ++++++++++++++++\n submodule-config.h              |  1 +\n t/t5614-clone-submodules.sh     | 34 ++++++++++++++++++++++++++++++++++\n 6 files changed, 75 insertions(+), 5 deletions(-)\n\n-- \n2.9.0.rc0.3.g892bdd0.dirty\n\nbase-commit: 3a0f269e7c82aa3a87323cb7ae04ac5f129f036b\n"},{"id":"287518","messageId":"20160525220006.27138-2-sbeller@google.com","threadId":"42450","inReplyTo":"20160525220006.27138-1-sbeller@google.com","subject":"[PATCH 1/3] submodule update: make use of the existing fetch_in_submodule function","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2016-05-25T22:00:04Z","receivedAt":"2016-05-25T22:00:04Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"Signed-off-by: Stefan Beller <sbeller@google.com>\n---\n git-submodule.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/git-submodule.sh b/git-submodule.sh\nindex 5a4dec0..7698102 100755\n--- a/git-submodule.sh\n+++ b/git-submodule.sh\n@@ -640,7 +640,7 @@ cmd_update()\n \t\t\tif test -z \"$nofetch\"\n \t\t\tthen\n \t\t\t\t# Fetch remote before determining tracking $sha1\n-\t\t\t\t(sanitize_submodule_env; cd \"$sm_path\" && git-fetch) ||\n+\t\t\t\tfetch_in_submodule \"$sm_path\" ||\n \t\t\t\tdie \"$(eval_gettext \"Unable to fetch in submodule path '\\$sm_path'\")\"\n \t\t\tfi\n \t\t\tremote_name=$(sanitize_submodule_env; cd \"$sm_path\" && get_default_remote)\n-- \n2.9.0.rc0.3.g892bdd0.dirty\n"},{"id":"287515","messageId":"20160525220006.27138-3-sbeller@google.com","threadId":"42450","inReplyTo":"20160525220006.27138-1-sbeller@google.com","subject":"[PATCH 2/3] submodule-config: keep `depth` around","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2016-05-25T22:00:05Z","receivedAt":"2016-05-25T22:00:05Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"The depth field will be used in a later patch by `submodule update`.\nTo differentiate between the actual depth (which may be different),\nwe name it recommended depth as the field in the .gitmodules file\nis only a recommendation by the project.\n\nSigned-off-by: Stefan Beller <sbeller@google.com>\n---\n submodule-config.c | 16 ++++++++++++++++\n submodule-config.h |  1 +\n 2 files changed, 17 insertions(+)\n\ndiff --git a/submodule-config.c b/submodule-config.c\nindex debab29..e65a171 100644\n--- a/submodule-config.c\n+++ b/submodule-config.c\n@@ -199,6 +199,7 @@ static struct submodule *lookup_or_create_by_name(struct submodule_cache *cache,\n \tsubmodule->update_strategy.command = NULL;\n \tsubmodule->fetch_recurse = RECURSE_SUBMODULES_NONE;\n \tsubmodule->ignore = NULL;\n+\tsubmodule->recommended_depth = -1;\n \n \thashcpy(submodule->gitmodules_sha1, gitmodules_sha1);\n \n@@ -353,6 +354,21 @@ static int parse_config(const char *var, const char *value, void *data)\n \t\telse if (parse_submodule_update_strategy(value,\n \t\t\t &submodule->update_strategy) < 0)\n \t\t\t\tdie(_(\"invalid value for %s\"), var);\n+\t} else if (!strcmp(item.buf, \"depth\")) {\n+\t\tif (!value)\n+\t\t\tret = config_error_nonbool(var);\n+\t\telse if (!me->overwrite &&\n+\t\t\t submodule->recommended_depth != -1)\n+\t\t\twarn_multiple_config(me->commit_sha1, submodule->name,\n+\t\t\t\t\t     \"depth\");\n+\t\telse {\n+\t\t\tint d = strtol(value, NULL, 0);\n+\t\t\tif (d < 0)\n+\t\t\t\twarning(\"Invalid parameter '%s' for config option \"\n+\t\t\t\t\t\"'submodule.%s.depth'\", value, var);\n+\t\t\telse\n+\t\t\t\tsubmodule->recommended_depth = d;\n+\t\t}\n \t}\n \n \tstrbuf_release(&name);\ndiff --git a/submodule-config.h b/submodule-config.h\nindex e4857f5..5635b6c 100644\n--- a/submodule-config.h\n+++ b/submodule-config.h\n@@ -15,6 +15,7 @@ struct submodule {\n \tconst char *url;\n \tint fetch_recurse;\n \tconst char *ignore;\n+\tint recommended_depth;\n \tstruct submodule_update_strategy update_strategy;\n \t/* the sha1 blob id of the responsible .gitmodules file */\n \tunsigned char gitmodules_sha1[20];\n-- \n2.9.0.rc0.3.g892bdd0.dirty\n"},{"id":"287517","messageId":"20160525220006.27138-4-sbeller@google.com","threadId":"42450","inReplyTo":"20160525220006.27138-1-sbeller@google.com","subject":"[PATCH 3/3] submodule update: learn `--recommended-depth` option","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2016-05-25T22:00:06Z","receivedAt":"2016-05-25T22:00:06Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"Sometimes the history of a submodule is not considered important by\nthe projects upstream. To make it easier for downstream users, allow\na field 'submodule.<name>.depth' in .gitmodules, which can be used\nto indicate the recommended depth.\n\nThis field is honored in the initial clone by default, it can be\nignored by giving the `--no-recommended-depth` option.\n\nSigned-off-by: Stefan Beller <sbeller@google.com>\n---\n Documentation/git-submodule.txt | 10 ++++++++--\n builtin/submodule--helper.c     |  8 +++++++-\n git-submodule.sh                |  9 ++++++++-\n t/t5614-clone-submodules.sh     | 34 ++++++++++++++++++++++++++++++++++\n 4 files changed, 57 insertions(+), 4 deletions(-)\n\ndiff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt\nindex 9226c43..c928c0d 100644\n--- a/Documentation/git-submodule.txt\n+++ b/Documentation/git-submodule.txt\n@@ -15,8 +15,9 @@ SYNOPSIS\n 'git submodule' [--quiet] init [--] [<path>...]\n 'git submodule' [--quiet] deinit [-f|--force] (--all|[--] <path>...)\n 'git submodule' [--quiet] update [--init] [--remote] [-N|--no-fetch]\n-\t      [-f|--force] [--rebase|--merge] [--reference <repository>]\n-\t      [--depth <depth>] [--recursive] [--jobs <n>] [--] [<path>...]\n+\t      [--[no-]recommended-depth] [-f|--force] [--rebase|--merge]\n+\t      [--reference <repository>] [--depth <depth>] [--recursive]\n+\t      [--jobs <n>] [--] [<path>...]\n 'git submodule' [--quiet] summary [--cached|--files] [(-n|--summary-limit) <n>]\n \t      [commit] [--] [<path>...]\n 'git submodule' [--quiet] foreach [--recursive] <command>\n@@ -384,6 +385,11 @@ for linkgit:git-clone[1]'s `--reference` and `--shared` options carefully.\n \tclone with a history truncated to the specified number of revisions.\n \tSee linkgit:git-clone[1]\n \n+--[no-]recommended-depth::\n+\tThis option is only valid for the update command.\n+\tThe initial clone of a submodule will use the recommended\n+\t`submodule.<name>.depth` as provided by the .gitmodules file.\n+\n -j <n>::\n --jobs <n>::\n \tThis option is only valid for the update command.\ndiff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c\nindex 8da263f..70bf2f2 100644\n--- a/builtin/submodule--helper.c\n+++ b/builtin/submodule--helper.c\n@@ -581,6 +581,7 @@ struct submodule_update_clone {\n \n \t/* configuration parameters which are passed on to the children */\n \tint quiet;\n+\tint use_recommended_depth;\n \tconst char *reference;\n \tconst char *depth;\n \tconst char *recursive_prefix;\n@@ -593,7 +594,7 @@ struct submodule_update_clone {\n \tunsigned quickstop : 1;\n };\n #define SUBMODULE_UPDATE_CLONE_INIT {0, MODULE_LIST_INIT, 0, \\\n-\tSUBMODULE_UPDATE_STRATEGY_INIT, 0, NULL, NULL, NULL, NULL, \\\n+\tSUBMODULE_UPDATE_STRATEGY_INIT, 0, -1, NULL, NULL, NULL, NULL, \\\n \tSTRING_LIST_INIT_DUP, 0}\n \n \n@@ -698,6 +699,9 @@ static int prepare_to_clone_next_submodule(const struct cache_entry *ce,\n \t\targv_array_push(&child->args, \"--quiet\");\n \tif (suc->prefix)\n \t\targv_array_pushl(&child->args, \"--prefix\", suc->prefix, NULL);\n+\tif (suc->use_recommended_depth && sub->recommended_depth > 0)\n+\t\targv_array_pushf(&child->args, \"--depth=%d\",\n+\t\t\tsub->recommended_depth);\n \targv_array_pushl(&child->args, \"--path\", sub->path, NULL);\n \targv_array_pushl(&child->args, \"--name\", sub->name, NULL);\n \targv_array_pushl(&child->args, \"--url\", url, NULL);\n@@ -780,6 +784,8 @@ static int update_clone(int argc, const char **argv, const char *prefix)\n \t\t\t      \"specified number of revisions\")),\n \t\tOPT_INTEGER('j', \"jobs\", &max_jobs,\n \t\t\t    N_(\"parallel jobs\")),\n+\t\tOPT_BOOL(0, \"recommended-depth\", &suc.use_recommended_depth,\n+\t\t\t    N_(\"whether the initial clone should follow the depth recommendation\")),\n \t\tOPT__QUIET(&suc.quiet, N_(\"don't print cloning progress\")),\n \t\tOPT_END()\n \t};\ndiff --git a/git-submodule.sh b/git-submodule.sh\nindex 7698102..794d98a 100755\n--- a/git-submodule.sh\n+++ b/git-submodule.sh\n@@ -9,7 +9,7 @@ USAGE=\"[--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <re\n    or: $dashless [--quiet] status [--cached] [--recursive] [--] [<path>...]\n    or: $dashless [--quiet] init [--] [<path>...]\n    or: $dashless [--quiet] deinit [-f|--force] (--all| [--] <path>...)\n-   or: $dashless [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--reference <repository>] [--recursive] [--] [<path>...]\n+   or: $dashless [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommended-depth] [--reference <repository>] [--recursive] [--] [<path>...]\n    or: $dashless [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]\n    or: $dashless [--quiet] foreach [--recursive] <command>\n    or: $dashless [--quiet] sync [--recursive] [--] [<path>...]\"\n@@ -559,6 +559,12 @@ cmd_update()\n \t\t--checkout)\n \t\t\tupdate=\"checkout\"\n \t\t\t;;\n+\t\t--recommended-depth)\n+\t\t\trecommended_depth=\"--recommended-depth\"\n+\t\t\t;;\n+\t\t--no-recommended-depth)\n+\t\t\trecommended_depth=\"--no-recommended-depth\"\n+\t\t\t;;\n \t\t--depth)\n \t\t\tcase \"$2\" in '') usage ;; esac\n \t\t\tdepth=\"--depth=$2\"\n@@ -601,6 +607,7 @@ cmd_update()\n \t\t${update:+--update \"$update\"} \\\n \t\t${reference:+--reference \"$reference\"} \\\n \t\t${depth:+--depth \"$depth\"} \\\n+\t\t${recommended_depth:+\"$recommended_depth\"} \\\n \t\t${jobs:+$jobs} \\\n \t\t\"$@\" || echo \"#unmatched\"\n \t} | {\ndiff --git a/t/t5614-clone-submodules.sh b/t/t5614-clone-submodules.sh\nindex 62044c5..c25eac0 100755\n--- a/t/t5614-clone-submodules.sh\n+++ b/t/t5614-clone-submodules.sh\n@@ -82,4 +82,38 @@ test_expect_success 'non shallow clone with shallow submodule' '\n \t)\n '\n \n+test_expect_success 'clone follows recommended depth' '\n+\ttest_when_finished \"rm -rf super_clone\" &&\n+\tgit config -f .gitmodules submodule.sub.depth 1 &&\n+\tgit add .gitmodules &&\n+\tgit commit -m \"recommed depth for sub\" &&\n+\tgit clone --recurse-submodules --no-local \"file://$pwd/.\" super_clone &&\n+\t(\n+\t\tcd super_clone &&\n+\t\tgit log --oneline >lines &&\n+\t\ttest_line_count = 4 lines\n+\t) &&\n+\t(\n+\t\tcd super_clone/sub &&\n+\t\tgit log --oneline >lines &&\n+\t\ttest_line_count = 1 lines\n+\t)\n+'\n+\n+test_expect_success 'get unshallow recommended shallow submodule' '\n+\ttest_when_finished \"rm -rf super_clone\" &&\n+\tgit clone --no-local \"file://$pwd/.\" super_clone &&\n+\t(\n+\t\tcd super_clone &&\n+\t\tgit submodule update --init --no-recommended-depth &&\n+\t\tgit log --oneline >lines &&\n+\t\ttest_line_count = 4 lines\n+\t) &&\n+\t(\n+\t\tcd super_clone/sub &&\n+\t\tgit log --oneline >lines &&\n+\t\ttest_line_count = 3 lines\n+\t)\n+'\n+\n test_done\n-- \n2.9.0.rc0.3.g892bdd0.dirty\n"},{"id":"287521","messageId":"xmqqeg8pzrsu.fsf@gitster.mtv.corp.google.com","threadId":"42450","inReplyTo":"20160525220006.27138-1-sbeller@google.com","subject":"Re: [PATCH 0/3] Submodules: have a depth field in the .gitmodules file","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2016-05-25T22:38:57Z","receivedAt":"2016-05-25T22:38:57Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Stefan Beller <sbeller@google.com> writes:\n\n> Sometimes the history of a submodule is not considered important by\n> the projects upstream. To make it easier for downstream users, allow\n> a field 'submodule.<name>.depth' in .gitmodules, which can be used\n> to indicate the recommended depth.\n\nHmph.  I can understand and certainly agree with the first sentence,\nbut I am not sure if \"depth\", if it is anything other than \"1\" or\n\"infinity\", is a reasonable value.\n\nI'd understand if a project wants to say something like \"at this\nmoment, history before v2.0 tag does not matter\", though.\n"},{"id":"287523","messageId":"xmqqa8jdzroz.fsf@gitster.mtv.corp.google.com","threadId":"42450","inReplyTo":"20160525220006.27138-2-sbeller@google.com","subject":"Re: [PATCH 1/3] submodule update: make use of the existing fetch_in_submodule function","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2016-05-25T22:41:16Z","receivedAt":"2016-05-25T22:41:16Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Stefan Beller <sbeller@google.com> writes:\n\n> Signed-off-by: Stefan Beller <sbeller@google.com>\n> ---\n>  git-submodule.sh | 2 +-\n>  1 file changed, 1 insertion(+), 1 deletion(-)\n>\n> diff --git a/git-submodule.sh b/git-submodule.sh\n> index 5a4dec0..7698102 100755\n> --- a/git-submodule.sh\n> +++ b/git-submodule.sh\n> @@ -640,7 +640,7 @@ cmd_update()\n>  \t\t\tif test -z \"$nofetch\"\n>  \t\t\tthen\n>  \t\t\t\t# Fetch remote before determining tracking $sha1\n> -\t\t\t\t(sanitize_submodule_env; cd \"$sm_path\" && git-fetch) ||\n> +\t\t\t\tfetch_in_submodule \"$sm_path\" ||\n>  \t\t\t\tdie \"$(eval_gettext \"Unable to fetch in submodule path '\\$sm_path'\")\"\n>  \t\t\tfi\n>  \t\t\tremote_name=$(sanitize_submodule_env; cd \"$sm_path\" && get_default_remote)\n\nMakes sense.  The main topic does not depend on this change, I hope,\nas I think it is OK to queue this separately and have it graduate\nbefore 2.9-rc1.\n"},{"id":"287526","messageId":"CAGZ79kZOmqcB_q48upzpEnF6Lb9wqt2NMOBhTH7EvE5LfAqabg@mail.gmail.com","threadId":"42450","inReplyTo":"xmqqeg8pzrsu.fsf@gitster.mtv.corp.google.com","subject":"Re: [PATCH 0/3] Submodules: have a depth field in the .gitmodules file","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2016-05-25T22:44:58Z","receivedAt":"2016-05-25T22:44:58Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On Wed, May 25, 2016 at 3:38 PM, Junio C Hamano <gitster@pobox.com> wrote:\n> Stefan Beller <sbeller@google.com> writes:\n>\n>> Sometimes the history of a submodule is not considered important by\n>> the projects upstream. To make it easier for downstream users, allow\n>> a field 'submodule.<name>.depth' in .gitmodules, which can be used\n>> to indicate the recommended depth.\n>\n> Hmph.  I can understand and certainly agree with the first sentence,\n> but I am not sure if \"depth\", if it is anything other than \"1\" or\n> \"infinity\", is a reasonable value.\n>\n> I'd understand if a project wants to say something like \"at this\n> moment, history before v2.0 tag does not matter\", though.\n\nI fell for the trap, like all depth related problems fall into.\nI came up with the easiest solution to be implemented into Git,\nnot what the user actually wants.\n\nBackground for this change is trying to get a similar thing like the\n\"clone-depth\"\nfield from repo manifests implemented into Git.\nAnd looking at e.g. [1], this is either non existent (infinity) or 1.\nSo maybe instead of giving a depth recommendation in the .gitmodules,\nwe only fill in a boolean config \"[non]shallow\" which defaults to non shallow\nin case of not giving the field.\n\nThanks,\nStefan\n\n\n\n[1] https://android.googlesource.com/platform/manifest/+/master/default.xml\n"},{"id":"287527","messageId":"CAGZ79kZHZPqKGW6MEt1QZa=3wb+6jQC=pZ4uJJq4KN=bFGFoeA@mail.gmail.com","threadId":"42450","inReplyTo":"xmqqa8jdzroz.fsf@gitster.mtv.corp.google.com","subject":"Re: [PATCH 1/3] submodule update: make use of the existing fetch_in_submodule function","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2016-05-25T22:45:42Z","receivedAt":"2016-05-25T22:45:42Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On Wed, May 25, 2016 at 3:41 PM, Junio C Hamano <gitster@pobox.com> wrote:\n> Stefan Beller <sbeller@google.com> writes:\n>\n>> Signed-off-by: Stefan Beller <sbeller@google.com>\n>> ---\n>>  git-submodule.sh | 2 +-\n>>  1 file changed, 1 insertion(+), 1 deletion(-)\n>>\n>> diff --git a/git-submodule.sh b/git-submodule.sh\n>> index 5a4dec0..7698102 100755\n>> --- a/git-submodule.sh\n>> +++ b/git-submodule.sh\n>> @@ -640,7 +640,7 @@ cmd_update()\n>>                       if test -z \"$nofetch\"\n>>                       then\n>>                               # Fetch remote before determining tracking $sha1\n>> -                             (sanitize_submodule_env; cd \"$sm_path\" && git-fetch) ||\n>> +                             fetch_in_submodule \"$sm_path\" ||\n>>                               die \"$(eval_gettext \"Unable to fetch in submodule path '\\$sm_path'\")\"\n>>                       fi\n>>                       remote_name=$(sanitize_submodule_env; cd \"$sm_path\" && get_default_remote)\n>\n> Makes sense.  The main topic does not depend on this change, I hope,\n> as I think it is OK to queue this separately and have it graduate\n> before 2.9-rc1.\n\n\nIt doesn't, I should have send this as an independent series/patch.\n\nThanks,\nStefan\n"},{"id":"402653","messageId":"1596381246101-0.post@n2.nabble.com","threadId":"42450","inReplyTo":"20160525220006.27138-1-sbeller@google.com","subject":"Re: [PATCH 0/3] Submodules: have a depth field in the .gitmodules file","fromName":"medoo","fromEmail":"mmaaoud333@gmail.com","sentAt":"2020-08-02T15:14:06Z","receivedAt":"2020-08-02T15:14:08Z","isPatch":true,"sender":{"key":"mmaaoud333@gmail.com","avatar":null},"body":"شركة تنظيف\nشركة تنظيف \n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%AA%D9%86%D8%B8%D9%8A%D9%81-%D8%A8%D8%A7%D9%84%D8%B1%D9%8A%D8%A7%D8%B6/[/url]شركة\nتنظيف بالرياض من الشركات التي من الممكن ان تقدم الكثير من الخدمات\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%AA%D9%86%D8%B8%D9%8A%D9%81-%D8%AE%D8%B2%D8%A7%D9%86%D8%A7%D8%AA-%D8%A8%D8%A7%D9%84%D8%B1%D9%8A%D8%A7%D8%B6/[/url]>شركة\nتنظيف خزانات بالرياض في مهام التنظيف ومن المعروف أهمية النظافة بالنسبة لكل\nربة منزل فهي الأشياء التي لها أهمية كبيرة ولكن في نفس الوقت من الممكن\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%AA%D9%86%D8%B8%D9%8A%D9%81-%D8%A8%D8%A7%D9%84%D8%A8%D8%A7%D8%AD%D8%A9/[/url]شركة\nتنظيف بالباحة ان تجد ربة المنزل التعب والإرهاق\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d8%a8%d8%ac%d8%af%d8%a9/[/url]شركة\nتنظيف بجدة في تنظيف\nمنزلها[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d9%85%d9%86%d8%a7%d8%b2%d9%84-%d8%a8%d8%ac%d8%af%d8%a9/[/url]شركة\nتنظيف منازل بجدة وخاصة الكثير من الأماكن التي من الممكن ان يصعب\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d8%a8%d8%a7%d8%a8%d9%87%d8%a7/[/url]شركة\nتنظيف بابها على ربة المنزل الوصول إليها وهنا يجب على الفور الاستعانة\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d8%a8%d8%a7%d9%84%d8%ae%d8%b1%d8%ac/[/url]شركة\nتنظيف بالخرج بشركة تنظيف للاستعانة\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d8%a8%d8%b9%d8%b1%d8%b9%d8%b1/[/url]شركة\nتنظيف بعرعر  بخدامتها فهي من الشركات التي لديها الخبرة\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d8%a8%d8%b3%d9%83%d8%a7%d9%83%d8%a7/[/url]شركة\nتنظيف بسكاكا  والكفاءة في العمل على تنظيف\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d8%a8%d8%a7%d9%84%d8%a7%d8%ad%d8%b3%d8%a7%d8%a1/[/url]شركة\nتنظيف بالاحساء الكثير من الأماكن ومنها المنازل\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d8%a8%d8%a7%d9%84%d8%af%d9%85%d8%a7%d9%85/[/url]شركة\nتنظيف بالدمام  الكبيرة والشقق والقصور والفلل\n[url]https://alqudsclean.com/[/url]شركة تنظيف بالرياض وأيضا يختص فريق العمل\nالتابع لها في الكثير من المهام مثل تنظيف مجالس\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d8%a8%d8%aa%d8%a8%d9%88%d9%83/[/url]شركة\nتنظيف بتبوك وتنظيف كنب وأيضا تنظيف الموكيت والسجاد والأنتريهات وأيضا غرف\nالنوم وغيرها من الأماكن التي من الممكن\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d8%a8%d9%85%d9%83%d8%a9/[/url]\nشركة تنظيف بمكة ان تقوم ولذلك فهي من أفضل الشركات التي تهتم بالعمل على تقديم\nخدمات مميزة ومن الممكن الاستعانة\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%AA%D9%86%D8%B8%D9%8A%D9%81-%D8%A8%D8%AD%D8%B1%D9%8A%D9%85%D9%84%D8%A7%D8%A1/[/url]شركة\nتنظيف بحريملاء بيه وبخدامتها\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d8%a8%d8%ae%d9%85%d9%8a%d8%b3-%d9%85%d8%b4%d9%8a%d8%b7/[/url]شركة\nتنظيف بخميس مشيط  بكل وقت في تخفيف عبء نظافة المنزل عن ربة المنزل لذلك من\nالممكن للاستعانة بيه تنظيف المطابخ والحمامات\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%aa%d9%86%d8%b8%d9%8a%d9%81-%d8%a8%d9%86%d8%ac%d8%b1%d8%a7%d9%86/[/url]شركة\nتنظيف بنجران في تنظيف السيراميك والنجف\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%AA%D9%86%D8%B8%D9%8A%D9%81-%D8%AE%D8%B2%D8%A7%D9%86%D8%A7%D8%AA-%D8%A8%D8%B3%D9%83%D8%A7%D9%83%D8%A7/[/url]شركة\nتنظيف خزانات بسكاكا والتحف وتنظيف وتعقيم الحمام لأنه من المعروف انه من أكثر\nالأماكن\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%AA%D9%86%D8%B8%D9%8A%D9%81-%D8%AE%D8%B2%D8%A7%D9%86%D8%A7%D8%AA-%D8%A8%D8%B9%D8%B1%D8%B9%D8%B1/[/url]شركة\nتنظيف خزانات بعرعر التي من الممكن ان تكثر في الجراثيم والبكتريا\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%A7%D9%84%D8%B5%D9%81%D8%B1%D8%A7%D8%AA-%20%D9%84%D9%84%D8%AA%D9%86%D8%B8%D9%8A%D9%81-%D8%A8%D8%A7%D9%84%D8%B1%D9%8A%D8%A7%D8%B6/[/url]شركة\nالصفرات لذلك فهي من أفضل الشركات التي من الممكن ان تستعن بيه \nشركة عزل أسطح\nتعتبر شركة عزل أسطح من أفضل الشركات التي من الممكن ان تقدم خدمة\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%b9%d8%b2%d9%84-%d8%ae%d8%b2%d8%a7%d9%86%d8%a7%d8%aa-%d8%a8%d8%b9%d8%b1%d8%b9%d8%b1/[/url]\nعزل الأسطح وحمايتها من الكثير من العوامل الضارة فهي من الشركات التي لديها\nالخبرة والكفاءة في العمل على عزل أسطح\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%b9%d8%b2%d9%84-%d9%81%d9%88%d9%85-%d8%a8%d8%a7%d9%84%d8%ae%d8%b1%d8%ac/[/url]شركة\nعزل فوم بالخرج  بأفضل المواد وأفضل المعدات التي من الممكن ان تساهم بشكل كبير\nفي تسهيل عملية عزل الأسطح ومن المعروف\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%b9%d8%b2%d9%84-%d8%ae%d8%b2%d8%a7%d9%86%d8%a7%d8%aa-%d8%a8%d8%b3%d9%83%d8%a7%d9%83%d8%a7/[/url]\nان في الكثير من العوامل الضارة التي من الممكن ان تتأثر بيه الأسطح منها\nالشتاء والإمطار وارتفاع درجة حرارة الشمس وغيرها من العوامل التي من الممكن ان\nيعانى منها الأسطح فهي من الشركات التي من الممكن ان تعمل على حماية السطح\nالخاص بيك\nأنواع عزل أسطح\nيوجد نوعان من عزل الأسطح تقوم شركة عزل أسطح بالعمل بيه في عزل الأسطح وتعتبر\nمن أفضل المواد التي من الممكن ان تتناسب جميع أنواع الأسطح\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%b9%d8%b2%d9%84-%d8%a7%d8%b3%d8%b7%d8%ad-%d8%a8%d8%a7%d9%84%d8%a8%d8%a7%d8%ad%d8%a9/[/url]شركة\nعزل اسطح بالباحة العزل المائي من الأنواع التي من الممكن ان يتم عزل بيه\nالأسطح وهذا لحمايتها من عوامل الجو الضارة مثل الأمطار وأيضا تسربات المياه\nوالتي من الممكن ان تسبب الكثير من الخسائر منها تسربات\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%b9%d8%b2%d9%84-%d8%a7%d8%b3%d8%b7%d8%ad-%d8%a8%d8%b9%d8%b1%d8%b9%d8%b1/[/url]\nالمياه داخل الأسقف وجدران وحوائط منزلك\nالعزل الحراري من الأنواع التي من الممكن ان تتناسب مع الكثير أنواع الأسطح فهي\nتساهم بشكل كبير في حماية السطح الخاص بيك من ارتفاع درجة حرارة الجو وخاصة\nالشمس الساطعة فهي تساهم في ارتفاع درجة حرارة السطح وبالتالي تسبب شدة حرارة\nالجو داخل\nمنزلك[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%B9%D8%B2%D9%84-%D8%A7%D8%B3%D8%B7%D8%AD-%D8%A8%D8%A7%D9%84%D8%AE%D8%B1%D8%AC/[/url]شركة\nعزل اسطح بالخرج الاستعانة بشركة عزل أسطح من الحلول الصحيحة التي من الممكن ان\nتساهم بشكل كبير في حماية السطح الخاص بيك من الكثير من العوامل الضارة\nشركة عزل خزانات\nمن المعروف ان الخزان مصدر من مصادر مياه الشرب ويجب الحفاظ عليه من الكثير من\nالعوامل الضارة والتي من الممكن ان تسبب الكثير من التلوث والجراثيم \n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%B9%D8%B2%D9%84-%D8%AE%D8%B2%D8%A7%D9%86%D8%A7%D8%AA-%D8%A8%D8%B3%D9%83%D8%A7%D9%83%D8%A7/[/url]شركة\nعزل خزانات بسكاكا والتي من الممكن ان تؤثر على صحة أفراد أسرتك لذلك نجد ان\nعزل الخزان من المهام التي من الممكن ان تساهم بشكل كبير حماية الخزان من عوامل\nضارة وخطير\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%B9%D8%B2%D9%84-%D8%AE%D8%B2%D8%A7%D9%86%D8%A7%D8%AA-%D8%A8%D8%A7%D9%84%D8%AE%D8%B1%D8%AC/[/url]شركة\nعزل خزانات بالخرج  ومن الشركات التي من الممكن الاستعانة بيه هي شركة عزل\nخزانات فهي من الشركات التي لديها الخبرة والكفاءة في العمل على عزل خزانات فهي\nمن الشركات التي تمتلك أفضل المواد واحدث المعدات\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%B9%D8%B2%D9%84-%D8%AE%D8%B2%D8%A7%D9%86%D8%A7%D8%AA-%D8%A8%D8%B9%D8%B1%D8%B9%D8%B1/[/url]شركة\nعزل خزانات بعرعر التي من الممكن ان تستخدم في عملية عزل الخزانات\nالعزل المائي\nيعتبر العزل المائي من الأنواع التي من الممكن ان تستخدم في عزل خزانات فهي من\nالأنواع التي من الممكن ان تحمى الخزان الخاص بيك من عوامل الجو الضارة ومن\nانتشار البكتريا والجراثيم والطحالب  الضارة بخزان لذلك نجد ان عزل الخزان\nبالعزل المائي يحمى خزانات من تسربات المياه من الخارج أو من الداخل وأيضا يحمى\nالخزان من الثقوب والشقوق التي من الممكن\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%B9%D8%B2%D9%84-%D8%A7%D8%B3%D8%B7%D8%AD-%D8%A8%D8%B3%D9%83%D8%A7%D9%83%D8%A7/[/url]\nان يتعرض إليها الخزان الخاص بيك\nالعزل الايجابي من الأنواع التي من الممكن ان تقوم بحماية الخزان وهذا من\nالكثير من عوامل الجو الضارة وارتفاع درجة حرارة الجو في فصل الصيف أو مياه\nالشتاء في فصل الشتاء\nشركة نقل عفش\nمن المهام التي من الممكن ان تكون مرهقة على الكثير من الأشخاص هي نقل الأثاث\nمن مكان إلي مكان أخر ومن المعروف ان عملية نقل عفش\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D9%86%D9%82%D9%84-%D8%B9%D9%81%D8%B4-%D8%A8%D8%A7%D9%84%D8%B1%D9%8A%D8%A7%D8%B6/[/url]شركة\nنقل عفش بالرياض من المهام التي من الممكن ان تحتاج إلى معدات حديثة والى فريق\nعمل مدرب على فك وتجهيزه الأثاث وتغليفه ونقل من مكان إلى مكان أخر وأيضا\nتركيبة مره أخرى وإعادة ترتيبه في المكان الجديد فهي من الشركات التي لديها\nالخبرة والكفاءة وأفضل عمالة مدربة تقوم بالعمل على الكثير من الخدمات والتي من\nالممكن ان تسهل على الكثير من الأشخاص مهام نقل الأثاث من مكان إلى مكان أخر\nشركة مكافحة حشرات\nمن المعروف ان انتشار الحشرات من الأشياء التي من الممكن ان تسبب القلق والتوتر\nوالضيق لجميع أفراد الأسرة ومن الصعب على ربة المنزل ان تتخلص من تواجدها\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d9%85%d9%83%d8%a7%d9%81%d8%ad%d8%a9-%d8%ad%d8%b4%d8%b1%d8%a7%d8%aa-%d8%a8%d8%b9%d8%b1%d8%b9%d8%b1/[/url]شركة\nمكافحة حشرات بعرعر   بشكل كامل فهي تعانى من انتشار الحشرات الزاحف والطائرة\nوالقوارض خاصة في فصل الصيف لذلك نجد انه من الممكن الاستعانة بشركة مكافحة\nحشرات من أفضل الحلول التي من الممكن ان تقدمها الشركة لتخلص وإبادة الحشرات في\nاى مكان خاصة الحشرات الزاحفة مثل الصراصير فهي من أكثر الحشرات انتشار في كل\nمكان ومن الممكن ان يتم العمل على إبادتها والتخلص منها وهذا بالاستعانة بشركة\nمكافحة حشرات\nالقضاء على صراصير المطبخ\nمن المهام التي من الممكن ان تقوم بيه شركة مكافحة حشرات هي القضاء على صراصير\nالمطبخ فهي من الحشرات التي من الممكن ان يصعب على ربة المنزل ان تقوم بالعمل\nعليها\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d9%85%d9%83%d8%a7%d9%81%d8%ad%d8%a9-%d8%ad%d8%b4%d8%b1%d8%a7%d8%aa-%d8%a8%d8%b3%d9%83%d8%a7%d9%83%d8%a7/[/url]شركة\nمكافحة حشرات بسكاكا  وهذا لأنها من أكثر الحشرات التي من الممكن ان تنتشر بشكل\nكبير في المطبخ وهذا نظرا لكثرة الرطوبة وانتشار القامة والدهون وبقايا الأكل\nفي المطبخ فنجد ان المطبخ بيئة مناسبة لتكاثر الصراصير وانتشارها لذلك نجد ان\nالقضاء\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%A7%D9%84%D8%B5%D9%81%D8%B1%D8%A7%D8%AA-%D9%84%D9%85%D9%83%D8%A7%D9%81%D8%AD%D8%A9-%D8%A7%D9%84%D8%AD%D8%B4%D8%B1%D8%A7%D8%AA/[/url]شركة\nالصفرات لمكافحة الحشرات   عليها من المهام التي من الممكن ان تقوم بيه شركة\nمكافحة حشرات وهذا باستخدام المواد المناسبة لإبادة الصراصير والحد من انتشارها\nفي المطبخ والكثير من الأماكن الأخرى https://g.co/kgs/jjXKvC\nالقضاء على النمل الأبيض https://dammam-clean.com/sa/\nتعتبر شركة مكافحة حشرات من أفضل الشركات التي لديها الخبرة والكفاءة\n[url]https://rawdat-alriyad.com/%d8%b4%d8%b1%d9%83%d8%a9-%d8%b1%d8%b4-%d9%85%d8%a8%d9%8a%d8%af%d8%a7%d8%aa-%d8%a8%d8%a7%d9%84%d8%b1%d9%8a%d8%a7%d8%b6/[/url]شركة\nرش مبيدات بالرياض  وأفضل فريق عمل يقوم بالعمل على إبادة الحشرات وخاصة النمل\nالأبيض فهي من الحشرات التي من الممكن ان تسبب الكثير من الخسائر المادية\n[url]https://rawdat-alriyad.com/%D8%B4%D8%B1%D9%83%D8%A9-%D8%B1%D8%B4-%D8%AF%D9%81%D8%A7%D9%86-%D8%A8%D8%A7%D9%84%D8%B1%D9%8A%D8%A7%D8%B6/[/url]شركة\nرش دفان بالرياض  والتي من الممكن ان يعانى منها الكثير من الأشخاص خاصة ان\nالنمل الأبيض يتغذى إلى الأخشاب من الأثاث أو غيرها من الأشياء وأيضا يتغذى على\nالأماكن الاسمنت مثل الأسقف والجدران والأرضيات والبلاط وغيها من الأماكن التي\nمن الممكن ان يكون انتشار النمل فيها كثيرا لذلك نجد ان الاستعانة\n[url]https://rawdat-alriyad.com/%D9%88%D8%A7%D9%8A%D8%AA-%D8%B5%D8%B1%D9%81-%D8%B5%D8%AD%D9%8A-%D8%A8%D8%A7%D9%84%D8%B1%D9%8A%D8%A7%D8%B6/[/url]وايت\nصرف صحي بالرياض بشركة مكافحة حشرات للقضاء عليه أفضل الحلول\n[url]https://lamsa-mesalia.com/[/url]\n\n\n\n--\nSent from: http://git.661346.n2.nabble.com/"}]}