* [PATCH] git-clone.txt: Adjust note to --shared for new pruning behavior of git-gc
@ 2008-04-03 18:26 Brandon Casey
2008-04-03 19:14 ` Johannes Schindelin
0 siblings, 1 reply; 6+ messages in thread
From: Brandon Casey @ 2008-04-03 18:26 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Git Mailing List
Since git-gc now always calls prune, even with --auto, unreferenced objects
may be removed by more operations than just git-gc. This is important for
clones created using --shared or --reference.
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
---
Documentation/git-clone.txt | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 9758243..d3ab00b 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -65,10 +65,12 @@ OPTIONS
+
*NOTE*: this is a possibly dangerous operation; do *not* use
it unless you understand what it does. If you clone your
-repository using this option, then delete branches in the
-source repository and then run linkgit:git-gc[1] using the
-'--prune' option in the source repository, it may remove
-objects which are referenced by the cloned repository.
+repository using this option and then delete branches in the
+source repository, some objects may become unreferenced (or dangling).
+These objects may be removed by normal git operations (such as git-commit[1])
+which automatically call git-gc[1]. If these objects are removed and
+were referenced by the cloned repository, then the cloned repository
+will become corrupt.
@@ -79,6 +81,8 @@ objects which are referenced by the cloned repository.
an already existing repository as an alternate will
require fewer objects to be copied from the repository
being cloned, reducing network and local storage costs.
++
+*NOTE*: see NOTE to --shared option.
--quiet::
-q::
--
1.5.5.rc3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] git-clone.txt: Adjust note to --shared for new pruning behavior of git-gc
2008-04-03 18:26 [PATCH] git-clone.txt: Adjust note to --shared for new pruning behavior of git-gc Brandon Casey
@ 2008-04-03 19:14 ` Johannes Schindelin
2008-04-03 20:51 ` Brandon Casey
0 siblings, 1 reply; 6+ messages in thread
From: Johannes Schindelin @ 2008-04-03 19:14 UTC (permalink / raw)
To: Brandon Casey; +Cc: Junio C Hamano, Git Mailing List
Hi,
On Thu, 3 Apr 2008, Brandon Casey wrote:
> diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
> index 9758243..d3ab00b 100644
> --- a/Documentation/git-clone.txt
> +++ b/Documentation/git-clone.txt
> @@ -65,10 +65,12 @@ OPTIONS
> +
> *NOTE*: this is a possibly dangerous operation; do *not* use
> it unless you understand what it does. If you clone your
> -repository using this option, then delete branches in the
> -source repository and then run linkgit:git-gc[1] using the
> -'--prune' option in the source repository, it may remove
> -objects which are referenced by the cloned repository.
> +repository using this option and then delete branches in the
> +source repository, some objects may become unreferenced (or dangling).
> +These objects may be removed by normal git operations (such as git-commit[1])
> +which automatically call git-gc[1]. If these objects are removed and
> +were referenced by the cloned repository, then the cloned repository
> +will become corrupt.
Please note that if you delete a branch _after_ running git-gc, the next
git-gc would remove those objects anyway, since the first git-gc packed
the objects, and they were therefore no longer dangling.
So it was an issue before the new git-gc behaviour anyway.
Ciao,
Dscho
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] git-clone.txt: Adjust note to --shared for new pruning behavior of git-gc
2008-04-03 20:51 ` Brandon Casey
@ 2008-04-03 20:01 ` Johannes Schindelin
2008-04-04 6:49 ` Jakub Narebski
0 siblings, 1 reply; 6+ messages in thread
From: Johannes Schindelin @ 2008-04-03 20:01 UTC (permalink / raw)
To: Brandon Casey; +Cc: Junio C Hamano, Git Mailing List
Hi,
On Thu, 3 Apr 2008, Brandon Casey wrote:
> Johannes Schindelin wrote:
>
> > On Thu, 3 Apr 2008, Brandon Casey wrote:
> >
> >> diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
> >> index 9758243..d3ab00b 100644
> >> --- a/Documentation/git-clone.txt
> >> +++ b/Documentation/git-clone.txt
> >> @@ -65,10 +65,12 @@ OPTIONS
> >> +
> >> *NOTE*: this is a possibly dangerous operation; do *not* use
> >> it unless you understand what it does. If you clone your
> >> -repository using this option, then delete branches in the
> >> -source repository and then run linkgit:git-gc[1] using the
> >> -'--prune' option in the source repository, it may remove
> >> -objects which are referenced by the cloned repository.
> >> +repository using this option and then delete branches in the
> >> +source repository, some objects may become unreferenced (or dangling).
> >> +These objects may be removed by normal git operations (such as git-commit[1])
> >> +which automatically call git-gc[1]. If these objects are removed and
> >> +were referenced by the cloned repository, then the cloned repository
> >> +will become corrupt.
> >
> > Please note that if you delete a branch _after_ running git-gc, the next
> > git-gc would remove those objects anyway, since the first git-gc packed
> > the objects, and they were therefore no longer dangling.
>
> I thought they would be retained unless --prune was used. git-gc uses the
> -A option to repack when --prune is not used and -a when --prune is used.
Oh, you're right. I forgot.
> But what I was really trying to point out in the documentation changes
> was that now _other_ commands such as git-commit are also unsafe since
> they call 'git-gc --auto' and could cause loose unreferenced objects to
> be deleted. So it is not enough to just avoid calling git-gc when
> dealing with a --shared repository.
Right. Hmm. I missed that completely when I thought about prune
--expire.
Sorry,
Dscho
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] git-clone.txt: Adjust note to --shared for new pruning behavior of git-gc
2008-04-03 19:14 ` Johannes Schindelin
@ 2008-04-03 20:51 ` Brandon Casey
2008-04-03 20:01 ` Johannes Schindelin
0 siblings, 1 reply; 6+ messages in thread
From: Brandon Casey @ 2008-04-03 20:51 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Junio C Hamano, Git Mailing List
Johannes Schindelin wrote:
> Hi,
>
> On Thu, 3 Apr 2008, Brandon Casey wrote:
>
>> diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
>> index 9758243..d3ab00b 100644
>> --- a/Documentation/git-clone.txt
>> +++ b/Documentation/git-clone.txt
>> @@ -65,10 +65,12 @@ OPTIONS
>> +
>> *NOTE*: this is a possibly dangerous operation; do *not* use
>> it unless you understand what it does. If you clone your
>> -repository using this option, then delete branches in the
>> -source repository and then run linkgit:git-gc[1] using the
>> -'--prune' option in the source repository, it may remove
>> -objects which are referenced by the cloned repository.
>> +repository using this option and then delete branches in the
>> +source repository, some objects may become unreferenced (or dangling).
>> +These objects may be removed by normal git operations (such as git-commit[1])
>> +which automatically call git-gc[1]. If these objects are removed and
>> +were referenced by the cloned repository, then the cloned repository
>> +will become corrupt.
>
> Please note that if you delete a branch _after_ running git-gc, the next
> git-gc would remove those objects anyway, since the first git-gc packed
> the objects, and they were therefore no longer dangling.
I thought they would be retained unless --prune was used. git-gc uses the
-A option to repack when --prune is not used and -a when --prune is used.
I think even with the new prune behavior they would still be retained as
long as they were packed since the prune only affects loose objects.
> So it was an issue before the new git-gc behaviour anyway.
Well, I thought that git-gc had become "safe" with respect to --shared
repositories ever since the call to repack started using -A when --prune
was not used.
Now it is unsafe again. But what I was really trying to point out in the
documentation changes was that now _other_ commands such as git-commit are
also unsafe since they call 'git-gc --auto' and could cause loose
unreferenced objects to be deleted. So it is not enough to just avoid calling
git-gc when dealing with a --shared repository.
-brandon
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] git-clone.txt: Adjust note to --shared for new pruning behavior of git-gc
2008-04-03 20:01 ` Johannes Schindelin
@ 2008-04-04 6:49 ` Jakub Narebski
2008-04-04 14:25 ` Brandon Casey
0 siblings, 1 reply; 6+ messages in thread
From: Jakub Narebski @ 2008-04-04 6:49 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Brandon Casey, Junio C Hamano, Git Mailing List
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> On Thu, 3 Apr 2008, Brandon Casey wrote:
> > But what I was really trying to point out in the documentation changes
> > was that now _other_ commands such as git-commit are also unsafe since
> > they call 'git-gc --auto' and could cause loose unreferenced objects to
> > be deleted. So it is not enough to just avoid calling git-gc when
> > dealing with a --shared repository.
>
> Right. Hmm. I missed that completely when I thought about prune
> --expire.
I think that if you are using repository from which other repos borrow
objects via alternates, it is a good idea to turn off automatic
repacking with "git gc --auto" by setting gc.auto to 0 (or, hopefully,
"never" or "false").
--
Jakub Narebski
Poland
ShadeHawk on #git
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] git-clone.txt: Adjust note to --shared for new pruning behavior of git-gc
2008-04-04 6:49 ` Jakub Narebski
@ 2008-04-04 14:25 ` Brandon Casey
0 siblings, 0 replies; 6+ messages in thread
From: Brandon Casey @ 2008-04-04 14:25 UTC (permalink / raw)
To: Jakub Narebski; +Cc: Johannes Schindelin, Junio C Hamano, Git Mailing List
Jakub Narebski wrote:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
>> On Thu, 3 Apr 2008, Brandon Casey wrote:
>>> But what I was really trying to point out in the documentation changes
>>> was that now _other_ commands such as git-commit are also unsafe since
>>> they call 'git-gc --auto' and could cause loose unreferenced objects to
>>> be deleted. So it is not enough to just avoid calling git-gc when
>>> dealing with a --shared repository.
>> Right. Hmm. I missed that completely when I thought about prune
>> --expire.
>
> I think that if you are using repository from which other repos borrow
> objects via alternates, it is a good idea to turn off automatic
> repacking with "git gc --auto" by setting gc.auto to 0
Either that or disable only the automatic pruning by setting gc.pruneexpire
to never.
> (or, hopefully, "never" or "false").
I think those only work for dates and booleans respectively. gc.auto is
parsed as an int.
-brandon
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-04-04 14:27 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-03 18:26 [PATCH] git-clone.txt: Adjust note to --shared for new pruning behavior of git-gc Brandon Casey
2008-04-03 19:14 ` Johannes Schindelin
2008-04-03 20:51 ` Brandon Casey
2008-04-03 20:01 ` Johannes Schindelin
2008-04-04 6:49 ` Jakub Narebski
2008-04-04 14:25 ` Brandon Casey
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.