| @@ -3,7 +3,7 @@ Gogs - Go Git Service [ | |||
| ##### Current version: 0.8.28 | |||
| ##### Current version: 0.8.29 | |||
| | Web | UI | Preview | | |||
| |:-------------:|:-------:|:-------:| | |||
| @@ -28,6 +28,7 @@ Juraj Bubniak <contact AT jbub DOT eu> | |||
| Lafriks <lafriks AT gmail DOT com> | |||
| Lauri Ojansivu <x AT xet7 DOT org> | |||
| Luc Stepniewski <luc AT stepniewski DOT fr> | |||
| Luca Kröger <l DOT kroeger01 AT gmail DOT com> | |||
| Marc Schiller <marc AT schiller DOT im> | |||
| Miguel de la Cruz <miguel AT mcrx DOT me> | |||
| Mikhail Burdin <xdshot9000 AT gmail DOT com> | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=Името на хранилището вече се пол | |||
| org_name_been_taken=Името на организацията вече се ползва. | |||
| team_name_been_taken=Името на екипа вече се ползва. | |||
| email_been_used=Този адрес на ел. поща вече се ползва. | |||
| illegal_team_name=Името на екипа съдържа недопустими знаци. | |||
| username_password_incorrect=Потребителското име или паролата не са верни. | |||
| enterred_invalid_repo_name=Моля уверете се, че въведеното име на хранилище е вярно. | |||
| enterred_invalid_owner_name=Моля уверете се, че въведеното име на притежател е вярно. | |||
| @@ -494,6 +493,7 @@ issues.label_modify=Промяна на етикет | |||
| issues.label_deletion=Изтрий етикет | |||
| issues.label_deletion_desc=При изтриване на този етикет ще се премахне информацията за него във всички свързани задачи. Желаете ли да продължите? | |||
| issues.label_deletion_success=Етикетът е изтрит успешно! | |||
| issues.num_participants=%d Participants | |||
| pulls.new=Нова заявка за сливане | |||
| pulls.compare_changes=Сравни промените | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=Repository-Name ist bereits vergeben. | |||
| org_name_been_taken=Organisationsname ist bereits vergeben. | |||
| team_name_been_taken=Teamname ist bereits vergeben. | |||
| email_been_used=E-Mail-Adresse wird bereits verwendet. | |||
| illegal_team_name=Teamname enthält ungültige Zeichen. | |||
| username_password_incorrect=Benutzername oder Passwort ist nicht korrekt. | |||
| enterred_invalid_repo_name=Bitte stelle sicher, dass der eingegebene Repository-Name richtig ist. | |||
| enterred_invalid_owner_name=Bitte stelle sicher, dass der eingegebene Besitzername richtig ist. | |||
| @@ -494,6 +493,7 @@ issues.label_modify=Label Änderung | |||
| issues.label_deletion=Label Löschung | |||
| issues.label_deletion_desc=Das Löschen eines Labels entfernt es von allen verknüpften Issues. Möchtest du fortfahren? | |||
| issues.label_deletion_success=Label wurde erfolgreich gelöscht! | |||
| issues.num_participants=%d Beteiligte | |||
| pulls.new=Neuer Pull-Request | |||
| pulls.compare_changes=Änderungen vergleichen | |||
| @@ -818,6 +818,8 @@ dashboard.resync_all_sshkeys = Rewrite '.ssh/authorized_keys' file (caution: non | |||
| dashboard.resync_all_sshkeys_success = All public keys have been rewritten successfully. | |||
| dashboard.resync_all_update_hooks = Rewrite all update hook of repositories (needed when custom config path is changed) | |||
| dashboard.resync_all_update_hooks_success = All repositories' update hook have been rewritten successfully. | |||
| dashboard.reinit_missing_repos = Reinitialize all repository records that lost Git files | |||
| dashboard.reinit_missing_repos_success = All repository records that lost Git files have been reinitialized successfully. | |||
| dashboard.server_uptime = Server Uptime | |||
| dashboard.current_goroutine = Current Goroutines | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=Ya existe un repositorio con este nombre. | |||
| org_name_been_taken=Ya existe una organización con este nombre. | |||
| team_name_been_taken=Ya existe un equipo con este nombre. | |||
| email_been_used=Esta dirección de correo electrónico ya está en uso. | |||
| illegal_team_name=El nombre del equipo contiene caracteres inválidos. | |||
| username_password_incorrect=Nombre de usuario o contraseña incorrectos. | |||
| enterred_invalid_repo_name=Por favor, asegúrate de que has introducido correctamente el nombre del repositorio. | |||
| enterred_invalid_owner_name=Por favor, asegúrate de que has introducido correctamente el nombre del propietario. | |||
| @@ -494,6 +493,7 @@ issues.label_modify=Edición de Etiqueta | |||
| issues.label_deletion=Borrado de Etiqueta | |||
| issues.label_deletion_desc=Al borrar la etiqueta su información será eliminada de todas las incidencias relacionadas. Desea continuar? | |||
| issues.label_deletion_success=Etiqueta borrada con éxito! | |||
| issues.num_participants=%d participantes | |||
| pulls.new=Nuevo Pull Request | |||
| pulls.compare_changes=Comparar Cambios | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=Nom de dépôt déjà utilisé. | |||
| org_name_been_taken=Nom d'organisation déjà pris. | |||
| team_name_been_taken=Nom d'équipe déjà pris. | |||
| email_been_used=Adresse e-mail déjà utilisée. | |||
| illegal_team_name=Le nom de l'équipe contient des caractères interdits. | |||
| username_password_incorrect=Nom d'utilisateur ou mot de passe incorrect. | |||
| enterred_invalid_repo_name=Veuillez vérifier que le nom saisi du dépôt soit correct. | |||
| enterred_invalid_owner_name=Veuillez vérifier que le nom du propriétaire saisi soit correct. | |||
| @@ -459,7 +458,7 @@ issues.filter_sort.recentupdate=Mis à jour récemment | |||
| issues.filter_sort.leastupdate=Moins récemment mis à jour | |||
| issues.filter_sort.mostcomment=Les plus commentés | |||
| issues.filter_sort.leastcomment=Les moins commentés | |||
| issues.opened_by=Ouvrir %[1]s by <a href="%[2]s">%[3]s</a> | |||
| issues.opened_by=Créé %[1]s par <a href="%[2]s">%[3]s</a> | |||
| issues.opened_by_fake=ouvert %[1]s par %[2]s | |||
| issues.previous=Page Précédente | |||
| issues.next=Page Suivante | |||
| @@ -494,6 +493,7 @@ issues.label_modify=Modification du Label | |||
| issues.label_deletion=Suppression du Label | |||
| issues.label_deletion_desc=Cette opération supprimera également toutes les informations relatives aux problèmes. Voulez-vous continuer ? | |||
| issues.label_deletion_success=Label supprimé avec succès ! | |||
| issues.num_participants=%d Participants | |||
| pulls.new=Nouvelle Pull Request | |||
| pulls.compare_changes=Comparer les changements | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=Il nome del Repository è già utilizzato. | |||
| org_name_been_taken=Il nome dell'Organizzazione è già utlizzato. | |||
| team_name_been_taken=Il nome del Team è già utilizzato. | |||
| email_been_used=L'indirizzo E-mail è già utilizzato. | |||
| illegal_team_name=Il nome del Team contiene caratteri non validi. | |||
| username_password_incorrect=Nome utente o password incorretti. | |||
| enterred_invalid_repo_name=Si prega di assicurarsi che il nome del repository inserito sia corretto. | |||
| enterred_invalid_owner_name=Si prega di assicurarsi che il nome del proprietario inserito sia corretto. | |||
| @@ -494,6 +493,7 @@ issues.label_modify=Modifica Etichetta | |||
| issues.label_deletion=Elimina Etichetta | |||
| issues.label_deletion_desc=Eliminare l'etichetta rimuovera le sue informazioni in tutti i problemi correlati. Vuoi continuare? | |||
| issues.label_deletion_success=Etichetta eliminata con successo! | |||
| issues.num_participants=%d Participants | |||
| pulls.new=Nuova Pull Request | |||
| pulls.compare_changes=Confronta le modifiche | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=リポジトリ名は既に使用されています。 | |||
| org_name_been_taken=組織名は既に使用されています。 | |||
| team_name_been_taken=チーム名は既に使用されています。 | |||
| email_been_used=電子メール アドレスは既に使用されています。 | |||
| illegal_team_name=チーム名に無効な文字が含まれています。 | |||
| username_password_incorrect=ユーザー名またはパスワードが正しくありません。 | |||
| enterred_invalid_repo_name=入力したリポジトリの名前が正しいかどうかを確認してください。 | |||
| enterred_invalid_owner_name=入力された所有者名が正しいかどうかを確認してください。 | |||
| @@ -377,7 +376,7 @@ migrate.permission_denied=ローカル リポジトリをインポートする | |||
| migrate.invalid_local_path=ローカルパスが無効です。存在しないかディレクトリではありません。 | |||
| migrate.failed=移行に失敗しました: %v | |||
| mirror_from=mirror from | |||
| mirror_from=mirror of | |||
| forked_from=フォーク元 | |||
| fork_from_self=すでにあなたの所有しているリポジトリはフォークできません | |||
| copy_link=コピー | |||
| @@ -494,6 +493,7 @@ issues.label_modify=ラベルの変更 | |||
| issues.label_deletion=ラベルの削除 | |||
| issues.label_deletion_desc=ラベルを削除すると、関連するすべての問題の情報が削除されます。続行しますか。 | |||
| issues.label_deletion_success=ラベルは正常に削除されました。 | |||
| issues.num_participants=%d Participants | |||
| pulls.new=新しいプルリクエスト | |||
| pulls.compare_changes=変更を比較 | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=Repozitorija vārds ir jau aizņemts. | |||
| org_name_been_taken=Organizācijas nosaukums ir jau aizņemts. | |||
| team_name_been_taken=Komandas nosaukums ir jau aizņemts. | |||
| email_been_used=E-pasta adrese jau tiek izmantota. | |||
| illegal_team_name=Grupas nosaukums satur neatļautas rakstzīmes. | |||
| username_password_incorrect=Lietotājvārds vai parole nav pareiza. | |||
| enterred_invalid_repo_name=Lūdzu, pārliecinieties, vai ievadītā repozitorija nosaukums ir pareizs. | |||
| enterred_invalid_owner_name=Lūdzu, pārliecinieties, vai ievadītā īpašnieka vārds ir pareizs. | |||
| @@ -494,6 +493,7 @@ issues.label_modify=Etiķetes labošana | |||
| issues.label_deletion=Etiķetes dzēšana | |||
| issues.label_deletion_desc=Dzēšot šo etiķeti, tā tiks noņemta no visām saistītajām problēmām. Vai vēlaties turpināt? | |||
| issues.label_deletion_success=Etiķete tika veiksmīgi izdzēsta! | |||
| issues.num_participants=%d Participants | |||
| pulls.new=Jauns izmaiņu pieprasījums | |||
| pulls.compare_changes=Salīdzināt izmaiņas | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=Repositorie naam is al in gebruik. | |||
| org_name_been_taken=Organisatie naam is al in gebruik. | |||
| team_name_been_taken=Team naam is al in gebruik. | |||
| email_been_used=e-mailadres is al in gebruik. | |||
| illegal_team_name=Team naam bevat illegale karakters. | |||
| username_password_incorrect=Gebruikersnaam of wachtwoord is niet correct. | |||
| enterred_invalid_repo_name=U heeft een onjuiste repositorie naam ingevoerd. | |||
| enterred_invalid_owner_name=U heeft een onjuiste eigenaar ingevoerd. | |||
| @@ -494,6 +493,7 @@ issues.label_modify=Wijzig label | |||
| issues.label_deletion=Verwijder label | |||
| issues.label_deletion_desc=Het verwijderen van dit label zal alle informatie in de gerelateerde problemen verwijderen. Wilt u doorgaan? | |||
| issues.label_deletion_success=Label werd met succes verwijderd! | |||
| issues.num_participants=%d Participants | |||
| pulls.new=Nieuwe Pull aanvraag | |||
| pulls.compare_changes=Vergelijk veranderingen | |||
| @@ -546,7 +546,7 @@ milestones.deletion_desc=Het verwijderen van dit label zal alle informatie in de | |||
| milestones.deletion_success=Mijlpaal is met succes verwijderd! | |||
| wiki=Wiki | |||
| wiki.welcome=Welcome to Wiki! | |||
| wiki.welcome=Welkom op de Wiki! | |||
| wiki.welcome_desc=Wiki is the place where you would like to document your project together and make it better. | |||
| wiki.create_first_page=Maak de eerste pagina | |||
| wiki.page=Pagina | |||
| @@ -554,9 +554,9 @@ wiki.filter_page=Filter pagina | |||
| wiki.new_page=Maak nieuwe pagina | |||
| wiki.default_commit_message=Schrijf een notitie over deze aanpassing (optioneel). | |||
| wiki.save_page=Pagina opslaan | |||
| wiki.last_commit_info=%s edited this page %s | |||
| wiki.last_commit_info=%s heeft deze pagina aangepast %s | |||
| wiki.edit_page_button=Bewerken | |||
| wiki.new_page_button=New Page | |||
| wiki.new_page_button=Nieuwe pagina | |||
| wiki.page_already_exists=Wiki page with same name already exists. | |||
| wiki.pages=Pages | |||
| wiki.last_updated=Last updated %s | |||
| @@ -570,7 +570,7 @@ settings.basic_settings=Basis instellingen | |||
| settings.site=Officiële site | |||
| settings.update_settings=Instellingen bewerken | |||
| settings.change_reponame_prompt=This change will affect how links relate to the repository. | |||
| settings.advanced_settings=Advanced Settings | |||
| settings.advanced_settings=Geavanceerde opties | |||
| settings.wiki_desc=Enable wiki to allow people write documents | |||
| settings.use_external_wiki=Use external wiki | |||
| settings.external_wiki_url=External Wiki URL | |||
| @@ -594,7 +594,7 @@ settings.delete_notices_2=- This operation will permanently delete the everythin | |||
| settings.delete_notices_fork_1=- If this repository is public, all forks will be became independent after deletion. | |||
| settings.delete_notices_fork_2=- If this repository is private, all forks will be removed at the same time. | |||
| settings.delete_notices_fork_3=- If you want to keep all forks after deletion, please change visibility of this repository to public first. | |||
| settings.deletion_success=Repository has been deleted successfully! | |||
| settings.deletion_success=Repository is succesvol verwijderd! | |||
| settings.update_settings_success=Repositorie instellingen zijn succesvol bijgewerkt. | |||
| settings.transfer_owner=Nieuwe eigenaar | |||
| settings.make_transfer=Maak overdracht | |||
| @@ -603,7 +603,7 @@ settings.confirm_delete=Bevestig verwijdering | |||
| settings.add_collaborator=Nieuwe medewerker toevoegen | |||
| settings.add_collaborator_success=medewerker is toegevoegd. | |||
| settings.remove_collaborator_success=medewerker is verwijderd. | |||
| settings.search_user_placeholder=Search user... | |||
| settings.search_user_placeholder=Zoek gebruiker... | |||
| settings.user_is_org_member=Gebruiker is lid van de organisatie die als een medewerker kan niet worden toegevoegd. | |||
| settings.add_webhook=Webhook toevoegen | |||
| settings.hooks_desc=Webhooks dat de externe diensten om kennisgevingen te ontvangen wanneer bepaalde gebeurtenissen op Gogs plaatsvinden. Wanneer de opgegeven gebeurtenissen plaatsvinden, sturen we een POST-aanvraag naar elk van de URL's die u opgeeft. Meer informatie vindt u in onze <a target="_blank" href="%s"> Webhooks gids</a>. | |||
| @@ -687,7 +687,7 @@ release.edit_subheader=Detailed change log can help users understand what has be | |||
| release.tag_name=Tagnaam | |||
| release.target=Doel | |||
| release.tag_helper=Kies een bestaande tag, of creëer een nieuwe tag bij publiceren. | |||
| release.title=Title | |||
| release.title=Titel | |||
| release.content=Content | |||
| release.write=Schrijf | |||
| release.preview=Voorbeeld | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=Nazwa repozytorium jest już zajęta. | |||
| org_name_been_taken=Nazwa organizacji jest już zajęta. | |||
| team_name_been_taken=Nazwa zespołu jest już zajęta. | |||
| email_been_used=Adres e-mail jest już zarejestrowany. | |||
| illegal_team_name=Nazwa zespołu zawiera niedozwolone znaki. | |||
| username_password_incorrect=Nazwa użytkownika lub hasło nie jest prawidłowe. | |||
| enterred_invalid_repo_name=Upewnij się, że wprowadzona nazwa repozytorium jest poprawna. | |||
| enterred_invalid_owner_name=Upewnij się, że nazwa właściciela repozytorium jest poprawna. | |||
| @@ -494,6 +493,7 @@ issues.label_modify=Modyfikacja etykiety | |||
| issues.label_deletion=Usunięcie etykiety | |||
| issues.label_deletion_desc=Usunięcie tej etykiety spowoduje usuniecie jej ze wszystkich powiązanych problemów. Czy na pewno chcesz kontynuować? | |||
| issues.label_deletion_success=Etykieta została usunięta pomyślnie! | |||
| issues.num_participants=%d Participants | |||
| pulls.new=Nowy pull request | |||
| pulls.compare_changes=Porównaj zmiany | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=Nome do repositório já foi tomado. | |||
| org_name_been_taken=Nome da organização já foi tomado. | |||
| team_name_been_taken=Nome da equipe já foi tomado. | |||
| email_been_used=Endereço de e-mail já foi usado. | |||
| illegal_team_name=O nome da equipe contém caracteres não permitidos. | |||
| username_password_incorrect=Usuário ou senha incorretos. | |||
| enterred_invalid_repo_name=Por favor certifique-se que informou o nome do repositório corretamente. | |||
| enterred_invalid_owner_name=Por favor, verifique se o nome do proprietário está correto. | |||
| @@ -494,6 +493,7 @@ issues.label_modify=Alteração de etiqueta | |||
| issues.label_deletion=Exclusão de etiqueta | |||
| issues.label_deletion_desc=Excluir uma etiqueta a retirará de todos os problemas que ela estiver marcando. Quer mesmo continuar? | |||
| issues.label_deletion_success=A etiqueta foi excluída com sucesso! | |||
| issues.num_participants=%d participantes | |||
| pulls.new=Novo Pull Request | |||
| pulls.compare_changes=Comparar mudanças | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=Имя репозитория уже принято. | |||
| org_name_been_taken=Название организации было уже принято. | |||
| team_name_been_taken=Название команды было уже принято. | |||
| email_been_used=Адрес электронной почты уже используется. | |||
| illegal_team_name=Имя группы содержит недопустимые знаки. | |||
| username_password_incorrect=Имя пользователя или пароль не правильный. | |||
| enterred_invalid_repo_name=Пожалуйста, убедитесь, что введенно правильное имя хранилища. | |||
| enterred_invalid_owner_name=Убедитесь, что введенное имя владельца верное. | |||
| @@ -494,6 +493,7 @@ issues.label_modify=Изменение метки | |||
| issues.label_deletion=Удаление метки | |||
| issues.label_deletion_desc=Удаление ярлыка затронет все связанные задачи. Продолжить? | |||
| issues.label_deletion_success=Метка была удалена успешно! | |||
| issues.num_participants=%d Participants | |||
| pulls.new=Новый запрос на слияние | |||
| pulls.compare_changes=Сравнить изменения | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=仓库名称已经被占用。 | |||
| org_name_been_taken=组织名称已经被占用。 | |||
| team_name_been_taken=团队名称已经被占用。 | |||
| email_been_used=邮箱地址已经被使用。 | |||
| illegal_team_name=团队名称包含非法字符。 | |||
| username_password_incorrect=用户名或密码不正确。 | |||
| enterred_invalid_repo_name=请检查您输入的仓库名称是正确。 | |||
| enterred_invalid_owner_name=请检查您输入的新所有者用户名是否正确。 | |||
| @@ -494,6 +493,7 @@ issues.label_modify=修改标签 | |||
| issues.label_deletion=删除标签操作 | |||
| issues.label_deletion_desc=删除该标签将会移除所有工单中相关的信息。是否继续? | |||
| issues.label_deletion_success=标签删除成功! | |||
| issues.num_participants=%d 名参与者 | |||
| pulls.new=创建合并请求 | |||
| pulls.compare_changes=对比文件变化 | |||
| @@ -203,7 +203,6 @@ repo_name_been_taken=倉庫名稱已經被佔用。 | |||
| org_name_been_taken=組織名稱已經被佔用。 | |||
| team_name_been_taken=團隊名稱已經被佔用。 | |||
| email_been_used=郵箱地址已經被使用。 | |||
| illegal_team_name=團隊名稱包含不合法字符。 | |||
| username_password_incorrect=用戶名或密碼不正確。 | |||
| enterred_invalid_repo_name=請檢查您輸入的倉庫名稱是正確。 | |||
| enterred_invalid_owner_name=請檢查您輸入的新所有者用戶名是否正確。 | |||
| @@ -494,6 +493,7 @@ issues.label_modify=修改標籤 | |||
| issues.label_deletion=刪除標籤 | |||
| issues.label_deletion_desc=刪除該標籤將會移除所有問題中相關的訊息。是否繼續? | |||
| issues.label_deletion_success=標籤刪除成功! | |||
| issues.num_participants=%d Participants | |||
| pulls.new=創建合併請求 | |||
| pulls.compare_changes=對比文件變化 | |||
| @@ -17,7 +17,7 @@ import ( | |||
| "github.com/gogits/gogs/modules/setting" | |||
| ) | |||
| const APP_VER = "0.8.28.0203" | |||
| const APP_VER = "0.8.29.0204" | |||
| func init() { | |||
| runtime.GOMAXPROCS(runtime.NumCPU()) | |||
| @@ -1457,9 +1457,8 @@ func DeleteRepositoryArchives() error { | |||
| }) | |||
| } | |||
| // DeleteMissingRepositories deletes all repository records that lost Git files. | |||
| func DeleteMissingRepositories() error { | |||
| repos := make([]*Repository, 0, 5) | |||
| func gatherMissingRepoRecords() ([]*Repository, error) { | |||
| repos := make([]*Repository, 0, 10) | |||
| if err := x.Where("id > 0").Iterate(new(Repository), | |||
| func(idx int, bean interface{}) error { | |||
| repo := bean.(*Repository) | |||
| @@ -1468,10 +1467,18 @@ func DeleteMissingRepositories() error { | |||
| } | |||
| return nil | |||
| }); err != nil { | |||
| if err2 := CreateRepositoryNotice(fmt.Sprintf("DeleteMissingRepositories: %v", err)); err2 != nil { | |||
| log.Error(4, "CreateRepositoryNotice: %v", err2) | |||
| if err2 := CreateRepositoryNotice(fmt.Sprintf("gatherMissingRepoRecords: %v", err)); err2 != nil { | |||
| return nil, fmt.Errorf("CreateRepositoryNotice: %v", err) | |||
| } | |||
| return nil | |||
| } | |||
| return repos, nil | |||
| } | |||
| // DeleteMissingRepositories deletes all repository records that lost Git files. | |||
| func DeleteMissingRepositories() error { | |||
| repos, err := gatherMissingRepoRecords() | |||
| if err != nil { | |||
| return fmt.Errorf("gatherMissingRepoRecords: %v", err) | |||
| } | |||
| if len(repos) == 0 { | |||
| @@ -1482,7 +1489,29 @@ func DeleteMissingRepositories() error { | |||
| log.Trace("Deleting %d/%d...", repo.OwnerID, repo.ID) | |||
| if err := DeleteRepository(repo.OwnerID, repo.ID); err != nil { | |||
| if err2 := CreateRepositoryNotice(fmt.Sprintf("DeleteRepository [%d]: %v", repo.ID, err)); err2 != nil { | |||
| log.Error(4, "CreateRepositoryNotice: %v", err2) | |||
| return fmt.Errorf("CreateRepositoryNotice: %v", err) | |||
| } | |||
| } | |||
| } | |||
| return nil | |||
| } | |||
| // ReinitMissingRepositories reinitializes all repository records that lost Git files. | |||
| func ReinitMissingRepositories() error { | |||
| repos, err := gatherMissingRepoRecords() | |||
| if err != nil { | |||
| return fmt.Errorf("gatherMissingRepoRecords: %v", err) | |||
| } | |||
| if len(repos) == 0 { | |||
| return nil | |||
| } | |||
| for _, repo := range repos { | |||
| log.Trace("Initializing %d/%d...", repo.OwnerID, repo.ID) | |||
| if err := git.InitRepository(repo.RepoPath(), true); err != nil { | |||
| if err2 := CreateRepositoryNotice(fmt.Sprintf("InitRepository [%d]: %v", repo.ID, err)); err2 != nil { | |||
| return fmt.Errorf("CreateRepositoryNotice: %v", err) | |||
| } | |||
| } | |||
| } | |||
| @@ -120,6 +120,7 @@ const ( | |||
| GIT_GC_REPOS | |||
| SYNC_SSH_AUTHORIZED_KEY | |||
| SYNC_REPOSITORY_UPDATE_HOOK | |||
| REINIT_MISSING_REPOSITORY | |||
| ) | |||
| func Dashboard(ctx *middleware.Context) { | |||
| @@ -152,6 +153,9 @@ func Dashboard(ctx *middleware.Context) { | |||
| case SYNC_REPOSITORY_UPDATE_HOOK: | |||
| success = ctx.Tr("admin.dashboard.resync_all_update_hooks_success") | |||
| err = models.RewriteRepositoryUpdateHook() | |||
| case REINIT_MISSING_REPOSITORY: | |||
| success = ctx.Tr("admin.dashboard.reinit_missing_repos_success") | |||
| err = models.ReinitMissingRepositories() | |||
| } | |||
| if err != nil { | |||
| @@ -1 +1 @@ | |||
| 0.8.28.0203 | |||
| 0.8.29.0204 | |||
| @@ -43,6 +43,10 @@ | |||
| <td>{{.i18n.Tr "admin.dashboard.resync_all_update_hooks"}}</td> | |||
| <td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=6">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td> | |||
| </tr> | |||
| <tr> | |||
| <td>{{.i18n.Tr "admin.dashboard.reinit_missing_repos"}}</td> | |||
| <td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=7">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td> | |||
| </tr> | |||
| </tbody> | |||
| </table> | |||
| </div> | |||