-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy path23.html
More file actions
1761 lines (1717 loc) · 66.6 KB
/
23.html
File metadata and controls
1761 lines (1717 loc) · 66.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>IvorySQL社区贡献指南 :: IvorySQL文档中心</title>
<link rel="canonical" href="https://docs.ivorysql.org/ivorysql-doc/master/23.html">
<meta name="generator" content="Antora 3.1.7">
<link rel="stylesheet" href="../../_/css/site.css">
<script>var uiRootPath = '../../_'</script>
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<a class="navbar-item" href="https://docs.ivorysql.org">IvorySQL文档中心</a>
<div class="navbar-item search hide-for-print">
<div id="search-field" class="field">
<input id="search-input" type="text" placeholder="Search the docs">
</div>
</div>
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
</div>
<div id="topbar-nav" class="navbar-menu">
<div class="navbar-end">
<a class="navbar-item" href="https://www.ivorysql.org/">官方网站</a>
</div>
</div>
</nav>
</header>
<div class="body">
<div class="nav-container" data-component="ivorysql-doc" data-version="master">
<aside class="nav">
<div class="panels">
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<h3 class="title"><a href="welcome.html">文档中心</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<span class="nav-text">IvorySQL</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="welcome.html">欢迎</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="1.html">发行说明</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="2.html">关于IvorySQL</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">IvorySQL入门</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="3.1.html">快速开始</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="3.2.html">日常监控</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="3.3.html">日常维护</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">IvorySQL高级</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="4.1.html">安装指南</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="4.2.html">集群搭建</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="4.3.html">开发者指南</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="4.4.html">运维管理指南</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="4.5.html">迁移指南</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">IvorySQL生态</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="5.1.html">PostGIS</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="5.2.html">pgvector</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">IvorySQL架构设计</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">查询处理</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="6.1.1.html">双parser</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">兼容框架</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="6.2.1.html">initdb过程</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">兼容特性</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="6.3.1.html">like</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="6.3.3.html">RowID</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="6.3.2.html">OUT 参数</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="6.3.4.html">%TYPE、%ROWTYPE</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="6.4.html">国标GB18030</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Oracle兼容功能列表</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.1.html">1、框架设计</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.2.html">2、GUC框架</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.3.html">3、大小写转换</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.4.html">4、双模式设计</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.5.html">5、兼容Oracle like</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.6.html">6、兼容Oracle匿名块</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.7.html">7、兼容Oracle函数与存储过程</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.8.html">8、内置数据类型与内置函数</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.9.html">9、新增Oracle兼容模式的端口与IP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.10.html">10、XML函数</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.11.html">11、兼容Oracle sequence</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.12.html">12、包</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.13.html">13、不可见列</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.14.html">14、RowID</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.15.html">15、OUT 参数</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="7.16.html">16、%TYPE、%ROWTYPE</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">IvorySQL贡献指南</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="8.1.html">社区贡献指南</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="8.2.html">asciidoc语法快速参考</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="9.html">工具参考</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="10.html">FAQ</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<span class="nav-text">PostgreSQL</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="100.html">PG参数参考手册</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="110.html">PG函数参考手册</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">文档中心</span>
<span class="version">master</span>
</div>
<ul class="components">
<li class="component is-current">
<a class="title" href="welcome.html">文档中心</a>
<ul class="versions">
<li class="version is-current is-latest">
<a href="welcome.html">master</a>
</li>
<li class="version">
<a href="../v4.6/v4.6/welcome.html">v4.6</a>
</li>
<li class="version">
<a href="../v4.5/v4.5/welcome.html">v4.5</a>
</li>
<li class="version">
<a href="../v4.4/v4.4/welcome.html">v4.4</a>
</li>
<li class="version">
<a href="../v4.2/v4.2/welcome.html">v4.2</a>
</li>
<li class="version">
<a href="../v4.0/v4.0/welcome.html">v4.0</a>
</li>
<li class="version">
<a href="../v3.4/v3.4/welcome.html">v3.4</a>
</li>
<li class="version">
<a href="../v3.3/v3.3/welcome.html">v3.3</a>
</li>
<li class="version">
<a href="../v3.2/v3.2/welcome.html">v3.2</a>
</li>
<li class="version">
<a href="../v3.1/v3.1/welcome.html">v3.1</a>
</li>
<li class="version">
<a href="../v3.0/v3.0/welcome.html">v3.0</a>
</li>
<li class="version">
<a href="../v2.3/v2.3/welcome.html">v2.3</a>
</li>
<li class="version">
<a href="../v2.2/v2.2/welcome.html">v2.2</a>
</li>
<li class="version">
<a href="../v2.1/v2.1/welcome.html">v2.1</a>
</li>
<li class="version">
<a href="../v1.17/v1.17/welcome.html">v1.17</a>
</li>
<li class="version">
<a href="../v1.8/v1.8/welcome.html">v1.8</a>
</li>
<li class="version">
<a href="../v1.5/v1.5/welcome.html">v1.5</a>
</li>
<li class="version">
<a href="../v1.4/v1.4/welcome.html">v1.4</a>
</li>
<li class="version">
<a href="../v1.3/v1.3/welcome.html">v1.3</a>
</li>
<li class="version">
<a href="../v1.2/v1.2/welcome.html">v1.2</a>
</li>
<li class="version">
<a href="../v1.1/v1.1/welcome.html">v1.1</a>
</li>
<li class="version">
<a href="../v1.0/v1.0/welcome.html">v1.0</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main class="article">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="welcome.html">文档中心</a></li>
<li><a href="23.html"><strong>IvorySQL社区贡献指南</strong></a></li>
</ul>
</nav>
<div class="page-versions">
<button class="version-menu-toggle" title="switch to English">CN</button>
<div class="version-menu">
<a class="version is-current" href="">CN</a>
<a class="version" href="../../../../en/ivorysql-doc/master/23.html">EN</a>
</div>
</div>
<div class="edit-this-page"><a href="https://github.com/IvorySQL/ivorysql_docs/edit/master/CN/modules/ROOT/pages/master/23.adoc">编辑此页面</a></div>
</div>
<div class="content">
<aside class="toc sidebar" data-title="目录" data-levels="2">
<div class="toc-menu"></div>
</aside>
<article class="doc">
<h1 class="page"><strong>IvorySQL社区贡献指南</strong></h1>
<div class="sect1">
<h2 id="概述"><a class="anchor" href="#概述"></a>1. <strong>概述</strong></h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="说明"><a class="anchor" href="#说明"></a>1.1. 说明</h3>
<div class="paragraph">
<p>IvorySQL由一个核心开发团队维护,该团队拥有对GitHub上的IvorySQL主存储库的提交权限。同时,我们非常渴望从更广泛的IvorySQL社区中的成员那里获得贡献。如果您希望看到您的代码或文档更改被添加到IvorySQL并出现在将来的版本中,本节的内容介绍是您需要知道的。</p>
</div>
<div class="paragraph">
<p>IvorySQL社区欢迎并赞赏所有类型的贡献,期待您的加入!</p>
</div>
</div>
<div class="sect2">
<h3 id="行为准则"><a class="anchor" href="#行为准则"></a>1.2. 行为准则</h3>
<div class="paragraph">
<p>作为成员,贡献者和领导者,我们每个人都应阅读我们的 <strong>行为准则</strong>。我们承诺让每个人都能参与社区,成为一种无骚扰的体验,无论年龄、体型、有形或无形的残疾、种族、性特征、性别认同和表达、经验水平、教育、社会经济地位、国籍、个人外表、种族、宗教或性身份和取向如何。</p>
</div>
<div class="paragraph">
<p> 我们承诺以有助于建立一个开放,热情,多样化,包容和健康社区的方式采取行动和互动。</p>
</div>
</div>
<div class="sect2">
<h3 id="管理说明"><a class="anchor" href="#管理说明"></a>1.3. 管理说明</h3>
<div class="paragraph">
<p>团队是持续开放的团队,专注于IvorySQL项目的一部分。一个团队有其审查者、提交者和维护者,并拥有一个或多个存储库。团队级别的决策来自其维护者。IvorySQL开发人员的典型提升路径是从用户到审查者,然后是提交者和维护者。但获得更多的角色并不意味着你对其他社区成员拥有任何特权。IvorySQL社区中的每个人都是平等的,都有责任与其他贡献者进行建设性合作,建立一个友好的社区。这些角色是对您在IvorySQL开发中做出重大贡献的自然奖励,并为您在开发工作流中提供更多权利,以提高您的效率。同时,他们要求你承担一些额外的责任:</p>
</div>
<div class="paragraph">
<p> 团队荣誉:现在您已经是团队评审员/提交者/维护者的成员,意味着您代表着项目和您的团队成员。所以,请做一个好人来捍卫球队的声誉。</p>
</div>
<div class="paragraph">
<p> 责任:提交者/维护者有权合并拉取请求,因此承担额外的责任来处理接受代码库或文档更改的后果。这包括在它导致问题时恢复或修复它,以及帮助发布经理解决发布前测试周期中发现的任何问题。</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="贡献者指南"><a class="anchor" href="#贡献者指南"></a>2. <strong>贡献者指南</strong></h2>
<div class="sectionbody">
<div class="paragraph">
<p>在贡献之前,我们需要了解下IvorySQL目前的版本以及文档的版本。目前,我们维护着4.5等版本,我们的版本紧跟PG的更新步伐,贡献之前请更新至最新版本。之后我们需要细心浏览一下贡献的样式风格,熟悉代码贡献风格、提Issue样式、拉取PR标题样式、代码注释样式、文档贡献样式、文章贡献样式,这可以帮助您尽快成为IvorySQL的贡献者奥~。</p>
</div>
<div class="sect2">
<h3 id="贡献前的准备"><a class="anchor" href="#贡献前的准备"></a>2.1. 贡献前的准备</h3>
<div class="sect3">
<h4 id="开始"><a class="anchor" href="#开始"></a>2.1.1. 开始</h4>
<div class="paragraph">
<p>IvorySQL是在GitHub上开发的,任何希望对其作出贡献的人都必须拥有GitHub帐户,并熟悉Git工具和工作流。还建议您遵循开发人员的邮件列表,因为一些贡献可能会在那里产生更详细的讨论。</p>
</div>
<div class="paragraph">
<p>如果您有GitHub帐户,fork这个存储库至您的个人仓库中,这样您就可以拥有您的私人副本来开始hacking,并将其用作拉取请求的来源。</p>
</div>
</div>
<div class="sect3">
<h4 id="ivorysql贡献的许可"><a class="anchor" href="#ivorysql贡献的许可"></a>2.1.2. IvorySQL贡献的许可</h4>
<div class="paragraph">
<p>如果您提交的贡献是原创作品,那么您可以假设IvorySQL将作为整个IvorySQL版本的一部分发布给下游用户,该版本将遵循<strong>Apache许可证2.0版本</strong>。</p>
</div>
<div class="paragraph">
<p> 如果您提交的内容不是原创作品,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布。<strong><strong>\*请注意需要满足如下条件\</strong></strong>*:</p>
</div>
<div class="paragraph">
<p>(1)需要给代码的用户一份Apache许可证。</p>
</div>
<div class="paragraph">
<p>(2)如果您修改了代码,需要在被修改的文件中说明。</p>
</div>
<div class="paragraph">
<p>(3)在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、商标、专利声明和其他原来作者规定需要包含的说明。</p>
</div>
<div class="paragraph">
<p>(4)如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache许可证。您可以在Notice中增加自己的许可,但不可以表现为对Apache许可证构成更改。</p>
</div>
<div class="paragraph">
<p> 最后,请记住,从非原始的工作中删除许可标头从来都不是一个好主意。即使您使用的文件部分最初在顶部有许可标头,您也应该保留它。与往常一样,如果您不太确定您的贡献所涉及的许可问题,请随时在开发人员邮件列表中联系我们。</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="您可以做什么贡献"><a class="anchor" href="#您可以做什么贡献"></a>2.2. 您可以做什么贡献</h3>
<div class="sect3">
<h4 id="贡献代码"><a class="anchor" href="#贡献代码"></a>2.2.1. 贡献代码</h4>
<div class="paragraph">
<p>可以将自己修改的bug、新增的功能等代码上传至个人仓库,最后提交PR请求合并至官网:https://github.com/IvorySQL/IvorySQL 。</p>
</div>
</div>
<div class="sect3">
<h4 id="文档贡献"><a class="anchor" href="#文档贡献"></a>2.2.2. 文档贡献</h4>
<div class="paragraph">
<p>IvorySQL社区提供的是中英文文档。英文文档保存在…​文档存储库中,中文文档保存在i18n文档存储库中。您可以为任一文档存储库做出贡献。</p>
</div>
</div>
<div class="sect3">
<h4 id="测试ivorysql和报告问题"><a class="anchor" href="#测试ivorysql和报告问题"></a>2.2.3. 测试IvorySQL和报告问题</h4>
<div class="paragraph">
<p>GitHub: <a href="https://github.com/IvorySQL/IvorySQL" class="bare">https://github.com/IvorySQL/IvorySQL</a></p>
</div>
<div class="paragraph">
<p>码云:https://gitee.com/IvorySQL/</p>
</div>
</div>
<div class="sect3">
<h4 id="参与ivorysql网站建设"><a class="anchor" href="#参与ivorysql网站建设"></a>2.2.4. 参与IvorySQL网站建设</h4>
<div class="paragraph">
<p>IvorySQL官网下载:https://github.com/IvorySQL/Ivory-www</p>
</div>
</div>
<div class="sect3">
<h4 id="回答邮件列表问题"><a class="anchor" href="#回答邮件列表问题"></a>2.2.5. 回答邮件列表问题</h4>
<div class="paragraph">
<p>邮件列表位于 官网下:https://lists.ivorysql.org/</p>
</div>
</div>
<div class="sect3">
<h4 id="贡献文章"><a class="anchor" href="#贡献文章"></a>2.2.6. 贡献文章</h4>
<div class="paragraph">
<p>您可以在IvorySQL-WWW代码仓库自己提交至blog贡献,<a href="mailto:也可以联系我们IvorySQL小助理发送至邮箱ivorysql@highgo.com">也可以联系我们IvorySQL小助理发送至邮箱ivorysql@highgo.com</a> 。</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="如何做出贡献"><a class="anchor" href="#如何做出贡献"></a>2.3. 如何做出贡献</h3>
<div class="sect3">
<h4 id="编码指南"><a class="anchor" href="#编码指南"></a>2.3.1. 编码指南</h4>
<div class="paragraph">
<p>您获得反馈和看到代码合并到项目中的机会在很大程度上取决于更改的粒度。如果您的想法发生了更大的变化,我们强烈建议您在花大量时间编写代码之前,先加入开发人员的邮件列表,并与我们分享您的建议。即使您的建议得到社区的验证,我们仍然建议您将实际工作作为一系列小型的、独立的提交来完成。这使得评审员的工作更加容易,并提高了反馈的及时性。</p>
</div>
<div class="paragraph">
<p> 当谈到IvorySQL的C和C++部分时,我们尝试遵循PostgreSQL编码约定。除此之外:</p>
</div>
<div class="paragraph">
<p> 对于C和Perl代码,如果需要,请运行pgindent。我们建议在查看更改时使用git diff—​color,这样您提交的代码中就不会出现任何虚假的空白问题。</p>
</div>
<div class="paragraph">
<p> 所有贡献给IvorySQL的新功能都应该有与其一起贡献的回归测试覆盖。如果您不确定如何测试或记录您的工作,请在ivorysql-hackers邮件列表中提出问题,社区的开发人员将尽力帮助您。</p>
</div>
<div class="paragraph">
<p> 至少,您应该始终运行make install check world,以确保您没有破坏任何东西。</p>
</div>
</div>
<div class="sect3">
<h4 id="适用于上游postgresql的更改"><a class="anchor" href="#适用于上游postgresql的更改"></a>2.3.2. 适用于上游PostgreSQL的更改</h4>
<div class="paragraph">
<p>如果您正在进行的更改涉及PostgreSQL和IvorySQL之间的通用功能,则可能会要求您将其转发到PostgreSQL。这不仅是为了我们不断减少两个项目之间的差异,而且是为了让与PostgreSQL相关的任何变化都能从对上游PostgreSQL社区更广泛的审查中受益。一般来说,将这两个代码库都放在手边是个好主意,这样您就可以确定您的更改是否需要前移。</p>
</div>
</div>
<div class="sect3">
<h4 id="补丁提交"><a class="anchor" href="#补丁提交"></a>2.3.3. 补丁提交</h4>
<div class="paragraph">
<p>一旦您准备好与IvorySQL核心团队和IvorySQL社区的其他成员共享您的工作,您应该将所有提交推送到从官方IvorySQL派生的您自己的存储库中,并向我们发送请求。</p>
</div>
</div>
<div class="sect3">
<h4 id="补丁审查"><a class="anchor" href="#补丁审查"></a>2.3.4. 补丁审查</h4>
<div class="paragraph">
<p>假定提交的拉取请求通过验证检查,可供同行审查。同行审查是确保对IvorySQL的贡献具有高质量并与路线图和社区期望保持一致的过程。我们鼓励IvorySQL社区的每个成员审查请求并提供反馈。由于您不必成为核心团队成员就可以做到这一点,因此我们建议您向有兴趣成为IvorySQL长期贡献者的任何人提供一系列拉动式评论。</p>
</div>
<div class="paragraph">
<p> 同行评审的一个结果可能是达成共识,即您需要以某些方式修改pull请求。GitHub允许您将其他提交推送到从中发送请求的分支中。这些额外的提交将对所有审阅者可见。</p>
</div>
<div class="paragraph">
<p> 当同行评议收到参与者至少+1张+1和no-1张的选票时,同行评议会趋于一致。在这一点上,您应该期望核心团队成员之一将您的更改引入到项目中。</p>
</div>
<div class="paragraph">
<p>在补丁审查期间的任何时候,您都可能会因审查人员和核心团队成员的工作效率而遇到延迟。请耐心点,也不要气馁。如果您在几天内没有收到预期的反馈,请添加一条评论,要求更新pull请求本身,或者向邮件列表发送一封电子邮件。</p>
</div>
</div>
<div class="sect3">
<h4 id="直接提交到存储库"><a class="anchor" href="#直接提交到存储库"></a>2.3.5. 直接提交到存储库</h4>
<div class="paragraph">
<p>有时,您会看到核心团队成员直接提交到存储库,而无需执行pull请求工作流。这仅适用于小的更改,我们使用的经验法则是:如果更改涉及任何可能导致测试失败的功能,那么它必须通过pull请求工作流。另一方面,如果更改发生在代码库的非功能部分(例如在注释块中修复打字错误),则核心团队成员可以决定直接提交到存储库。</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="提issue"><a class="anchor" href="#提issue"></a>3. <strong>提Issue</strong></h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="第1步-进入new-issue-页面"><a class="anchor" href="#第1步-进入new-issue-页面"></a>3.1. 第1步 进入New issue 页面:</h3>
<div class="paragraph">
<p>1、进入 IvorySql官网:https://github.com/IvorySQL/IvorySQL</p>
</div>
<div class="paragraph">
<p>2、点击New issue</p>
</div>
<div class="imageblock">
<div class="content">
<img src="../_images/p3.png" alt="p3">
</div>
</div>
</div>
<div class="sect2">
<h3 id="第2步选择需要填写的issue类型"><a class="anchor" href="#第2步选择需要填写的issue类型"></a>3.2. 第2步:选择需要填写的issue类型</h3>
<div class="paragraph">
<p><strong>1、bug report</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">Title: 标题</code></pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">## Bug Report
对bug进行描述
\### IvorySQL Version
在IvorySQL哪个版本发现的问题
\### OS Version (uname -a)
系统版本
\### Configuration options ( config.status --config )
配置参数
\### Current Behavior
当前的结果
\### Expected behavior/code
期望的结果
\### Step to reproduce
复现步骤
\### Additional context that can be helpful for identifying the problem
有助于识别问题的其它信息</code></pre>
</div>
</div>
<div class="paragraph">
<p><strong>2、Enhancement</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">Title: 标题</code></pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">## Enhancement
对于期望强化的功能作一个描述</code></pre>
</div>
</div>
<div class="paragraph">
<p><strong>3、Feature Request</strong></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">Title: 标题</code></pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">## Feature Request
描述你期望实现的一个功能</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="第3步提交"><a class="anchor" href="#第3步提交"></a>3.3. 第3步:提交</h3>
<div class="paragraph">
<p>点击 submit new issue 按钮, 提交即可</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="贡献代码-2"><a class="anchor" href="#贡献代码-2"></a>4. <strong>贡献代码</strong></h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="第1步-fork-ivorysql-org仓库"><a class="anchor" href="#第1步-fork-ivorysql-org仓库"></a>4.1. 第1步: Fork <a href="https://ivorysql.org/">ivorysql.org</a>仓库</h3>
<div class="paragraph">
<p>1、打开ivorysql仓库 <a href="https://github.com/IvorySQL/IvorySQL" class="bare">https://github.com/IvorySQL/IvorySQL</a></p>
</div>
<div class="paragraph">
<p>2、点击右上角fork按钮,等待fork完成</p>
</div>
</div>
<div class="sect2">
<h3 id="第2步将fork的仓库克隆至本地"><a class="anchor" href="#第2步将fork的仓库克隆至本地"></a>4.2. 第2步:将fork的仓库克隆至本地</h3>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">cd $working_dir # 将 $working_dir 替换为你想放置 repo 的目录。例如,`cd ~/Documents/GitHub`
git clone git@github.com:$user/IvorySQL.git # 将 `$user` 替换为你的 GitHub ID</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="第3步创建一个新的branch"><a class="anchor" href="#第3步创建一个新的branch"></a>4.3. 第3步:创建一个新的Branch</h3>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">cd $working_dir/IvorySQL
git checkout -b new-branch-name</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="第4步编辑文档或修改代码"><a class="anchor" href="#第4步编辑文档或修改代码"></a>4.4. 第4步:编辑文档或修改代码</h3>
<div class="paragraph">
<p>在新建的new-branch-name中修改代码。</p>
</div>
</div>
<div class="sect2">
<h3 id="第5步生成commit"><a class="anchor" href="#第5步生成commit"></a>4.5. 第5步:生成commit</h3>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">Git add <file>
Git commit -m “commit-message”</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="第6步将修改推送至远端"><a class="anchor" href="#第6步将修改推送至远端"></a>4.6. 第6步:将修改推送至远端</h3>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">Git push -u origin new-branch-name</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="第7步创建一个pull-request"><a class="anchor" href="#第7步创建一个pull-request"></a>4.7. 第7步:创建一个Pull Request</h3>
<div class="paragraph">
<p>1、打开你 Fork 的仓库: <a href="https://github.com/$user/docs-cn">https://github.com/$user/IvorySQL</a>(将 $user 替换为你的 GitHub ID)。</p>
</div>
<div class="paragraph">
<p>2、点击 Compare & pull request 按钮即可创建 PR。</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="提交pr"><a class="anchor" href="#提交pr"></a>5. <strong>提交PR</strong></h2>
<div class="sectionbody">
<div class="paragraph">
<p>对于提交一个PR应该保持一个功能,或者一个bug提交一次。禁止多个功能一次提交。</p>
</div>
<div class="sect2">
<h3 id="第1步创建一个pull-request"><a class="anchor" href="#第1步创建一个pull-request"></a>5.1. 第1步:创建一个Pull Request</h3>
<div class="paragraph">
<p>1、打开你 Fork 的仓库: <a href="https://github.com/$user/docs-cn">https://github.com/$user/IvorySQL</a>(将 $user 替换为你的 GitHub ID)。</p>
</div>
<div class="paragraph">
<p> 2、点击 Compare & pull request 按钮</p>
</div>
</div>
<div class="sect2">
<h3 id="第2步填写pr信息"><a class="anchor" href="#第2步填写pr信息"></a>5.2. 第2步:填写PR信息</h3>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">Fix test
功能描述</code></pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">leave a comment
对该提交功能进行比较详细的描述</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="第3步提交pr"><a class="anchor" href="#第3步提交pr"></a>5.3. 第3步:提交PR</h3>
<div class="paragraph">
<p>点击Create pull request 按钮即可提交。</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="编写文档"><a class="anchor" href="#编写文档"></a>6. <strong>编写文档</strong></h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="准备工作"><a class="anchor" href="#准备工作"></a>6.1. 准备工作</h3>
<div class="paragraph">
<p>(1)下载Markdown或者Typora文档编辑器。</p>
</div>
<div class="paragraph">
<p>(2)检查源仓库是否有更新,如果有更新请先更新并同步到自己的仓库。如有更新请参阅以下步骤,更新至最新版本:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">git remote
git fetch upstream
git merge upstream/main
git push</code></pre>
</div>
</div>
<div class="paragraph">
<p>(3)熟悉样式风格(规范说明)</p>
</div>
</div>
<div class="sect2">
<h3 id="贡献地方"><a class="anchor" href="#贡献地方"></a>6.2. 贡献地方</h3>
<div class="paragraph">
<p>IvorySQL社区提供双语文档。英文文档保存在IvorySQL/文档存储库(文档存储库)中,中文文档保存在 IvorySQL/文档-i18n存储库(文档-i18n 存储库)中。您可以为任何一方文档做出贡献,当然您也可以为两方同时做出贡献。</p>
</div>
<div class="paragraph">
<p> 您可以从以下任何一项开始,以帮助改进IvorySQL网站(英文和 -i18n)上的 IvorySQL文档:</p>
</div>
<div class="paragraph">
<p> (1) 编写完善文档</p>
</div>
<div class="paragraph">
<p> (2) 修复拼写错误或格式(标点符号、空格、缩进、代码块等)</p>
</div>
<div class="paragraph">
<p> (3) 修正或更新不当或过时的说明</p>
</div>
<div class="paragraph">
<p> (4) 添加缺少的内容(句子、段落或新文档)</p>
</div>
<div class="paragraph">
<p> (5) 将文档更改从英文翻译成中文,或从中文翻译成英文。</p>
</div>
<div class="paragraph">
<p> (6) 提交、回复和解决文档问题或文档-i18n问题</p>
</div>
<div class="paragraph">
<p> (7) (高级)查看其他人创建的拉取请求</p>
</div>
</div>
<div class="sect2">
<h3 id="规范说明"><a class="anchor" href="#规范说明"></a>6.3. 规范说明</h3>
<div class="paragraph">
<p>IvorySQL文档是用“markdown”编写的。为确保格式的质量和一致性,在修改更新文档时应遵循某些 Markdown 规则。</p>
</div>
<div class="paragraph">
<p> <strong>Markdown规范</strong></p>
</div>
<div class="paragraph">
<p> 1、标题从一级开始递增使用,禁止跳级使用。例如:一级标题下面不能直接使用三级标题;二级标题下面不能直接使用四级标题。</p>
</div>
<div class="paragraph">
<p> 2、标题必须统一使用 ATX 风格,即在标题前加 # 号来表示标题级别。</p>
</div>
<div class="paragraph">
<p> 3、标题的引导符号 # 后必须空一格再接标题内容。</p>
</div>
<div class="paragraph">
<p> 4、标题的引导符号“#”后只能空一格后再接标题内容,不能有多个空格。</p>
</div>
<div class="paragraph">
<p> 5、标题必须出现在一行行首,即标题的 # 号前不能有任何空格。</p>
</div>
<div class="paragraph">
<p> 6、标题末尾仅能出现中英文问号、反引号、中英文单双引号等符号。其余如冒号、逗号、句号、感叹号等符号均不能在标题末尾使用。</p>
</div>
<div class="paragraph">
<p> 7、标题上面须空一行。</p>
</div>
<div class="paragraph">
<p> 8、文档中不能连续出现内容重复的标题,如一级标题为 # IvorySQL 架构,紧接着的二级标题就不能是 ## IvorySQL 架构。如果不是连续的标题,则标题内容可重复。</p>
</div>
<div class="paragraph">
<p> 9、文档中只能出现一个一级标题。</p>
</div>
<div class="paragraph">
<p> 10、一般来说,除 TOC.md 文件可缩进 2 个空格外,其余所有 .md 文件每缩进一级,默认须缩进 4 个空格。</p>
</div>
<div class="paragraph">
<p> 11、文档中(包括代码块内)禁止出现 Tab 制表符,如需缩进,必须统一用空格代替</p>
</div>
<div class="paragraph">
<p> 12、禁止出现连续的空行。</p>
</div>
<div class="paragraph">
<p> 13、块引用符号 > 后禁止出现多个空格,只能使用一个空格,后接引用内容。</p>
</div>
<div class="paragraph">
<p> 14、使用有序列表时,必须从 1 开始,按顺序递增。</p>
</div>
<div class="paragraph">
<p> 15、使用列表时,每一列表项的标识符(+、-、* 或数字)后只能空一格,后接列表内容。</p>
</div>
<div class="paragraph">
<p> 16、列表(包括有序和无序列表)前后必须各空一行。</p>
</div>
<div class="paragraph">
<p> 17、代码块前后必须各空一行。</p>
</div>
<div class="paragraph">
<p> 18、文档中禁止出现裸露的 URL。如果希望用户能直接点击并打开该 URL,则使用一对尖括号 (<URL>) 包裹该 URL。如果由于特殊情况必须使用裸露的 URL,不需要用户通过点击打开,则使用一对反引号 (<code>URL</code>) 包裹该 URL。</p>
</div>
<div class="paragraph">
<p> 19、使用加粗、斜体等强调效果时,在强调标识符内禁止出现多余的空格。如不能出现 <code><strong> 加粗文本 </strong></code>。</p>
</div>
<div class="paragraph">
<p> 20、单个反引号包裹的代码块内禁止出现多余的空格。如不能出现 ` 示例文本 `。</p>
</div>
<div class="paragraph">
<p> 21、链接文本两边禁止出现多余的空格。如不能出现 [某链接](<a href="https://www.example.com/)。" class="bare">https://www.example.com/)。</a></p>
</div>
<div class="paragraph">
<p> 22、链接必须有链接路径。如不能出现[空链接]()或[空链接](#)等情况。</p>
</div>
</div>
<div class="sect2">
<h3 id="示例"><a class="anchor" href="#示例"></a>6.4. 示例</h3>
<div class="paragraph">
<p>1、标题从一级开始递增使用,禁止跳级使用。</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># Heading 1
### Heading 3
We skipped out a 2nd level heading in this document</code></pre>
</div>
</div>
<div class="paragraph">
<p>2、标题必须统一使用 ATX 风格,即在标题前加 # 号来表示标题级别。</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># Heading 1
## Heading 2
### Heading 3
#### Heading 4
## Another Heading 2
### Another Heading 3</code></pre>
</div>
</div>
<div class="paragraph">
<p>3、标题的引导符号 # 后必须空一格再接标题内容。禁止#后多个空格,禁止#前出现空格</p>
</div>
<div class="paragraph">
<p>错误示范:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># Heading 1
## Heading 2</code></pre>
</div>
</div>
<div class="paragraph">
<p>正确示范:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># Heading 1
## Heading 2</code></pre>
</div>
</div>
<div class="paragraph">
<p>4、标题末尾仅能出现中英文问号、反引号、中英文单双引号等符号。</p>
</div>
<div class="paragraph">
<p>错误示范</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># This is a heading.</code></pre>
</div>
</div>
<div class="paragraph">
<p>正确示范</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># This is a heading</code></pre>
</div>
</div>
<div class="paragraph">
<p>5、标题上面空一行</p>
</div>
<div class="paragraph">
<p>错误示范</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># Heading 1
Some text
Some more text## Heading 2</code></pre>
</div>
</div>
<div class="paragraph">
<p>正确示范</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># Heading 1
Some text
Some more text
## Heading 2</code></pre>
</div>
</div>
<div class="paragraph">
<p>6、文档中不能连续出现内容重复的标题,如一级标题为 # IvorySQL 描述,紧接着的二级标题就不能是 ## IvorySQL 描述。如果不是连续的标题,则标题内容可重复。</p>
</div>
<div class="paragraph">
<p>错误示范</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># Some text
## Some text</code></pre>
</div>
</div>
<div class="paragraph">
<p>正确示范</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># Some text
## Some more text</code></pre>
</div>
</div>
<div class="paragraph">
<p>7、文档中只能出现一个一级标题。</p>
</div>
<div class="paragraph">
<p>错误示范</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># Top level heading
# Another top-level heading</code></pre>
</div>
</div>
<div class="paragraph">
<p>正确释放</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc"># Title
## Heading
## Another heading</code></pre>
</div>
</div>
<div class="paragraph">
<p>8、一般来说,除 TOC.md 文件可缩进 2 个空格外,其余所有 .md 文件每缩进一级,默认须缩进 4 个空格。</p>
</div>
<div class="paragraph">
<p>错误示范</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-asciidoc hljs" data-lang="asciidoc">* List item
* Nested list item indented by 3 spaces</code></pre>
</div>