]> source.dussan.org Git - gitea.git/commitdiff
Reopen PR need retest patch
authorUnknwon <u@gogs.io>
Sun, 25 Oct 2015 07:10:22 +0000 (03:10 -0400)
committerUnknwon <u@gogs.io>
Sun, 25 Oct 2015 07:10:22 +0000 (03:10 -0400)
README.md
README_ZH.md
conf/locale/locale_lv-LV.ini
conf/locale/locale_pt-BR.ini
gogs.go
models/issue.go
models/pull.go
routers/repo/issue.go
routers/repo/pull.go
templates/.VERSION

index 8e4cc83312e67bb5a46977a60b984302313361f6..9d61d852dbbceb3abfbf686494ccc1ae84ba38ec 100644 (file)
--- a/README.md
+++ b/README.md
@@ -77,7 +77,7 @@ The goal of this project is to make the easiest, fastest, and most painless way
 
 ## Installation
 
-Make sure you install the [prerequisites](http://gogs.io/docs/installation/) first.
+Make sure you install the [prerequisites](http://gogs.io/docs/installation) first.
 
 There are 5 ways to install Gogs:
 
@@ -108,8 +108,8 @@ There are 5 ways to install Gogs:
 
 ## Acknowledgments
 
-- Router and middleware mechanism of [Macaron](https://github.com/Unknwon/macaron).
-- Mail Service, modules design is inspired by [WeTalk](https://github.com/beego/wetalk).
+- Router and middleware mechanism of [Macaron](https://github.com/go-macaron/macaron).
+- Modules design is inspired by [WeTalk](https://github.com/beego/wetalk).
 - System Monitor Status is inspired by [GoBlog](https://github.com/fuxiaohei/goblog).
 - Thanks [lavachen](http://www.lavachen.cn/) and [Rocker](http://weibo.com/rocker1989) for designing Logo.
 - Thanks [Crowdin](https://crowdin.com/project/gogs) for providing open source translation plan.
index 471cc79aa61d0751f5701f8055e824bb5659fa6c..a11627a0578786e52cc5dc38a7423c3e456eed8d 100644 (file)
@@ -44,7 +44,7 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自
 
 ## 安装部署
 
-在安装 Gogs 之前,您需要先安装 [基本环境](http://gogs.io/docs/installation/)。
+在安装 Gogs 之前,您需要先安装 [基本环境](http://gogs.io/docs/installation)。
 
 然后,您可以通过以下 5 种方式来安装 Gogs:
 
@@ -56,8 +56,8 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自
 
 ## 特别鸣谢
 
-- 基于 [Macaron](https://github.com/Unknwon/macaron) 的路由与中间件机制。
-- 基于 [WeTalk](https://github.com/beego/wetalk) 修改的邮件服务和模块设计。
+- 基于 [Macaron](https://github.com/go-macaron/macaron) 的路由与中间件机制。
+- 基于 [WeTalk](https://github.com/beego/wetalk) 修改的模块设计。
 - 基于 [GoBlog](https://github.com/fuxiaohei/goblog) 修改的系统监视状态。
 - 感谢 [lavachen](http://www.lavachen.cn/) 和 [Rocker](http://weibo.com/rocker1989) 设计的 Logo。
 - 感谢 [Crowdin](https://crowdin.com/project/gogs) 提供免费的开源项目本地化支持。
index 7e167d0bfb53602da64ce12f66292e5f2ce62d1b..1f8cd7b5ffa0e4b3720ffb7339890f8570b8e46d 100755 (executable)
@@ -444,14 +444,14 @@ issues.filter_sort.recentupdate=Nesen atjaunotās
 issues.filter_sort.leastupdate=Vissenāk atjaunotās\r
 issues.filter_sort.mostcomment=Visvairāk komentētās\r
 issues.filter_sort.leastcomment=Vismazāk komentētās\r
-issues.opened_by=opened %[1]s by <a href="%[2]s">%[3]s</a>\r
-issues.opened_by_fake=opened %[1]s by %[2]s\r
+issues.opened_by=<a href="%[2]s">%[3]s</a> atvēra %[1]s\r
+issues.opened_by_fake=%[2]s atvēra %[1]s\r
 issues.previous=Iepriekšējā\r
 issues.next=Nākamā\r
 issues.open_title=Atvērta\r
 issues.closed_title=Slēgta\r
 issues.num_comments=%d komentāri\r
-issues.commented_at=`commented <a id="%[1]s" href="#%[1]s">%[2]s</a>`\r
+issues.commented_at=`komentēja <a id="%[1]s" href="#%[1]s">%[2]s</a>`\r
 issues.no_content=Vēl nav satura.\r
 issues.close_issue=Aizvērt\r
 issues.close_comment_issue=Komentēt un aizvērt\r
@@ -489,44 +489,45 @@ pulls.no_results=Nekas netika atrasts.
 pulls.nothing_to_compare=Nav ko salīdzināt, jo bāzes un salīdzināmie atzari ir vienādi.\r
 pulls.has_pull_request=`Jau eksistē izmaiņu pieprasījums starp šiem diviem atzariem: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`\r
 pulls.create=Izveidot izmaiņu pieprasījumu\r
-pulls.title_desc=wants to merge %[1]d commits from <code>%[2]s</code> into <code>%[3]s</code>\r
-pulls.merged_title_desc=merged %[1]d commits from <code>%[2]s</code> into <code>%[3]s</code> %[4]s\r
+pulls.title_desc=vēlas sapludināt %[1]d revīzijas no <code>%[2]s</code> uz <code>%[3]s</code>\r
+pulls.merged_title_desc=sapludināja %[1]d revīzijas no <code>%[2]s</code> uz <code>%[3]s</code> %[4]s\r
 pulls.tab_conversation=Saruna\r
 pulls.tab_commits=Revīzijas\r
 pulls.tab_files=Izmainītie faili\r
 pulls.reopen_to_merge=Lūdzu, atkārtoti atveriet šo izmaiņu pieprasījumu, lai veiktu sapludināšanu.\r
 pulls.merged=Sapludināts\r
 pulls.has_merged=Šo izmaiņu pieprasījums tika veiksmīgi sapludināts!\r
-pulls.data_broken=Data of this pull request has been broken due to deletion of fork information.\r
-pulls.can_auto_merge_desc=You can perform auto-merge operation on this pull request.\r
-pulls.cannot_auto_merge_desc=You can't perform auto-merge operation because there are conflicts between commits.\r
+pulls.data_broken=Nepieejami izmaiņu pieprasījuma dati, jo dzēsta informācija no atdalītā repozitorija.\r
+pulls.is_checking=Notiek konfliktu pārbaude, mirkli uzgaidiet un atjaunojiet lapu.\r
+pulls.can_auto_merge_desc=Ir iespējams veikt automātisko sapludināšanas darbību šim izmaiņu pieprasījumam.\r
+pulls.cannot_auto_merge_desc=Nav iespējams veikt automātisko sapludināšanas darbību, jo starp revīzijām ir konflikti.\r
 pulls.cannot_auto_merge_helper=Lūdzu, izmantojiet komandrindas rīku, lai to atrisinātu.\r
 pulls.merge_pull_request=Izmaiņu pieprasījuma sapludināšana\r
-pulls.open_unmerged_pull_exists=`You can't perform reopen operation because there is already an open pull request (#%d) from same repository with same merge information and is waiting for merging.`\r
+pulls.open_unmerged_pull_exists=`Jūs nevarat veikt atkārtotas atvēršanas darbību, jo jau eksistē izmaiņu pieprasījums (#%d) no šī repozitorija ar tādu pašu sapludināšanas informāciju un gaida sapludināšanu.`\r
 \r
-milestones.new=New Milestone\r
+milestones.new=Jauns atskaites punkts\r
 milestones.open_tab=%d atvērti\r
 milestones.close_tab=%d aizvērti\r
 milestones.closed=Aizvērts %s\r
-milestones.no_due_date=No due date\r
+milestones.no_due_date=Bez termiņa\r
 milestones.open=Atvērt\r
 milestones.close=Aizvērt\r
 milestones.new_subheader=Izveidojiet atskaites punktus, lai organizētu problēmas.\r
 milestones.create=Izveidot atskaites punktu\r
 milestones.title=Virsraksts\r
 milestones.desc=Apraksts\r
-milestones.due_date=Due Date (optional)\r
+milestones.due_date=Termiņš (neobligāts)\r
 milestones.clear=Notīrīt\r
-milestones.invalid_due_date_format=Due date format is invalid, must be 'year-mm-dd'.\r
-milestones.create_success=Milestone '%s' has been created successfully!\r
-milestones.edit=Edit Milestone\r
-milestones.edit_subheader=Use better description for milestones so people won't be confused.\r
+milestones.invalid_due_date_format=Termiņa datuma formāts ir nekorekts, jābūt formātā 'gggg-mm-dd'.\r
+milestones.create_success=Atskaites punkts '%s' tika veiksmīgi izveidots!\r
+milestones.edit=Labot atskaites punktu\r
+milestones.edit_subheader=Izmantojiet pēc iespējas labāku aprakstu atskaites punktiem, lai citiem tas būtu saprotamāks.\r
 milestones.cancel=Atcelt\r
-milestones.modify=Modify Milestone\r
-milestones.edit_success=Changes of milestone '%s' has been saved successfully!\r
-milestones.deletion=Milestone Deletion\r
-milestones.deletion_desc=Delete this milestone will remove its information in all related issues. Do you want to continue?\r
-milestones.deletion_success=Milestone has been deleted successfully!\r
+milestones.modify=Mainīt atskaites punktu\r
+milestones.edit_success=Izmaiņas atskaites punktā '%s' tika veiksmīgi saglabātas!\r
+milestones.deletion=Atskaites punkta dzēšana\r
+milestones.deletion_desc=Dzēšot šo atskaites punktu tiks noņemta arī saistītā informācija no problēmu ziņojumiem. Vai vēlaties turpināt?\r
+milestones.deletion_success=Atskaites punkts tika veiksmīgi izdzēsts!\r
 \r
 settings=Iestatījumi\r
 settings.options=Opcijas\r
@@ -537,20 +538,20 @@ settings.basic_settings=Pamatiestatījumi
 settings.danger_zone=Bīstamā zona\r
 settings.site=Oficiālā mājas lapa\r
 settings.update_settings=Mainīt iestatījumus\r
-settings.change_reponame_prompt=This change will affect how links relate to the repository.\r
+settings.change_reponame_prompt=Šī izmaiņa ietekmēs saites, kas ir saistītas ar šo repozitoriju.\r
 settings.transfer=Mainīt īpašnieku\r
 settings.transfer_desc=Mainīt šī repozitorija īpašnieku uz citu lietotāju vai organizāciju, kurai Jums ir administratora tiesībs.\r
 settings.new_owner_has_same_repo=Jaunajam īpašniekam jau ir repozitorijs ar šādu nosaukumu.\r
 settings.delete=Dzēst šo repozitoriju\r
 settings.delete_desc=Dzēšot repozitoriju, tā datus vairs nebūs iespējams atgūt. Pirms dzēšanas pārliecinieites vai patiešām vēlaties to darīt.\r
-settings.transfer_notices_1=- You will lose access if new owner is a individual user.\r
-settings.transfer_notices_2=- You will conserve access if new owner is an organization and if you're one of the owners.\r
-settings.transfer_form_title=Please enter following information to confirm your operation:\r
-settings.delete_notices_1=- This operation <strong>CANNOT</strong> be undone.\r
-settings.delete_notices_2=- This operation will permanently delete the everything of this repository, including Git data, issues, comments and accesses of collaborators.\r
-settings.delete_notices_fork_1=- If this repository is public, all forks will be became independent after deletion.\r
-settings.delete_notices_fork_2=- If this repository is private, all forks will be removed at the same time.\r
-settings.delete_notices_fork_3=- If you want to keep all forks after deletion, please change visibility of this repository to public first.\r
+settings.transfer_notices_1=- Jūs pazaudēsiet piekļuvi, ja jaunais īpašnieks ir lietotājs.\r
+settings.transfer_notices_2=- Jūs saglabāsiet piekļuvi, ja jaunais īpašnieks ir organizācija un Jūs esat viens no tās īpašniekiem.\r
+settings.transfer_form_title=Lūdzu, ievadiet sekojošu informāciju, lai apstiprinātu šo darbību:\r
+settings.delete_notices_1=- Šī darbība ir <strong>NEATGRIEZENISKA</strong>.\r
+settings.delete_notices_2=- Šī darbība neatgriezeniski izdzēsīs visus šī repozitorija datus, tai skaitā Git datus, problēmu ziņojumus, komentārus un definētās piekļuves tiesības.\r
+settings.delete_notices_fork_1=- Ja repozitorijs ir publisks, visi atdalītie repozitoriji kļūs neatkarīgi.\r
+settings.delete_notices_fork_2=- Ja repozitorijs ir privāts, tiks dzēsti arī visi atdalītie repozitoriji.\r
+settings.delete_notices_fork_3=- Ja vēlaties saglabāt atdalīts repozitorijus pēc dzēšanas, sākumā nomainiet repozitorija redzamību uz publisku.\r
 settings.update_settings_success=Repozitorija opcijas ir veiksmīgi saglabātas.\r
 settings.transfer_owner=Jaunais īpašnieks\r
 settings.make_transfer=Mainīt\r
@@ -562,9 +563,9 @@ settings.remove_collaborator_success=Līdzstrādnieks tika noņemts.
 settings.user_is_org_member=Lietotājs ir organizācijas biedrs, kas nevar tikt pievienots kā līdzstrādnieks.\r
 settings.add_webhook=Pievienot tīmekļa āķi\r
 settings.hooks_desc=Tīmekļa āķi ļauj paziņot ārējiem servisiem par noteiktiem notikomiem, kas notiek Git servisā. Kad iestāsies kāds notikums, katram ārējā servisa URL tiks nosūtīts POST pieprasījums. Lai uzzinātu sīkāk skatieties <a target="_blank" href="%s">Tīmekļa āķu rokasgrāmatā</a>.\r
-settings.webhook_deletion=Delete Webhook\r
-settings.webhook_deletion_desc=Delete this webhook will remove its information and all delivery history. Do you want to continue?\r
-settings.webhook_deletion_success=Webhook has been deleted successfully!\r
+settings.webhook_deletion=Dzēst tīmekļa āķi\r
+settings.webhook_deletion_desc=Dzēšot tīmekļa āķi tiks dzēsta visa ar to saistītā informācija un izpildes vēsture. Vai vēlaties turpināt?\r
+settings.webhook_deletion_success=Tīmekļa āķis tika veiksmīgi izdzēsts!\r
 settings.webhook.request=Pieprasījums\r
 settings.webhook.response=Atbilde\r
 settings.webhook.headers=Galvenes\r
@@ -587,9 +588,9 @@ settings.event_push_only=Tikai izmaiņu nosūtīšanas notikumiem.
 settings.event_send_everything=Vēlos saņemt <strong>visu</strong>.\r
 settings.event_choose=Atzīmēt, ko vēlos saņemt.\r
 settings.event_create=Izveidot\r
-settings.event_create_desc=Branch, or tag created\r
-settings.event_push=Push\r
-settings.event_push_desc=Git push to a repository\r
+settings.event_create_desc=Atzara vai taga izveidošana\r
+settings.event_push=Izmaiņu nosūtīšana\r
+settings.event_push_desc=Git izmaiņu nosūtīšana uz repozitoriju\r
 settings.active=Aktīvs\r
 settings.active_helper=Tiks nosūtīti notikuma dati, kad nostrādās šis āķis.\r
 settings.add_hook_success=Jauns tīmekļa āķis tika veiksmīgi pievienots.\r
@@ -604,15 +605,15 @@ settings.slack_domain=Domēns
 settings.slack_channel=Kanāls\r
 settings.deploy_keys=Izvietot atslēgas\r
 settings.add_deploy_key=Pievienot izvietošanas atslēgu\r
-settings.no_deploy_keys=You haven't added any deploy key.\r
+settings.no_deploy_keys=Nav pievienota neviena izvietošanas atslēga.\r
 settings.title=Virsraksts\r
 settings.deploy_key_content=Saturs\r
-settings.key_been_used=Deploy key content has been used.\r
-settings.key_name_used=Deploy key with same name has already existed.\r
-settings.add_key_success=New deploy key '%s' has been added successfully!\r
+settings.key_been_used=Šāda izvietošanas atslēga jau eksistē.\r
+settings.key_name_used=Izvietošanas atslēga ar šādu nosaukumu jau eksistē.\r
+settings.add_key_success=Izvietošanas atslēga '%s' tik veiksmīgi pievienota!\r
 settings.deploy_key_deletion=Dzēst izvietošanas atslēgu\r
-settings.deploy_key_deletion_desc=Delete this deploy key will remove all related accesses for this repository. Do you want to continue?\r
-settings.deploy_key_deletion_success=Deploy key has been deleted successfully!\r
+settings.deploy_key_deletion_desc=Dzēšot šo izvietošanas atslēgu tiks noņemta arī ar to saistītā piekļuve šim repozitorijam. Vai vēlaties turpināt?\r
+settings.deploy_key_deletion_success=Izvietošanas atslēga tika veiksmīgi izdzēsta!\r
 \r
 diff.browse_source=Pārlūkot izejas kodu\r
 diff.parent=vecāks\r
@@ -665,8 +666,8 @@ team_name_helper=Šo nosaukumu varēs izmantot, lai pieminētu komandu sarunās.
 team_desc_helper=Komandas apraksts\r
 team_permission_desc=Kādām tiesībām šai komandai būtu jābūt?\r
 \r
-form.name_reserved=Organization name '%s' is reserved.\r
-form.name_pattern_not_allowed=Organization name pattern '%s' is not allowed.\r
+form.name_reserved=Organizācijas nosaukums '%s' ir rezervēts.\r
+form.name_pattern_not_allowed=Organizācijas nosaukums '%s' nav atļauts.\r
 \r
 settings=Iestatījumi\r
 settings.options=Opcijas\r
@@ -675,8 +676,8 @@ settings.website=Mājas lapa
 settings.location=Atrašanās vieta\r
 settings.update_settings=Mainīt iestatījumus\r
 settings.update_setting_success=Organizācijas iestatījumi tika veiksmīgi saglabāti.\r
-settings.change_orgname_prompt=This change will affect how links relate to the organization.\r
-settings.update_avatar_success=Organization avatar setting has been updated successfully.\r
+settings.change_orgname_prompt=Šī izmaiņa ietekmēs saites, kas ir saistītas ar šo organizāciju.\r
+settings.update_avatar_success=Organizācijas avatara iestatījumi tika veiksmīgi saglabāti.\r
 settings.delete=Dzēst organizāciju\r
 settings.delete_account=Dzēst šo organizāciju\r
 settings.delete_prompt=Šī darbība pilnībā dzēsīs šo organizāciju, kā arī tā ir <strong>NEATGRIEZENISKA</strong>!\r
@@ -732,8 +733,8 @@ authentication=Autentifikācijas
 config=Konfigurācija\r
 notices=Sistēmas paziņojumi\r
 monitor=Uzraudzība\r
-first_page=First\r
-last_page=Last\r
+first_page=Pirmā\r
+last_page=Pēdējā\r
 total=Kopā: %d\r
 \r
 dashboard.statistic=Statistika\r
@@ -793,13 +794,13 @@ users.activated=Aktivizēts
 users.admin=Administrators\r
 users.repos=Repozitoriji\r
 users.created=Izveidots\r
-users.send_register_notify=Send Registration Notification To User\r
-users.new_success=New account '%s' has been created successfully.\r
+users.send_register_notify=Nosūtīt lietotājam reģistrācijas paziņojumu\r
+users.new_success=Jauns konts '%s' tika veiksmīgi izveidots.\r
 users.edit=Labot\r
-users.auth_source=Authentication Source\r
+users.auth_source=Autentificēšanas avots\r
 users.local=Iebūvētā\r
-users.auth_login_name=Authentication Login Name\r
-users.password_helper=Leave it empty to remain unchanged.\r
+users.auth_login_name=Autentifikācijas pieteikšanās vārds\r
+users.password_helper=Atstājiet tukšu, ja nevēlaties mainīt.\r
 users.update_profile_success=Konta profils tika veiksmīgi saglabāts.\r
 users.edit_account=Labot kontu\r
 users.is_activated=Konts ir aktivizēts\r
@@ -809,7 +810,7 @@ users.update_profile=Mainīt konta profilu
 users.delete_account=Dzēst šo kontu\r
 users.still_own_repo=Šis konts ir vismaz viena repozitorija īpašnieks, tos sākumā ir nepieciešams izdzēst vai nomainīt to īpašnieku.\r
 users.still_has_org=Šis konts ir vismaz vienas organizācijas biedrs, sākumā nepieciešams pamest vai izdzēst šo organizāciju.\r
-users.deletion_success=Account has been deleted successfully!\r
+users.deletion_success=Konts tika veiksmīgi izdzēsts!\r
 \r
 orgs.org_manage_panel=Organizāciju pārvaldības panelis\r
 orgs.name=Nosaukums\r
@@ -824,8 +825,8 @@ repos.watches=Vērošana
 repos.stars=Atzīmētās zvaigznītes\r
 repos.issues=Problēmas\r
 \r
-auths.auth_manage_panel=Authentication Manage Panel\r
-auths.new=Add New Source\r
+auths.auth_manage_panel=Autentifikācijas pārvaldības panelis\r
+auths.new=Pievienot jaunu avotu\r
 auths.name=Nosaukums\r
 auths.type=Veids\r
 auths.enabled=Iespējota\r
@@ -850,17 +851,17 @@ auths.smtp_auth=SMTP autentifikācijas tips
 auths.smtphost=SMTP resursdators\r
 auths.smtpport=SMTP ports\r
 auths.allowed_domains=Atļautie domēni\r
-auths.allowed_domains_helper=Leave it empty to not restrict any domains. Multiple domains should be separated by comma ','.\r
+auths.allowed_domains_helper=Atstājiet tukšu, ja nevēlaties ierobežot domēnu vārdus. Domēna vārdus nepieciešams atdalīt ar komatu ','.\r
 auths.enable_tls=Iespējot TLS šifrēšanu\r
 auths.skip_tls_verify=Izlaist TLS verifikāciju\r
 auths.pam_service_name=PAM servisa nosaukums\r
 auths.enable_auto_register=Iespējot automātisko reģistrāciju\r
 auths.tips=Padomi\r
-auths.edit=Edit Authentication Setting\r
+auths.edit=Labot autentifikācijas iestatījumus\r
 auths.activated=Autentifikācija ir aktivizēta\r
-auths.new_success=New authentication '%s' has been added successfully.\r
-auths.update_success=Authentication setting has been updated successfully.\r
-auths.update=Update Authentication Setting\r
+auths.new_success=Jauna autentifikācija '%s' tika veiksmīgi pievienota.\r
+auths.update_success=Autentifikācijas iestatījumi tika veiksmīgi saglabāti.\r
+auths.update=Mainīt autentifikācijas iestatījumus\r
 auths.delete=Dzēst šo autentifikāciju\r
 auths.delete_auth_title=Autentifikācijas dzēšana\r
 auths.delete_auth_desc=Šī autentifikācija tiks dzēsta, vai vēlaties turpināt?\r
@@ -896,8 +897,8 @@ config.show_registration_button=Rādīt reģistrēšanās pogu
 config.require_sign_in_view=Nepieciešama autorizācija\r
 config.enable_cache_avatar=Glabāt profila attēlus kešatmiņā\r
 config.mail_notify=Pasta paziņojumi\r
-config.disable_key_size_check=Disable Minimum Key Size Check\r
-config.enable_captcha=Enable Captcha\r
+config.disable_key_size_check=Atspējot atslēgas minimālā garuma pārbaudi\r
+config.enable_captcha=Iespējot drošības kodu\r
 config.active_code_lives=Aktīvā koda ilgums\r
 config.reset_password_code_lives=Paroles atiestatīšanas koda ilgums\r
 config.webhook_config=Tīkla āķu konfigurācija\r
@@ -951,12 +952,12 @@ notices.delete_success=Sistēmas paziņojums tika veiksmīgi izdzēsts.
 \r
 [action]\r
 create_repo=izveidoja repozitoriju <a href="%s">%s</a>\r
-rename_repo=renamed repository from <code>%[1]s</code> to <a href="%[2]s">%[3]s</a>\r
+rename_repo=pārsauca repozitoriju no <code>%[1]s</code> uz <a href="%[2]s">%[3]s</a>\r
 commit_repo=veica izmaiņu nosūtīšanu atzaram <a href="%s/src/%s">%[2]s</a> repozitorijā <a href="%[1]s">%[3]s</a>\r
 create_issue=`reģistrēja problēmu <a href="%s/issues/%s">%s#%[2]s</a>`\r
-create_pull_request=`created pull request <a href="%s/pulls/%s">%s#%[2]s</a>`\r
+create_pull_request=`izveidoja izmaiņu pieprasījumu <a href="%s/pulls/%s">%s#%[2]s</a>`\r
 comment_issue=`pievienoja komentāru problēmai <a href="%s/issues/%s">%s#%[2]s</a>`\r
-merge_pull_request=`merged pull request <a href="%s/pulls/%s">%s#%[2]s</a>`\r
+merge_pull_request=`sapludināja izmaiņu pieprasījumu <a href="%s/pulls/%s">%s#%[2]s</a>`\r
 transfer_repo=mainīja repozitorija <code>%s</code> īpašnieku uz <a href="%s">%s</a>\r
 push_tag=pievienoja tagu <a href="%s/src/%s">%[2]s</a> repozitorijam <a href="%[1]s">%[3]s</a>\r
 compare_2_commits=Veikt salīdzināšanu starp šīm 2 revīzijām\r
index ba82fc74d51cd67cb702dbbdfe2031fcfa1068ea..a34ef731b993fa7559dc8394150dc4a287f331ff 100755 (executable)
@@ -444,7 +444,7 @@ issues.filter_sort.recentupdate=Mais recentemente atualizados
 issues.filter_sort.leastupdate=Menos recentemente atualizados\r
 issues.filter_sort.mostcomment=Mais comentados\r
 issues.filter_sort.leastcomment=Menos comentados\r
-issues.opened_by=%[1]s foi aberto por <a href="/%[2]s">%[3]s</a>\r
+issues.opened_by=%[1]s foi aberto por <a href="%[2]s">%[3]s</a>\r
 issues.opened_by_fake=aberto %[1]s por %[2]s\r
 issues.previous=Página anterior\r
 issues.next=Próxima página\r
@@ -498,6 +498,7 @@ pulls.reopen_to_merge=Por favor reabra esse pull request para executar a operaç
 pulls.merged=Merge realizado\r
 pulls.has_merged=Este pull request foi mesclado com sucesso!\r
 pulls.data_broken=Dados deste pull request foram quebrados devido à deleção de informação do fork.\r
+pulls.is_checking=The conflict checking is still in progress, please refresh page in few moments.\r
 pulls.can_auto_merge_desc=Você pode realizar uma auto-mescla neste pull request.\r
 pulls.cannot_auto_merge_desc=Você não pode realizar uma auto-mescla porque há conflitos entre os commits.\r
 pulls.cannot_auto_merge_helper=Por favor, utilize linha de comando para solucionar isto.\r
diff --git a/gogs.go b/gogs.go
index 705b360856c3dfdcc290e4589640fd3f97b9015c..039c5d4cb0ce0cc3f65521b003ff819428582d49 100644 (file)
--- a/gogs.go
+++ b/gogs.go
@@ -17,7 +17,7 @@ import (
        "github.com/gogits/gogs/modules/setting"
 )
 
-const APP_VER = "0.6.17.1024 Beta"
+const APP_VER = "0.6.17.1025 Beta"
 
 func init() {
        runtime.GOMAXPROCS(runtime.NumCPU())
index 1cefa42f5a79f5c0bb668e238787af9a7ba71dcb..077e945c3736ff13a83b51208c2c7bf648cdf391 100644 (file)
@@ -92,15 +92,6 @@ func (i *Issue) AfterSet(colName string, _ xorm.Cell) {
                if err != nil {
                        log.Error(3, "GetUserByID[%d]: %v", i.ID, err)
                }
-       case "is_pull":
-               if !i.IsPull {
-                       return
-               }
-
-               i.PullRequest, err = GetPullRequestByIssueID(i.ID)
-               if err != nil {
-                       log.Error(3, "GetPullRequestByIssueID[%d]: %v", i.ID, err)
-               }
        case "created":
                i.Created = regulateTimeZone(i.Created)
        }
@@ -282,6 +273,15 @@ func (i *Issue) ChangeStatus(doer *User, isClosed bool) (err error) {
        return sess.Commit()
 }
 
+func (i *Issue) GetPullRequest() (err error) {
+       if i.PullRequest != nil {
+               return nil
+       }
+
+       i.PullRequest, err = GetPullRequestByIssueID(i.ID)
+       return err
+}
+
 // It's caller's responsibility to create action.
 func newIssue(e *xorm.Session, repo *Repository, issue *Issue, labelIDs []int64, uuids []string, isPull bool) (err error) {
        if _, err = e.Insert(issue); err != nil {
index 7436511c9105ddbffc4f244a4c8b123f298da1e1..7ef0901cc78d5b4ea7d4db8cc061f20fec01696a 100644 (file)
@@ -226,6 +226,12 @@ func (pr *PullRequest) testPatch() (err error) {
                return fmt.Errorf("BaseRepo.PatchPath: %v", err)
        }
 
+       // Fast fail if patch does not exist, this assumes data is cruppted.
+       if !com.IsFile(patchPath) {
+               log.Trace("PullRequest[%d].testPatch: ignored cruppted data", pr.ID)
+               return nil
+       }
+
        log.Trace("PullRequest[%d].testPatch(patchPath): %s", pr.ID, patchPath)
 
        if err := pr.BaseRepo.UpdateLocalCopy(); err != nil {
@@ -373,28 +379,47 @@ func (pr *PullRequest) UpdateCols(cols ...string) error {
 
 var PullRequestQueue = NewUniqueQueue(setting.Repository.PullRequestQueueLength)
 
-// checkAndUpdateStatus checks if pull request is possible to levaing checking status,
-// and set to be either conflict or mergeable.
-func (pr *PullRequest) checkAndUpdateStatus() {
-       // Status is not changed to conflict means mergeable.
-       if pr.Status == PULL_REQUEST_STATUS_CHECKING {
-               pr.Status = PULL_REQUEST_STATUS_MERGEABLE
+// UpdatePatch generates and saves a new patch.
+func (pr *PullRequest) UpdatePatch() error {
+       if err := pr.GetHeadRepo(); err != nil {
+               return fmt.Errorf("GetHeadRepo: %v", err)
+       } else if pr.HeadRepo == nil {
+               log.Trace("PullRequest[%d].UpdatePatch: ignored cruppted data", pr.ID)
+               return nil
        }
 
-       // Make sure there is no waiting test to process before levaing the checking status.
-       if !PullRequestQueue.Exist(pr.ID) {
-               if err := pr.UpdateCols("status"); err != nil {
-                       log.Error(4, "Update[%d]: %v", pr.ID, err)
-               }
+       if err := pr.GetBaseRepo(); err != nil {
+               return fmt.Errorf("GetBaseRepo: %v", err)
        }
+
+       headRepoPath, err := pr.HeadRepo.RepoPath()
+       if err != nil {
+               return fmt.Errorf("HeadRepo.RepoPath: %v", err)
+       }
+
+       headGitRepo, err := git.OpenRepository(headRepoPath)
+       if err != nil {
+               return fmt.Errorf("OpenRepository: %v", err)
+       }
+
+       patch, err := headGitRepo.GetPatch(pr.MergeBase, pr.HeadBranch)
+       if err != nil {
+               return fmt.Errorf("GetPatch: %v", err)
+       }
+
+       if err = pr.BaseRepo.SavePatch(pr.Index, patch); err != nil {
+               return fmt.Errorf("BaseRepo.SavePatch: %v", err)
+       }
+
+       return nil
 }
 
-// addToTaskQueue adds itself to pull request test task queue.
-func (pr *PullRequest) addToTaskQueue() {
+// AddToTaskQueue adds itself to pull request test task queue.
+func (pr *PullRequest) AddToTaskQueue() {
        go PullRequestQueue.AddFunc(pr.ID, func() {
                pr.Status = PULL_REQUEST_STATUS_CHECKING
                if err := pr.UpdateCols("status"); err != nil {
-                       log.Error(5, "addToTaskQueue.UpdateCols[%d].(add to queue): %v", pr.ID, err)
+                       log.Error(5, "AddToTaskQueue.UpdateCols[%d].(add to queue): %v", pr.ID, err)
                }
        })
 }
@@ -402,44 +427,12 @@ func (pr *PullRequest) addToTaskQueue() {
 func addHeadRepoTasks(prs []*PullRequest) {
        for _, pr := range prs {
                log.Trace("addHeadRepoTasks[%d]: composing new test task", pr.ID)
-               if err := pr.GetHeadRepo(); err != nil {
-                       log.Error(4, "GetHeadRepo[%d]: %v", pr.ID, err)
-                       continue
-               } else if pr.HeadRepo == nil {
-                       log.Trace("addHeadRepoTasks[%d]: ignored cruppted data", pr.ID)
-                       continue
-               }
-
-               if err := pr.GetBaseRepo(); err != nil {
-                       log.Error(4, "GetBaseRepo[%d]: %v", pr.ID, err)
-                       continue
-               }
-
-               headRepoPath, err := pr.HeadRepo.RepoPath()
-               if err != nil {
-                       log.Error(4, "HeadRepo.RepoPath[%d]: %v", pr.ID, err)
-                       continue
-               }
-
-               headGitRepo, err := git.OpenRepository(headRepoPath)
-               if err != nil {
-                       log.Error(4, "OpenRepository[%d]: %v", pr.ID, err)
-                       continue
-               }
-
-               // Generate patch.
-               patch, err := headGitRepo.GetPatch(pr.MergeBase, pr.HeadBranch)
-               if err != nil {
-                       log.Error(4, "GetPatch[%d]: %v", pr.ID, err)
-                       continue
-               }
-
-               if err = pr.BaseRepo.SavePatch(pr.Index, patch); err != nil {
-                       log.Error(4, "BaseRepo.SavePatch[%d]: %v", pr.ID, err)
+               if err := pr.UpdatePatch(); err != nil {
+                       log.Error(4, "UpdatePatch: %v", err)
                        continue
                }
 
-               pr.addToTaskQueue()
+               pr.AddToTaskQueue()
        }
 }
 
@@ -461,7 +454,23 @@ func AddTestPullRequestTask(repoID int64, branch string) {
                return
        }
        for _, pr := range prs {
-               pr.addToTaskQueue()
+               pr.AddToTaskQueue()
+       }
+}
+
+// checkAndUpdateStatus checks if pull request is possible to levaing checking status,
+// and set to be either conflict or mergeable.
+func (pr *PullRequest) checkAndUpdateStatus() {
+       // Status is not changed to conflict means mergeable.
+       if pr.Status == PULL_REQUEST_STATUS_CHECKING {
+               pr.Status = PULL_REQUEST_STATUS_MERGEABLE
+       }
+
+       // Make sure there is no waiting test to process before levaing the checking status.
+       if !PullRequestQueue.Exist(pr.ID) {
+               if err := pr.UpdateCols("status"); err != nil {
+                       log.Error(4, "Update[%d]: %v", pr.ID, err)
+               }
        }
 }
 
index 166b369dca4cb58a399bb85fb7c043d462e8abbd..30dcf925789545efe00477e4efa13453b14c536f 100644 (file)
@@ -476,6 +476,11 @@ func ViewIssue(ctx *middleware.Context) {
        }
 
        if issue.IsPull {
+               if err = issue.GetPullRequest(); err != nil {
+                       ctx.Handle(500, "GetPullRequest", err)
+                       return
+               }
+
                ctx.Data["PageIsPullList"] = true
                ctx.Data["PageIsPullConversation"] = true
        } else {
@@ -747,6 +752,12 @@ func NewComment(ctx *middleware.Context, form auth.CreateCommentForm) {
                }
                return
        }
+       if issue.IsPull {
+               if err = issue.GetPullRequest(); err != nil {
+                       ctx.Handle(500, "GetPullRequest", err)
+                       return
+               }
+       }
 
        var attachments []string
        if setting.AttachmentEnabled {
@@ -766,6 +777,7 @@ func NewComment(ctx *middleware.Context, form auth.CreateCommentForm) {
                        (form.Status == "reopen" || form.Status == "close") &&
                        !(issue.IsPull && issue.HasMerged) {
 
+                       // Duplication and conflict check should apply to reopen pull request.
                        var pr *models.PullRequest
 
                        if form.Status == "reopen" && issue.IsPull {
@@ -777,6 +789,16 @@ func NewComment(ctx *middleware.Context, form auth.CreateCommentForm) {
                                                return
                                        }
                                }
+
+                               // Regenerate patch and test conflict.
+                               if pr == nil {
+                                       if err = issue.UpdatePatch(); err != nil {
+                                               ctx.Handle(500, "UpdatePatch", err)
+                                               return
+                                       }
+
+                                       issue.AddToTaskQueue()
+                               }
                        }
 
                        if pr != nil {
index eade4407f765d88f28439f29b0b4397903cdfc8d..b69592411b223c7fef2cd5068f0d0c29515df8f7 100644 (file)
@@ -149,7 +149,10 @@ func checkPullInfo(ctx *middleware.Context) *models.Issue {
        if err = issue.GetPoster(); err != nil {
                ctx.Handle(500, "GetPoster", err)
                return nil
-       } else if issue.GetHeadRepo(); err != nil {
+       } else if err = issue.GetPullRequest(); err != nil {
+               ctx.Handle(500, "GetPullRequest", err)
+               return nil
+       } else if err = issue.GetHeadRepo(); err != nil {
                ctx.Handle(500, "GetHeadRepo", err)
                return nil
        }
index b4080f5ea32845fbdd95d26894e651c012c6987c..1ab1a873d432dcc428f005e207d2224740751078 100644 (file)
@@ -1 +1 @@
-0.6.17.1024 Beta
\ No newline at end of file
+0.6.17.1025 Beta
\ No newline at end of file