blob: 08456f90f19553b97b544dbf145c4492236e7b2c [file] [log] [blame] [edit]
# Copyright (C) 2024 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
sys.path.append("..")
from git.gc import MAX_LOOSE_REF_COUNT
PROG = "Execute Git Garbage Collection."
DESCRIPTION = """
Run Git GC with additional cleanup steps on repository.
To specify a one-time --aggressive git gc for a repository X, simply
create an empty file called 'gc-aggressive-once' in the `/path/to/X.git`
folder:
$ cd /path/to/X.git
$ touch gc-aggressive-once
On the next run, gc.sh will use --aggressive option for gc-ing this
repository *and* will remove this file. Next time, gc.sh again runs
normal gc for this repository.
To specify a permanent --aggressive git gc for a repository, create
an empty file named "gc-aggressive" in the same folder:
$ cd /path/to/X.git
$ touch gc-aggressive
Every next git gc on this repository will use --aggressive option.
"""
def add_arguments(parser):
parser.add_argument(
"-r",
"--pack-all-refs",
help=(
"Whether to pack all refs, "
f"if more than {MAX_LOOSE_REF_COUNT} loose refs exist."
),
dest="pack_refs",
action="store_true",
)