git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / Atom feed
* [PATCH 0/3] Submodules: have a depth field in the .gitmodules file
@ 2016-05-25 22:00 Stefan Beller
  2016-05-25 22:00 ` [PATCH 1/3] submodule update: make use of the existing fetch_in_submodule function Stefan Beller
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Stefan Beller @ 2016-05-25 22:00 UTC (permalink / raw)
  To: git; +Cc: Jens.Lehmann, gitster, jrnieder, Stefan Beller

Sometimes the history of a submodule is not considered important by
the projects upstream. To make it easier for downstream users, allow
a field 'submodule.<name>.depth' in .gitmodules, which can be used
to indicate the recommended depth.

Stefan Beller (3):
  submodule update: make use of the existing fetch_in_submodule function
  submodule-config: keep `depth` around
  submodule update: learn `--recommended-depth` option

 Documentation/git-submodule.txt | 10 ++++++++--
 builtin/submodule--helper.c     |  8 +++++++-
 git-submodule.sh                | 11 +++++++++--
 submodule-config.c              | 16 ++++++++++++++++
 submodule-config.h              |  1 +
 t/t5614-clone-submodules.sh     | 34 ++++++++++++++++++++++++++++++++++
 6 files changed, 75 insertions(+), 5 deletions(-)

-- 
2.9.0.rc0.3.g892bdd0.dirty

base-commit: 3a0f269e7c82aa3a87323cb7ae04ac5f129f036b

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/3] submodule update: make use of the existing fetch_in_submodule function
  2016-05-25 22:00 [PATCH 0/3] Submodules: have a depth field in the .gitmodules file Stefan Beller
@ 2016-05-25 22:00 ` Stefan Beller
  2016-05-25 22:41   ` Junio C Hamano
  2016-05-25 22:00 ` [PATCH 2/3] submodule-config: keep `depth` around Stefan Beller
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 9+ messages in thread
From: Stefan Beller @ 2016-05-25 22:00 UTC (permalink / raw)
  To: git; +Cc: Jens.Lehmann, gitster, jrnieder, Stefan Beller

Signed-off-by: Stefan Beller <sbeller@google.com>
---
 git-submodule.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/git-submodule.sh b/git-submodule.sh
index 5a4dec0..7698102 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -640,7 +640,7 @@ cmd_update()
 			if test -z "$nofetch"
 			then
 				# Fetch remote before determining tracking $sha1
-				(sanitize_submodule_env; cd "$sm_path" && git-fetch) ||
+				fetch_in_submodule "$sm_path" ||
 				die "$(eval_gettext "Unable to fetch in submodule path '\$sm_path'")"
 			fi
 			remote_name=$(sanitize_submodule_env; cd "$sm_path" && get_default_remote)
-- 
2.9.0.rc0.3.g892bdd0.dirty

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 2/3] submodule-config: keep `depth` around
  2016-05-25 22:00 [PATCH 0/3] Submodules: have a depth field in the .gitmodules file Stefan Beller
  2016-05-25 22:00 ` [PATCH 1/3] submodule update: make use of the existing fetch_in_submodule function Stefan Beller
@ 2016-05-25 22:00 ` Stefan Beller
  2016-05-25 22:00 ` [PATCH 3/3] submodule update: learn `--recommended-depth` option Stefan Beller
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Stefan Beller @ 2016-05-25 22:00 UTC (permalink / raw)
  To: git; +Cc: Jens.Lehmann, gitster, jrnieder, Stefan Beller

The depth field will be used in a later patch by `submodule update`.
To differentiate between the actual depth (which may be different),
we name it recommended depth as the field in the .gitmodules file
is only a recommendation by the project.

Signed-off-by: Stefan Beller <sbeller@google.com>
---
 submodule-config.c | 16 ++++++++++++++++
 submodule-config.h |  1 +
 2 files changed, 17 insertions(+)

diff --git a/submodule-config.c b/submodule-config.c
index debab29..e65a171 100644
--- a/submodule-config.c
+++ b/submodule-config.c
@@ -199,6 +199,7 @@ static struct submodule *lookup_or_create_by_name(struct submodule_cache *cache,
 	submodule->update_strategy.command = NULL;
 	submodule->fetch_recurse = RECURSE_SUBMODULES_NONE;
 	submodule->ignore = NULL;
+	submodule->recommended_depth = -1;
 
 	hashcpy(submodule->gitmodules_sha1, gitmodules_sha1);
 
@@ -353,6 +354,21 @@ static int parse_config(const char *var, const char *value, void *data)
 		else if (parse_submodule_update_strategy(value,
 			 &submodule->update_strategy) < 0)
 				die(_("invalid value for %s"), var);
+	} else if (!strcmp(item.buf, "depth")) {
+		if (!value)
+			ret = config_error_nonbool(var);
+		else if (!me->overwrite &&
+			 submodule->recommended_depth != -1)
+			warn_multiple_config(me->commit_sha1, submodule->name,
+					     "depth");
+		else {
+			int d = strtol(value, NULL, 0);
+			if (d < 0)
+				warning("Invalid parameter '%s' for config option "
+					"'submodule.%s.depth'", value, var);
+			else
+				submodule->recommended_depth = d;
+		}
 	}
 
 	strbuf_release(&name);
diff --git a/submodule-config.h b/submodule-config.h
index e4857f5..5635b6c 100644
--- a/submodule-config.h
+++ b/submodule-config.h
@@ -15,6 +15,7 @@ struct submodule {
 	const char *url;
 	int fetch_recurse;
 	const char *ignore;
+	int recommended_depth;
 	struct submodule_update_strategy update_strategy;
 	/* the sha1 blob id of the responsible .gitmodules file */
 	unsigned char gitmodules_sha1[20];
-- 
2.9.0.rc0.3.g892bdd0.dirty

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 3/3] submodule update: learn `--recommended-depth` option
  2016-05-25 22:00 [PATCH 0/3] Submodules: have a depth field in the .gitmodules file Stefan Beller
  2016-05-25 22:00 ` [PATCH 1/3] submodule update: make use of the existing fetch_in_submodule function Stefan Beller
  2016-05-25 22:00 ` [PATCH 2/3] submodule-config: keep `depth` around Stefan Beller
@ 2016-05-25 22:00 ` Stefan Beller
  2016-05-25 22:38 ` [PATCH 0/3] Submodules: have a depth field in the .gitmodules file Junio C Hamano
  2020-08-02 15:14 ` medoo
  4 siblings, 0 replies; 9+ messages in thread
From: Stefan Beller @ 2016-05-25 22:00 UTC (permalink / raw)
  To: git; +Cc: Jens.Lehmann, gitster, jrnieder, Stefan Beller

Sometimes the history of a submodule is not considered important by
the projects upstream. To make it easier for downstream users, allow
a field 'submodule.<name>.depth' in .gitmodules, which can be used
to indicate the recommended depth.

This field is honored in the initial clone by default, it can be
ignored by giving the `--no-recommended-depth` option.

Signed-off-by: Stefan Beller <sbeller@google.com>
---
 Documentation/git-submodule.txt | 10 ++++++++--
 builtin/submodule--helper.c     |  8 +++++++-
 git-submodule.sh                |  9 ++++++++-
 t/t5614-clone-submodules.sh     | 34 ++++++++++++++++++++++++++++++++++
 4 files changed, 57 insertions(+), 4 deletions(-)

diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt
index 9226c43..c928c0d 100644
--- a/Documentation/git-submodule.txt
+++ b/Documentation/git-submodule.txt
@@ -15,8 +15,9 @@ SYNOPSIS
 'git submodule' [--quiet] init [--] [<path>...]
 'git submodule' [--quiet] deinit [-f|--force] (--all|[--] <path>...)
 'git submodule' [--quiet] update [--init] [--remote] [-N|--no-fetch]
-	      [-f|--force] [--rebase|--merge] [--reference <repository>]
-	      [--depth <depth>] [--recursive] [--jobs <n>] [--] [<path>...]
+	      [--[no-]recommended-depth] [-f|--force] [--rebase|--merge]
+	      [--reference <repository>] [--depth <depth>] [--recursive]
+	      [--jobs <n>] [--] [<path>...]
 'git submodule' [--quiet] summary [--cached|--files] [(-n|--summary-limit) <n>]
 	      [commit] [--] [<path>...]
 'git submodule' [--quiet] foreach [--recursive] <command>
@@ -384,6 +385,11 @@ for linkgit:git-clone[1]'s `--reference` and `--shared` options carefully.
 	clone with a history truncated to the specified number of revisions.
 	See linkgit:git-clone[1]
 
+--[no-]recommended-depth::
+	This option is only valid for the update command.
+	The initial clone of a submodule will use the recommended
+	`submodule.<name>.depth` as provided by the .gitmodules file.
+
 -j <n>::
 --jobs <n>::
 	This option is only valid for the update command.
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 8da263f..70bf2f2 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -581,6 +581,7 @@ struct submodule_update_clone {
 
 	/* configuration parameters which are passed on to the children */
 	int quiet;
+	int use_recommended_depth;
 	const char *reference;
 	const char *depth;
 	const char *recursive_prefix;
@@ -593,7 +594,7 @@ struct submodule_update_clone {
 	unsigned quickstop : 1;
 };
 #define SUBMODULE_UPDATE_CLONE_INIT {0, MODULE_LIST_INIT, 0, \
-	SUBMODULE_UPDATE_STRATEGY_INIT, 0, NULL, NULL, NULL, NULL, \
+	SUBMODULE_UPDATE_STRATEGY_INIT, 0, -1, NULL, NULL, NULL, NULL, \
 	STRING_LIST_INIT_DUP, 0}
 
 
@@ -698,6 +699,9 @@ static int prepare_to_clone_next_submodule(const struct cache_entry *ce,
 		argv_array_push(&child->args, "--quiet");
 	if (suc->prefix)
 		argv_array_pushl(&child->args, "--prefix", suc->prefix, NULL);
+	if (suc->use_recommended_depth && sub->recommended_depth > 0)
+		argv_array_pushf(&child->args, "--depth=%d",
+			sub->recommended_depth);
 	argv_array_pushl(&child->args, "--path", sub->path, NULL);
 	argv_array_pushl(&child->args, "--name", sub->name, NULL);
 	argv_array_pushl(&child->args, "--url", url, NULL);
@@ -780,6 +784,8 @@ static int update_clone(int argc, const char **argv, const char *prefix)
 			      "specified number of revisions")),
 		OPT_INTEGER('j', "jobs", &max_jobs,
 			    N_("parallel jobs")),
+		OPT_BOOL(0, "recommended-depth", &suc.use_recommended_depth,
+			    N_("whether the initial clone should follow the depth recommendation")),
 		OPT__QUIET(&suc.quiet, N_("don't print cloning progress")),
 		OPT_END()
 	};
diff --git a/git-submodule.sh b/git-submodule.sh
index 7698102..794d98a 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -9,7 +9,7 @@ USAGE="[--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <re
    or: $dashless [--quiet] status [--cached] [--recursive] [--] [<path>...]
    or: $dashless [--quiet] init [--] [<path>...]
    or: $dashless [--quiet] deinit [-f|--force] (--all| [--] <path>...)
-   or: $dashless [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--reference <repository>] [--recursive] [--] [<path>...]
+   or: $dashless [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommended-depth] [--reference <repository>] [--recursive] [--] [<path>...]
    or: $dashless [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]
    or: $dashless [--quiet] foreach [--recursive] <command>
    or: $dashless [--quiet] sync [--recursive] [--] [<path>...]"
@@ -559,6 +559,12 @@ cmd_update()
 		--checkout)
 			update="checkout"
 			;;
+		--recommended-depth)
+			recommended_depth="--recommended-depth"
+			;;
+		--no-recommended-depth)
+			recommended_depth="--no-recommended-depth"
+			;;
 		--depth)
 			case "$2" in '') usage ;; esac
 			depth="--depth=$2"
@@ -601,6 +607,7 @@ cmd_update()
 		${update:+--update "$update"} \
 		${reference:+--reference "$reference"} \
 		${depth:+--depth "$depth"} \
+		${recommended_depth:+"$recommended_depth"} \
 		${jobs:+$jobs} \
 		"$@" || echo "#unmatched"
 	} | {
diff --git a/t/t5614-clone-submodules.sh b/t/t5614-clone-submodules.sh
index 62044c5..c25eac0 100755
--- a/t/t5614-clone-submodules.sh
+++ b/t/t5614-clone-submodules.sh
@@ -82,4 +82,38 @@ test_expect_success 'non shallow clone with shallow submodule' '
 	)
 '
 
+test_expect_success 'clone follows recommended depth' '
+	test_when_finished "rm -rf super_clone" &&
+	git config -f .gitmodules submodule.sub.depth 1 &&
+	git add .gitmodules &&
+	git commit -m "recommed depth for sub" &&
+	git clone --recurse-submodules --no-local "file://$pwd/." super_clone &&
+	(
+		cd super_clone &&
+		git log --oneline >lines &&
+		test_line_count = 4 lines
+	) &&
+	(
+		cd super_clone/sub &&
+		git log --oneline >lines &&
+		test_line_count = 1 lines
+	)
+'
+
+test_expect_success 'get unshallow recommended shallow submodule' '
+	test_when_finished "rm -rf super_clone" &&
+	git clone --no-local "file://$pwd/." super_clone &&
+	(
+		cd super_clone &&
+		git submodule update --init --no-recommended-depth &&
+		git log --oneline >lines &&
+		test_line_count = 4 lines
+	) &&
+	(
+		cd super_clone/sub &&
+		git log --oneline >lines &&
+		test_line_count = 3 lines
+	)
+'
+
 test_done
-- 
2.9.0.rc0.3.g892bdd0.dirty

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/3] Submodules: have a depth field in the .gitmodules file
  2016-05-25 22:00 [PATCH 0/3] Submodules: have a depth field in the .gitmodules file Stefan Beller
                   ` (2 preceding siblings ...)
  2016-05-25 22:00 ` [PATCH 3/3] submodule update: learn `--recommended-depth` option Stefan Beller
@ 2016-05-25 22:38 ` Junio C Hamano
  2016-05-25 22:44   ` Stefan Beller
  2020-08-02 15:14 ` medoo
  4 siblings, 1 reply; 9+ messages in thread
From: Junio C Hamano @ 2016-05-25 22:38 UTC (permalink / raw)
  To: Stefan Beller; +Cc: git, Jens.Lehmann, jrnieder

Stefan Beller <sbeller@google.com> writes:

> Sometimes the history of a submodule is not considered important by
> the projects upstream. To make it easier for downstream users, allow
> a field 'submodule.<name>.depth' in .gitmodules, which can be used
> to indicate the recommended depth.

Hmph.  I can understand and certainly agree with the first sentence,
but I am not sure if "depth", if it is anything other than "1" or
"infinity", is a reasonable value.

I'd understand if a project wants to say something like "at this
moment, history before v2.0 tag does not matter", though.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/3] submodule update: make use of the existing fetch_in_submodule function
  2016-05-25 22:00 ` [PATCH 1/3] submodule update: make use of the existing fetch_in_submodule function Stefan Beller
@ 2016-05-25 22:41   ` Junio C Hamano
  2016-05-25 22:45     ` Stefan Beller
  0 siblings, 1 reply; 9+ messages in thread
From: Junio C Hamano @ 2016-05-25 22:41 UTC (permalink / raw)
  To: Stefan Beller; +Cc: git, Jens.Lehmann, jrnieder

Stefan Beller <sbeller@google.com> writes:

> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---
>  git-submodule.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/git-submodule.sh b/git-submodule.sh
> index 5a4dec0..7698102 100755
> --- a/git-submodule.sh
> +++ b/git-submodule.sh
> @@ -640,7 +640,7 @@ cmd_update()
>  			if test -z "$nofetch"
>  			then
>  				# Fetch remote before determining tracking $sha1
> -				(sanitize_submodule_env; cd "$sm_path" && git-fetch) ||
> +				fetch_in_submodule "$sm_path" ||
>  				die "$(eval_gettext "Unable to fetch in submodule path '\$sm_path'")"
>  			fi
>  			remote_name=$(sanitize_submodule_env; cd "$sm_path" && get_default_remote)

Makes sense.  The main topic does not depend on this change, I hope,
as I think it is OK to queue this separately and have it graduate
before 2.9-rc1.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/3] Submodules: have a depth field in the .gitmodules file
  2016-05-25 22:38 ` [PATCH 0/3] Submodules: have a depth field in the .gitmodules file Junio C Hamano
@ 2016-05-25 22:44   ` Stefan Beller
  0 siblings, 0 replies; 9+ messages in thread
From: Stefan Beller @ 2016-05-25 22:44 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Jens Lehmann, Jonathan Nieder

On Wed, May 25, 2016 at 3:38 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Stefan Beller <sbeller@google.com> writes:
>
>> Sometimes the history of a submodule is not considered important by
>> the projects upstream. To make it easier for downstream users, allow
>> a field 'submodule.<name>.depth' in .gitmodules, which can be used
>> to indicate the recommended depth.
>
> Hmph.  I can understand and certainly agree with the first sentence,
> but I am not sure if "depth", if it is anything other than "1" or
> "infinity", is a reasonable value.
>
> I'd understand if a project wants to say something like "at this
> moment, history before v2.0 tag does not matter", though.

I fell for the trap, like all depth related problems fall into.
I came up with the easiest solution to be implemented into Git,
not what the user actually wants.

Background for this change is trying to get a similar thing like the
"clone-depth"
field from repo manifests implemented into Git.
And looking at e.g. [1], this is either non existent (infinity) or 1.
So maybe instead of giving a depth recommendation in the .gitmodules,
we only fill in a boolean config "[non]shallow" which defaults to non shallow
in case of not giving the field.

Thanks,
Stefan



[1] https://android.googlesource.com/platform/manifest/+/master/default.xml

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/3] submodule update: make use of the existing fetch_in_submodule function
  2016-05-25 22:41   ` Junio C Hamano
@ 2016-05-25 22:45     ` Stefan Beller
  0 siblings, 0 replies; 9+ messages in thread
From: Stefan Beller @ 2016-05-25 22:45 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Jens Lehmann, Jonathan Nieder

On Wed, May 25, 2016 at 3:41 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Stefan Beller <sbeller@google.com> writes:
>
>> Signed-off-by: Stefan Beller <sbeller@google.com>
>> ---
>>  git-submodule.sh | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/git-submodule.sh b/git-submodule.sh
>> index 5a4dec0..7698102 100755
>> --- a/git-submodule.sh
>> +++ b/git-submodule.sh
>> @@ -640,7 +640,7 @@ cmd_update()
>>                       if test -z "$nofetch"
>>                       then
>>                               # Fetch remote before determining tracking $sha1
>> -                             (sanitize_submodule_env; cd "$sm_path" && git-fetch) ||
>> +                             fetch_in_submodule "$sm_path" ||
>>                               die "$(eval_gettext "Unable to fetch in submodule path '\$sm_path'")"
>>                       fi
>>                       remote_name=$(sanitize_submodule_env; cd "$sm_path" && get_default_remote)
>
> Makes sense.  The main topic does not depend on this change, I hope,
> as I think it is OK to queue this separately and have it graduate
> before 2.9-rc1.


It doesn't, I should have send this as an independent series/patch.

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/3] Submodules: have a depth field in the .gitmodules file
  2016-05-25 22:00 [PATCH 0/3] Submodules: have a depth field in the .gitmodules file Stefan Beller
                   ` (3 preceding siblings ...)
  2016-05-25 22:38 ` [PATCH 0/3] Submodules: have a depth field in the .gitmodules file Junio C Hamano
@ 2020-08-02 15:14 ` medoo
  4 siblings, 0 replies; 9+ messages in thread
From: medoo @ 2020-08-02 15:14 UTC (permalink / raw)
  To: git

شركة تنظيف
شركة تنظيف 
[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]شركة
تنظيف بالرياض من الشركات التي من الممكن ان تقدم الكثير من الخدمات
[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]>شركة
تنظيف خزانات بالرياض في مهام التنظيف ومن المعروف أهمية النظافة بالنسبة لكل
ربة منزل فهي الأشياء التي لها أهمية كبيرة ولكن في نفس الوقت من الممكن
[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]شركة
تنظيف بالباحة ان تجد ربة المنزل التعب والإرهاق
[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]شركة
تنظيف بجدة في تنظيف
منزلها[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]شركة
تنظيف منازل بجدة وخاصة الكثير من الأماكن التي من الممكن ان يصعب
[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]شركة
تنظيف بابها على ربة المنزل الوصول إليها وهنا يجب على الفور الاستعانة
[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]شركة
تنظيف بالخرج بشركة تنظيف للاستعانة
[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]شركة
تنظيف بعرعر  بخدامتها فهي من الشركات التي لديها الخبرة
[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]شركة
تنظيف بسكاكا  والكفاءة في العمل على تنظيف
[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]شركة
تنظيف بالاحساء الكثير من الأماكن ومنها المنازل
[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]شركة
تنظيف بالدمام  الكبيرة والشقق والقصور والفلل
[url]https://alqudsclean.com/[/url]شركة تنظيف بالرياض وأيضا يختص فريق العمل
التابع لها في الكثير من المهام مثل تنظيف مجالس
[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]شركة
تنظيف بتبوك وتنظيف كنب وأيضا تنظيف الموكيت والسجاد والأنتريهات وأيضا غرف
النوم وغيرها من الأماكن التي من الممكن
[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]
شركة تنظيف بمكة ان تقوم ولذلك فهي من أفضل الشركات التي تهتم بالعمل على تقديم
خدمات مميزة ومن الممكن الاستعانة
[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]شركة
تنظيف بحريملاء بيه وبخدامتها
[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]شركة
تنظيف بخميس مشيط  بكل وقت في تخفيف عبء نظافة المنزل عن ربة المنزل لذلك من
الممكن للاستعانة بيه تنظيف المطابخ والحمامات
[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]شركة
تنظيف بنجران في تنظيف السيراميك والنجف
[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]شركة
تنظيف خزانات بسكاكا والتحف وتنظيف وتعقيم الحمام لأنه من المعروف انه من أكثر
الأماكن
[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]شركة
تنظيف خزانات بعرعر التي من الممكن ان تكثر في الجراثيم والبكتريا
[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]شركة
الصفرات لذلك فهي من أفضل الشركات التي من الممكن ان تستعن بيه 
شركة عزل أسطح
تعتبر شركة عزل أسطح من أفضل الشركات التي من الممكن ان تقدم خدمة
[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]
عزل الأسطح وحمايتها من الكثير من العوامل الضارة فهي من الشركات التي لديها
الخبرة والكفاءة في العمل على عزل أسطح
[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]شركة
عزل فوم بالخرج  بأفضل المواد وأفضل المعدات التي من الممكن ان تساهم بشكل كبير
في تسهيل عملية عزل الأسطح ومن المعروف
[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]
ان في الكثير من العوامل الضارة التي من الممكن ان تتأثر بيه الأسطح منها
الشتاء والإمطار وارتفاع درجة حرارة الشمس وغيرها من العوامل التي من الممكن ان
يعانى منها الأسطح فهي من الشركات التي من الممكن ان تعمل على حماية السطح
الخاص بيك
أنواع عزل أسطح
يوجد نوعان من عزل الأسطح تقوم شركة عزل أسطح بالعمل بيه في عزل الأسطح وتعتبر
من أفضل المواد التي من الممكن ان تتناسب جميع أنواع الأسطح
[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]شركة
عزل اسطح بالباحة العزل المائي من الأنواع التي من الممكن ان يتم عزل بيه
الأسطح وهذا لحمايتها من عوامل الجو الضارة مثل الأمطار وأيضا تسربات المياه
والتي من الممكن ان تسبب الكثير من الخسائر منها تسربات
[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]
المياه داخل الأسقف وجدران وحوائط منزلك
العزل الحراري من الأنواع التي من الممكن ان تتناسب مع الكثير أنواع الأسطح فهي
تساهم بشكل كبير في حماية السطح الخاص بيك من ارتفاع درجة حرارة الجو وخاصة
الشمس الساطعة فهي تساهم في ارتفاع درجة حرارة السطح وبالتالي تسبب شدة حرارة
الجو داخل
منزلك[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]شركة
عزل اسطح بالخرج الاستعانة بشركة عزل أسطح من الحلول الصحيحة التي من الممكن ان
تساهم بشكل كبير في حماية السطح الخاص بيك من الكثير من العوامل الضارة
شركة عزل خزانات
من المعروف ان الخزان مصدر من مصادر مياه الشرب ويجب الحفاظ عليه من الكثير من
العوامل الضارة والتي من الممكن ان تسبب الكثير من التلوث والجراثيم 
[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]شركة
عزل خزانات بسكاكا والتي من الممكن ان تؤثر على صحة أفراد أسرتك لذلك نجد ان
عزل الخزان من المهام التي من الممكن ان تساهم بشكل كبير حماية الخزان من عوامل
ضارة وخطير
[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]شركة
عزل خزانات بالخرج  ومن الشركات التي من الممكن الاستعانة بيه هي شركة عزل
خزانات فهي من الشركات التي لديها الخبرة والكفاءة في العمل على عزل خزانات فهي
من الشركات التي تمتلك أفضل المواد واحدث المعدات
[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]شركة
عزل خزانات بعرعر التي من الممكن ان تستخدم في عملية عزل الخزانات
العزل المائي
يعتبر العزل المائي من الأنواع التي من الممكن ان تستخدم في عزل خزانات فهي من
الأنواع التي من الممكن ان تحمى الخزان الخاص بيك من عوامل الجو الضارة ومن
انتشار البكتريا والجراثيم والطحالب  الضارة بخزان لذلك نجد ان عزل الخزان
بالعزل المائي يحمى خزانات من تسربات المياه من الخارج أو من الداخل وأيضا يحمى
الخزان من الثقوب والشقوق التي من الممكن
[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]
ان يتعرض إليها الخزان الخاص بيك
العزل الايجابي من الأنواع التي من الممكن ان تقوم بحماية الخزان وهذا من
الكثير من عوامل الجو الضارة وارتفاع درجة حرارة الجو في فصل الصيف أو مياه
الشتاء في فصل الشتاء
شركة نقل عفش
من المهام التي من الممكن ان تكون مرهقة على الكثير من الأشخاص هي نقل الأثاث
من مكان إلي مكان أخر ومن المعروف ان عملية نقل عفش
[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]شركة
نقل عفش بالرياض من المهام التي من الممكن ان تحتاج إلى معدات حديثة والى فريق
عمل مدرب على فك وتجهيزه الأثاث وتغليفه ونقل من مكان إلى مكان أخر وأيضا
تركيبة مره أخرى وإعادة ترتيبه في المكان الجديد فهي من الشركات التي لديها
الخبرة والكفاءة وأفضل عمالة مدربة تقوم بالعمل على الكثير من الخدمات والتي من
الممكن ان تسهل على الكثير من الأشخاص مهام نقل الأثاث من مكان إلى مكان أخر
شركة مكافحة حشرات
من المعروف ان انتشار الحشرات من الأشياء التي من الممكن ان تسبب القلق والتوتر
والضيق لجميع أفراد الأسرة ومن الصعب على ربة المنزل ان تتخلص من تواجدها
[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]شركة
مكافحة حشرات بعرعر   بشكل كامل فهي تعانى من انتشار الحشرات الزاحف والطائرة
والقوارض خاصة في فصل الصيف لذلك نجد انه من الممكن الاستعانة بشركة مكافحة
حشرات من أفضل الحلول التي من الممكن ان تقدمها الشركة لتخلص وإبادة الحشرات في
اى مكان خاصة الحشرات الزاحفة مثل الصراصير فهي من أكثر الحشرات انتشار في كل
مكان ومن الممكن ان يتم العمل على إبادتها والتخلص منها وهذا بالاستعانة بشركة
مكافحة حشرات
القضاء على صراصير المطبخ
من المهام التي من الممكن ان تقوم بيه شركة مكافحة حشرات هي القضاء على صراصير
المطبخ فهي من الحشرات التي من الممكن ان يصعب على ربة المنزل ان تقوم بالعمل
عليها
[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]شركة
مكافحة حشرات بسكاكا  وهذا لأنها من أكثر الحشرات التي من الممكن ان تنتشر بشكل
كبير في المطبخ وهذا نظرا لكثرة الرطوبة وانتشار القامة والدهون وبقايا الأكل
في المطبخ فنجد ان المطبخ بيئة مناسبة لتكاثر الصراصير وانتشارها لذلك نجد ان
القضاء
[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]شركة
الصفرات لمكافحة الحشرات   عليها من المهام التي من الممكن ان تقوم بيه شركة
مكافحة حشرات وهذا باستخدام المواد المناسبة لإبادة الصراصير والحد من انتشارها
في المطبخ والكثير من الأماكن الأخرى https://g.co/kgs/jjXKvC
القضاء على النمل الأبيض https://dammam-clean.com/sa/
تعتبر شركة مكافحة حشرات من أفضل الشركات التي لديها الخبرة والكفاءة
[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]شركة
رش مبيدات بالرياض  وأفضل فريق عمل يقوم بالعمل على إبادة الحشرات وخاصة النمل
الأبيض فهي من الحشرات التي من الممكن ان تسبب الكثير من الخسائر المادية
[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]شركة
رش دفان بالرياض  والتي من الممكن ان يعانى منها الكثير من الأشخاص خاصة ان
النمل الأبيض يتغذى إلى الأخشاب من الأثاث أو غيرها من الأشياء وأيضا يتغذى على
الأماكن الاسمنت مثل الأسقف والجدران والأرضيات والبلاط وغيها من الأماكن التي
من الممكن ان يكون انتشار النمل فيها كثيرا لذلك نجد ان الاستعانة
[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]وايت
صرف صحي بالرياض بشركة مكافحة حشرات للقضاء عليه أفضل الحلول
[url]https://lamsa-mesalia.com/[/url]



--
Sent from: http://git.661346.n2.nabble.com/

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-08-02 15:14 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-25 22:00 [PATCH 0/3] Submodules: have a depth field in the .gitmodules file Stefan Beller
2016-05-25 22:00 ` [PATCH 1/3] submodule update: make use of the existing fetch_in_submodule function Stefan Beller
2016-05-25 22:41   ` Junio C Hamano
2016-05-25 22:45     ` Stefan Beller
2016-05-25 22:00 ` [PATCH 2/3] submodule-config: keep `depth` around Stefan Beller
2016-05-25 22:00 ` [PATCH 3/3] submodule update: learn `--recommended-depth` option Stefan Beller
2016-05-25 22:38 ` [PATCH 0/3] Submodules: have a depth field in the .gitmodules file Junio C Hamano
2016-05-25 22:44   ` Stefan Beller
2020-08-02 15:14 ` medoo

git@vger.kernel.org list mirror (unofficial, one of many)

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 git git/ https://public-inbox.org/git \
		git@vger.kernel.org
	public-inbox-index git

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git
	nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git
	nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git
	nntp://news.gmane.io/gmane.comp.version-control.git
 note: .onion URLs require Tor: https://www.torproject.org/

code repositories for the project(s) associated with this inbox:

	https://80x24.org/mirrors/git.git

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git