Repository startup previously defaulted to a shallow clone (--depth 1),
which truncates commit history. That breaks history-dependent operations
the agent commonly performs when opening PRs (merge, rebase, cherry-pick,
blame), because the merge base is often missing, producing 'unrelated
histories' errors and bogus conflicts.
Switch the default to a blobless partial clone (--filter=blob:none,
branch-scoped with --single-branch when a branch is selected). This keeps
the complete commit graph so merges/rebases/blame work correctly, while
still avoiding the up-front download of all historical file contents, so
startup stays fast for large repositories. Blobs are fetched lazily on
demand, which is fine since the sandbox already has remote connectivity.
The git_full_clone user setting still opts into a full clone for cases
that need all file contents available offline or repo-wide operations.
Also update the agent workspace context note and the settings copy to
describe the new behavior in plain terms, and update affected unit tests.
Co-authored-by: openhands <openhands@all-hands.dev>
"ko-KR":"OpenHands는 대규모 리포지토리의 시작 속도를 높이기 위해 기본적으로 얕은 클론을 사용합니다.",
"de":"OpenHands verwendet standardmäßig flache Klone, um den Start bei großen Repositorys zu beschleunigen.",
"no":"OpenHands bruker grunne kloner som standard for å gjøre oppstart raskere for store repositorier.",
"it":"OpenHands usa cloni superficiali per impostazione predefinita per velocizzare l'avvio con repository di grandi dimensioni.",
"pt":"O OpenHands usa clones rasos por padrão para acelerar a inicialização em repositórios grandes.",
"es":"OpenHands usa clones superficiales de forma predeterminada para acelerar el inicio en repositorios grandes.",
"ar":"يستخدم OpenHands النسخ السطحي افتراضيًا لتسريع بدء التشغيل للمستودعات الكبيرة.",
"fr":"OpenHands utilise par défaut des clones superficiels pour accélérer le démarrage avec les grands dépôts.",
"tr":"OpenHands, büyük depolarda başlatmayı hızlandırmak için varsayılan olarak sığ klonlar kullanır.",
"uk":"OpenHands типово використовує поверхневі клони, щоб прискорити запуск для великих репозиторіїв.",
"ca":"OpenHands utilitza clons superficials per defecte per accelerar l'inici en repositoris grans."
"en":"By default OpenHands downloads a lightweight copy of your repository to speed up startup for large repositories. The complete commit history is always included; individual file contents are downloaded only when a task needs them.",
"ko-KR":"OpenHands는 대규모 리포지토리의 시작 속도를 높이기 위해 기본적으로 리포지토리의 경량 사본을 다운로드합니다. 전체 커밋 기록은 항상 포함되며, 개별 파일 내용은 작업에 필요할 때만 다운로드됩니다.",
"de":"OpenHands lädt standardmäßig eine schlanke Kopie Ihres Repositorys herunter, um den Start bei großen Repositorys zu beschleunigen. Der vollständige Commit-Verlauf ist immer enthalten; einzelne Dateiinhalte werden nur dann heruntergeladen, wenn eine Aufgabe sie benötigt.",
"no":"OpenHands laster som standard ned en lettvektskopi av repositoriet for å gjøre oppstart raskere for store repositorier. Hele commit-historikken er alltid inkludert; innholdet i enkeltfiler lastes bare ned når en oppgave trenger det.",
"it":"Per impostazione predefinita OpenHands scarica una copia leggera del repository per velocizzare l'avvio con repository di grandi dimensioni. La cronologia completa dei commit è sempre inclusa; il contenuto dei singoli file viene scaricato solo quando un'attività ne ha bisogno.",
"pt":"Por padrão, o OpenHands baixa uma cópia leve do seu repositório para acelerar a inicialização em repositórios grandes. O histórico completo de commits é sempre incluído; o conteúdo de cada arquivo é baixado apenas quando uma tarefa precisa dele.",
"es":"De forma predeterminada, OpenHands descarga una copia ligera de tu repositorio para acelerar el inicio en repositorios grandes. El historial completo de commits siempre se incluye; el contenido de cada archivo se descarga solo cuando una tarea lo necesita.",
"ar":"يقوم OpenHands افتراضيًا بتنزيل نسخة خفيفة من المستودع لتسريع بدء التشغيل للمستودعات الكبيرة. يتم دائمًا تضمين سجل الالتزامات الكامل؛ ويتم تنزيل محتويات الملفات الفردية فقط عندما تحتاجها المهمة.",
"fr":"Par défaut, OpenHands télécharge une copie légère de votre dépôt pour accélérer le démarrage avec les grands dépôts. L'historique complet des commits est toujours inclus ; le contenu des fichiers individuels n'est téléchargé que lorsqu'une tâche en a besoin.",
"tr":"OpenHands, büyük depolarda başlatmayı hızlandırmak için varsayılan olarak deponuzun hafif bir kopyasını indirir. Tüm commit geçmişi her zaman dahildir; tek tek dosya içerikleri yalnızca bir görev gerektirdiğinde indirilir.",
"uk":"Типово OpenHands завантажує полегшену копію вашого репозиторію, щоб прискорити запуск для великих репозиторіїв. Повна історія комітів завжди включена; вміст окремих файлів завантажується лише тоді, коли він потрібен завданню.",
"ca":"Per defecte, OpenHands descarrega una còpia lleugera del vostre repositori per accelerar l'inici en repositoris grans. L'historial complet de commits sempre s'inclou; el contingut de cada fitxer es descarrega només quan una tasca el necessita."
},
"SETTINGS$FETCH_FULL_GIT_HISTORY":{
"en":"Fetch full Git history for repositories",
"ja":"リポジトリの完全な Git 履歴を取得する",
"zh-CN":"获取仓库的完整 Git 历史",
"zh-TW":"擷取儲存庫的完整 Git 歷史記錄",
"ko-KR":"리포지토리의 전체 Git 기록 가져오기",
"de":"Vollständigen Git-Verlauf für Repositorys abrufen",
"no":"Hent full Git-historikk for repositorier",
"it":"Recupera la cronologia Git completa per i repository",
"pt":"Buscar o histórico completo do Git para repositórios",
"es":"Obtener el historial completo de Git para los repositorios",
"ar":"جلب سجل Git الكامل للمستودعات",
"fr":"Récupérer l’historique Git complet des dépôts",
"tr":"Depolar için tam Git geçmişini getir",
"uk":"Отримувати повну історію Git для репозиторіїв",
"ca":"Obtén l'historial complet de Git dels repositoris"
"en":"Download all repository files up front",
"ja":"リポジトリのすべてのファイルを事前にダウンロードする",
"zh-CN":"预先下载仓库的所有文件",
"zh-TW":"預先下載儲存庫的所有檔案",
"ko-KR":"리포지토리의 모든 파일을 미리 다운로드",
"de":"Alle Repository-Dateien im Voraus herunterladen",
"no":"Last ned alle filer i repositoriet på forhånd",
"it":"Scarica in anticipo tutti i file del repository",
"pt":"Baixar todos os arquivos do repositório antecipadamente",
"es":"Descargar todos los archivos del repositorio por adelantado",
"ar":"تنزيل جميع ملفات المستودع مسبقًا",
"fr":"Télécharger tous les fichiers du dépôt à l'avance",
"tr":"Tüm depo dosyalarını önceden indir",
"uk":"Завантажувати всі файли репозиторію заздалегідь",
"ca":"Descarrega tots els fitxers del repositori per avançat"
},
"SETTINGS$FETCH_FULL_GIT_HISTORY_HELPER":{
"en":"Turn this on if your tasks require full Git history, tags, merge bases, historical blame, or checking out older commits. Full clones may take longer for large repositories.",
"ko-KR":"작업에 전체 Git 기록, 태그, 병합 기준, 과거 blame 정보 또는 이전 커밋 체크아웃이 필요한 경우 이 옵션을 켜세요. 대규모 리포지토리에서는 전체 클론에 시간이 더 오래 걸릴 수 있습니다.",
"de":"Aktivieren Sie dies, wenn Ihre Aufgaben den vollständigen Git-Verlauf, Tags, Merge-Bases, historische Blame-Informationen oder das Auschecken älterer Commits erfordern. Vollständige Klone können bei großen Repositorys länger dauern.",
"no":"Slå dette på hvis oppgavene dine krever full Git-historikk, tagger, merge-baser, historisk blame-informasjon eller utsjekking av eldre commits. Fullstendige kloner kan ta lengre tid for store repositorier.",
"it":"Attiva questa opzione se le tue attività richiedono la cronologia Git completa, tag, basi di merge, informazioni blame storiche o il checkout di commit precedenti. I cloni completi possono richiedere più tempo per repository di grandi dimensioni.",
"pt":"Ative isto se suas tarefas exigirem o histórico completo do Git, tags, bases de merge, informações históricas de blame ou checkout de commits mais antigos. Clones completos podem levar mais tempo em repositórios grandes.",
"es":"Activa esta opción si tus tareas requieren el historial completo de Git, etiquetas, bases de fusión, información histórica de blame o hacer checkout de commits anteriores. Los clones completos pueden tardar más en repositorios grandes.",
"ar":"فعّل هذا الخيار إذا كانت مهامك تتطلب سجل Git كاملًا، أو الوسوم، أو قواعد الدمج، أو معلومات blame التاريخية، أو التبديل إلى commits أقدم. قد تستغرق النسخ الكاملة وقتًا أطول للمستودعات الكبيرة.",
"fr":"Activez cette option si vos tâches nécessitent l’historique Git complet, les tags, les bases de fusion, les informations blame historiques ou l’extraction d’anciens commits. Les clones complets peuvent prendre plus de temps pour les grands dépôts.",
"tr":"Görevleriniz tam Git geçmişi, etiketler, birleştirme tabanları, geçmiş blame bilgisi veya eski commit’lere geçiş gerektiriyorsa bunu açın. Büyük depolarda tam klonlar daha uzun sürebilir.",
"uk":"Увімкніть це, якщо вашим завданням потрібні повна історія Git, теги, бази злиття, історична інформація blame або перехід на старіші коміти. Повні клони великих репозиторіїв можуть виконуватися довше.",
"ca":"Activeu aquesta opció si les vostres tasques requereixen l'historial complet de Git, etiquetes, bases de fusió, informació històrica de blame o fer checkout de commits antics. Els clons complets poden trigar més en repositoris grans."
"en":"Turn this on to download every file in the repository up front instead of on demand. This is useful when tasks need to work offline after cloning or run operations across the whole repository at once. It may take longer for large repositories.",
"ko-KR":"이 옵션을 켜면 필요할 때가 아니라 미리 리포지토리의 모든 파일을 다운로드합니다. 클론 후 오프라인으로 작업해야 하거나 리포지토리 전체에 대한 작업을 한 번에 실행할 때 유용합니다. 대규모 리포지토리에서는 시간이 더 오래 걸릴 수 있습니다.",
"de":"Aktivieren Sie dies, um alle Dateien des Repositorys im Voraus statt bei Bedarf herunterzuladen. Das ist nützlich, wenn Aufgaben nach dem Klonen offline arbeiten oder Vorgänge auf einmal über das gesamte Repository ausführen müssen. Bei großen Repositorys kann es länger dauern.",
"no":"Slå dette på for å laste ned alle filene i repositoriet på forhånd i stedet for ved behov. Dette er nyttig når oppgaver må jobbe offline etter kloning eller kjøre operasjoner på hele repositoriet på én gang. Det kan ta lengre tid for store repositorier.",
"it":"Attiva questa opzione per scaricare in anticipo tutti i file del repository anziché su richiesta. È utile quando le attività devono lavorare offline dopo la clonazione o eseguire operazioni sull'intero repository in una sola volta. Può richiedere più tempo per repository di grandi dimensioni.",
"pt":"Ative isto para baixar todos os arquivos do repositório antecipadamente em vez de sob demanda. Isso é útil quando as tarefas precisam trabalhar offline após a clonagem ou executar operações em todo o repositório de uma vez. Pode levar mais tempo em repositórios grandes.",
"es":"Activa esta opción para descargar todos los archivos del repositorio por adelantado en lugar de bajo demanda. Es útil cuando las tareas necesitan trabajar sin conexión después de clonar o ejecutar operaciones sobre todo el repositorio a la vez. Puede tardar más en repositorios grandes.",
"ar":"فعّل هذا الخيار لتنزيل جميع ملفات المستودع مسبقًا بدلًا من تنزيلها عند الحاجة. يكون ذلك مفيدًا عندما تحتاج المهام إلى العمل دون اتصال بعد الاستنساخ أو تنفيذ عمليات على المستودع بأكمله دفعة واحدة. قد يستغرق ذلك وقتًا أطول للمستودعات الكبيرة.",
"fr":"Activez cette option pour télécharger tous les fichiers du dépôt à l'avance plutôt qu'à la demande. C'est utile lorsque les tâches doivent travailler hors ligne après le clonage ou exécuter des opérations sur l'ensemble du dépôt en une seule fois. Cela peut prendre plus de temps pour les grands dépôts.",
"tr":"Depodaki tüm dosyaları istek üzerine değil önceden indirmek için bunu açın. Bu, görevlerin klonlamadan sonra çevrimdışı çalışması veya tüm depoda tek seferde işlem yapması gerektiğinde kullanışlıdır. Büyük depolarda daha uzun sürebilir.",
"uk":"Увімкніть це, щоб завантажити всі файли репозиторію заздалегідь, а не за потреби. Це корисно, коли завданням потрібно працювати офлайн після клонування або виконувати операції над усім репозиторієм одразу. Для великих репозиторіїв це може тривати довше.",
"ca":"Activeu aquesta opció per descarregar tots els fitxers del repositori per avançat en lloc de sota demanda. És útil quan les tasques han de treballar sense connexió després de clonar o executar operacions sobre tot el repositori alhora. Pot trigar més en repositoris grans."
The selected repository was cloned as a shallow clone. Git history may be incomplete. Before using operations that depend on full history, tags, mergebases, historical blame, or arbitrary commit checkout, run `git rev-parse --is-shallow-repository`. If full history is needed, run `git fetch --unshallow` or `git fetch --deepen=<n>`.
The selected repository was cloned as a partial clone (`--filter=blob:none`). The complete commit history is present, so merges, rebases, tags, blame, and checking out older commits all work normally. File contents are downloaded on demand, so operations that touch many files or older revisions may pause briefly to fetch data and require network access to the remote.
</GIT_WORKSPACE_CONTEXT>"""
@@ -313,7 +313,7 @@ class LiveStatusAppConversationService(AppConversationServiceBase):
)
returnself._launch_snapshot_from_user(user)
def_maybe_append_shallow_clone_context(
def_maybe_append_partial_clone_context(
self,
user:UserInfo,
selected_repository:str|None,
@@ -321,7 +321,7 @@ class LiveStatusAppConversationService(AppConversationServiceBase):
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.