Browse Source

#2554 reinitialize all repos from the db

- Update locales
Unknwon 9 years ago
parent
commit
04be8c0de5

+ 1 - 1
README.md

@@ -3,7 +3,7 @@ Gogs - Go Git Service [![Build Status](https://travis-ci.org/gogits/gogs.svg?bra
 
 ![](https://github.com/gogits/gogs/blob/master/public/img/gogs-large-resize.png?raw=true)
 
-##### Current version: 0.8.28
+##### Current version: 0.8.29
 
 | Web | UI  | Preview  |
 |:-------------:|:-------:|:-------:|

+ 1 - 0
conf/locale/TRANSLATORS

@@ -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>

+ 1 - 1
conf/locale/locale_bg-BG.ini

@@ -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=Сравни промените

+ 1 - 1
conf/locale/locale_de-DE.ini

@@ -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

+ 2 - 0
conf/locale/locale_en-US.ini

@@ -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

+ 1 - 1
conf/locale/locale_es-ES.ini

@@ -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

+ 2 - 2
conf/locale/locale_fr-FR.ini

@@ -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

+ 1 - 1
conf/locale/locale_it-IT.ini

@@ -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

+ 2 - 2
conf/locale/locale_ja-JP.ini

@@ -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=変更を比較

+ 1 - 1
conf/locale/locale_lv-LV.ini

@@ -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

+ 8 - 8
conf/locale/locale_nl-NL.ini

@@ -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

+ 1 - 1
conf/locale/locale_pl-PL.ini

@@ -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

+ 1 - 1
conf/locale/locale_pt-BR.ini

@@ -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

+ 1 - 1
conf/locale/locale_ru-RU.ini

@@ -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=Сравнить изменения

+ 1 - 1
conf/locale/locale_zh-CN.ini

@@ -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=对比文件变化

+ 1 - 1
conf/locale/locale_zh-HK.ini

@@ -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=對比文件變化

+ 1 - 1
gogs.go

@@ -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())

+ 36 - 7
models/repo.go

@@ -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)
 			}
 		}
 	}

File diff suppressed because it is too large
+ 0 - 0
modules/bindata/bindata.go


+ 4 - 0
routers/admin/admin.go

@@ -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
templates/.VERSION

@@ -1 +1 @@
-0.8.28.0203
+0.8.29.0204

+ 4 - 0
templates/admin/dashboard.tmpl

@@ -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>

Some files were not shown because too many files changed in this diff