User Tools

Site Tools


apache-subversion-wikipedia

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

apache-subversion-wikipedia [2018/11/21 09:36] (current)
Line 1: Line 1:
 + <​HTML> ​ <​br><​div><​p><​b>​ Apache Subversion </b> (thường viết tắt là <b> SVN </​b>​sau tên lệnh <i> svn </i>) là một phiên bản phần mềm và hệ thống kiểm soát sửa đổi được phân phối dưới dạng mã nguồn mở theo Giấy phép Apache. [19659002] Các nhà phát triển phần mềm sử dụng Subversion để duy trì các phiên bản hiện tại và lịch sử của các tệp như mã nguồn, trang web và tài liệu. Mục tiêu của nó là trở thành người kế thừa tương thích chủ yếu cho Hệ thống phiên bản đồng thời được sử dụng rộng rãi (CVS).
 +</​p><​p>​ Cộng đồng nguồn mở đã sử dụng rộng rãi Subversion: ví dụ như trong các dự án như Apache Software Foundation, Free Pascal, FreeBSD, GCC và SourceForge. CodePlex được sử dụng để cung cấp quyền truy cập vào Subversion cũng như các loại máy khách khác.
 +</​p><​p>​ Subversion được tạo ra bởi CollabNet Inc. vào năm 2000 và hiện là dự án Apache cấp cao nhất được xây dựng và sử dụng bởi cộng đồng người đóng góp toàn cầu.
 +</p>
  
 +
 +<​h2><​span class="​mw-headline"​ id="​History">​ Lịch sử </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +<p> CollabNet đã thành lập dự án Subversion vào năm 2000 như một nỗ lực để viết hệ thống kiểm soát phiên bản nguồn mở hoạt động giống CVS nhưng đã sửa lỗi và cung cấp một số tính năng thiếu trong CVS. <sup id="​cite_ref-bookhistory_3-0"​ class="​reference">​[3]</​sup> ​ Đến năm 2001, Subversion đã nâng cấp đủ để lưu trữ mã nguồn riêng của mình, <sup id="​cite_ref-bookhistory_3-1"​ class="​reference">​[3]</​sup> ​ và vào tháng 2 năm 2004, phiên bản 1.0 đã được phát hành. <sup id="​cite_ref-4"​ class="​reference">​[4]</​sup> ​ Vào tháng 11 năm 2009, Subversion được chấp nhận vào Apache Incubator : điều này đánh dấu sự khởi đầu của quá trình để trở thành một dự án Apache cấp cao nhất. <sup id="​cite_ref-SDT2011_5-0"​ class="​reference">​[5]</​sup> ​ Nó đã trở thành một dự án Apache cấp cao nhất vào ngày 17 tháng 2 năm 2010. <sup id="​cite_ref-6"​ class="​reference">​[6]</​sup></​p>​
 +<table class="​wikitable"><​tbody><​tr><​th>​ Phiên bản
 +</th>
 +<th> Ngày phát hành ban đầu
 +</th>
 +<th> Phiên bản mới nhất
 +</th>
 +<th> Ngày phát hành
 +</th>
 +<th> Trạng thái
 +</​th></​tr><​tr><​td style="​background-color:​ #​FDB3AB;"​ title="​Old version, no longer supported"​ data-sort-value="​1.0"><​span style="​display:​ none;">​ Phiên bản cũ, không còn được hỗ trợ: </​span>​ 1.0
 +</td>
 +<td> 2004-02-23
 +</td>
 +<td> 1.0.9
 +</td>
 +<td> 2004-10-13
 +</td>
 +<td> Không còn được hỗ trợ
 +</​td></​tr><​tr><​td style="​background-color:​ #​FDB3AB;"​ title="​Old version, no longer supported"​ data-sort-value="​1.1"><​span style="​display:​ none;">​ Phiên bản cũ, không còn được hỗ trợ: </​span>​ 1.1
 +</td>
 +<td> 2004-09-29 <sup id="​cite_ref-7"​ class="​reference">​ [7] </​sup>​ </td>
 +<td> 1.1.4
 +</td>
 +<td> 2005-04-01
 +</td>
 +<td> Không còn được hỗ trợ
 +</​td></​tr><​tr><​td style="​background-color:​ #​FDB3AB;"​ title="​Old version, no longer supported"​ data-sort-value="​1.2"><​span style="​display:​ none;">​ Phiên bản cũ, không còn được hỗ trợ: </​span>​ 1.2
 +</td>
 +<td> 2005-05-21 <sup id="​cite_ref-8"​ class="​reference">​ [8] </​sup>​ </td>
 +<td> 1.2.3
 +</td>
 +<td> 2005-08-19
 +</td>
 +<td> Không còn được hỗ trợ
 +</​td></​tr><​tr><​td style="​background-color:​ #​FDB3AB;"​ title="​Old version, no longer supported"​ data-sort-value="​1.3"><​span style="​display:​ none;">​ Phiên bản cũ, không còn được hỗ trợ: </​span>​ 1.3
 +</td>
 +<td> 2005-12-30 <sup id="​cite_ref-9"​ class="​reference">​ [9] </​sup>​ </td>
 +<td> 1.3.2
 +</td>
 +<td> 2006-05-23
 +</td>
 +<td> Không còn được hỗ trợ
 +</​td></​tr><​tr><​td style="​background-color:​ #​FDB3AB;"​ title="​Old version, no longer supported"​ data-sort-value="​1.4"><​span style="​display:​ none;">​ Phiên bản cũ, không còn được hỗ trợ: </​span>​ 1.4
 +</td>
 +<td> 2006-09-10 <sup id="​cite_ref-10"​ class="​reference">​ [10] </​sup>​ </td>
 +<td> 1.4.6
 +</td>
 +<td> 2007-12-21
 +</td>
 +<td> Không còn được hỗ trợ
 +</​td></​tr><​tr><​td style="​background-color:​ #​FDB3AB;"​ title="​Old version, no longer supported"​ data-sort-value="​1.5"><​span style="​display:​ none;">​ Phiên bản cũ, không còn được hỗ trợ: </​span>​ 1.5
 +</td>
 +<td> 2008-06-19 <sup id="​cite_ref-11"​ class="​reference">​ [11] </​sup>​ </td>
 +<td> 1.5.9
 +</td>
 +<td> 2010-12-06
 +</td>
 +<td> Không còn được hỗ trợ
 +</​td></​tr><​tr><​td style="​background-color:​ #​FDB3AB;"​ title="​Old version, no longer supported"​ data-sort-value="​1.6"><​span style="​display:​ none;">​ Phiên bản cũ, không còn được hỗ trợ: </​span>​ 1.6
 +</td>
 +<td> 2009-03-20 <sup id="​cite_ref-12"​ class="​reference">​ [12] </​sup>​ </td>
 +<td> 1,6,23
 +</td>
 +<td> 2013-05-30
 +</td>
 +<td> Không còn được hỗ trợ
 +</​td></​tr><​tr><​td style="​background-color:​ #​FDB3AB;"​ title="​Old version, no longer supported"​ data-sort-value="​1.7"><​span style="​display:​ none;">​ Phiên bản cũ, không còn được hỗ trợ: </​span>​ 1.7
 +</td>
 +<td> 2011-10-11 <sup id="​cite_ref-13"​ class="​reference">​ [13] </​sup>​ </td>
 +<td> 1.7.22
 +</td>
 +<td> 2015-08-12
 +</td>
 +<td> Không còn được hỗ trợ
 +</​td></​tr><​tr><​td style="​background-color:​ #​FDB3AB;"​ title="​Old version, no longer supported"​ data-sort-value="​1.8"><​span style="​display:​ none;">​ Phiên bản cũ, không còn được hỗ trợ: </​span>​ 1.8
 +</td>
 +<td> 2013-06-18 <sup id="​cite_ref-14"​ class="​reference">​ [14] </​sup>​ </td>
 +<td> 1.8.19
 +</td>
 +<td> 2017-08-10
 +</td>
 +<td> Không còn được hỗ trợ
 +</​td></​tr><​tr><​td class="​templateVersion co" style="​background-color:​ #​FEF8C6;"​ title="​Older version, yet still supported"​ data-sort-value="​1.9"><​span style="​display:​ none;">​ Phiên bản cũ hơn nhưng vẫn được hỗ trợ: </​span>​ 1.9
 +</td>
 +<td> 2015-08-05 <sup id="​cite_ref-15"​ class="​reference">​ [15] </​sup>​ </td>
 +<td> 1.9.9
 +</td>
 +<td> 2018-07-20
 +</td>
 +<td> Được hỗ trợ một phần
 +</​td></​tr><​tr><​td class="​templateVersion co" style="​background-color:​ #​FEF8C6;"​ title="​Older version, yet still supported"​ data-sort-value="​1.10"><​span style="​display:​ none;">​ Phiên bản cũ hơn nhưng vẫn được hỗ trợ: </​span>​ 1,10
 +</td>
 +<td> 2018-04-13 <sup id="​cite_ref-16"​ class="​reference">​ [16] </​sup>​ </td>
 +<td> 1,10,3
 +</td>
 +<td> 2018-10-10
 +</td>
 +<td> Được hỗ trợ một phần
 +</​td></​tr><​tr><​td class="​templateVersion c" style="​background-color:​ #​D4F4B4;"​ title="​Current stable version"​ data-sort-value="​1.11"><​span style="​display:​ none;">​ Phiên bản ổn định hiện tại: </​span>​ <b> 1.11 </b>
 +</td>
 +<td> 2018-10-30 <sup id="​cite_ref-17"​ class="​reference">​ [17] </​sup>​ </td>
 +<td> 1,11,0
 +</td>
 +<td> 2018-10-30
 +</td>
 +<td> Được hỗ trợ đầy đủ
 +</​td></​tr><​tr><​td colspan="​5"><​small><​div class="​templateVersion l" style="​margin-left:​ -1em;"><​p><​span style="​white-space:​ nowrap;"><​b>​ Chú thích: </b> </​span>​ </​p><​p>​ <span style="​border-left:​ 1.2em solid #FDB3AB; padding-left:​ 0.3em; white-space:​ nowrap;"​ title="​Old version, no longer supported">​ Phiên bản cũ </​span>​ </​p><​p>​ <span style="​border-left:​ 1.2em solid #FEF8C6; padding-left:​ 0.3em; white-space:​ nowrap;"​ title="​An older version, yet still supported">​ Phiên bản cũ hơn, vẫn được hỗ trợ </​span>​ </​p><​p>​ <span style="​border-left:​ 1.2em solid #D4F4B4; padding-left:​ 0.3em; white-space:​ nowrap;"​ title="​Latest stable version">​ <b> Phiên bản mới nhất </b> </​span>​ </​p><​p>​ <span style="​border-left:​ 1.2em solid #FED1A0; padding-left:​ 0.3em; white-space:​ nowrap;"​ title="​Latest preview of a future release">​ Phiên bản xem trước mới nhất </​span>​ </​p><​p>​ <span style="​border-left:​ 1.2em solid #C1E6F5; padding-left:​ 0.3em; white-space:​ nowrap;"​ title="​A future release">​ Bản phát hành trong tương lai </​span></​p></​div></​small>​
 +</​td></​tr></​tbody></​table><​p>​ Ngày phát hành được trích xuất từ ​​tệp <​code>​ CHANGES </​code>​ của Apache Subversion, <sup id="​cite_ref-18"​ class="​reference">​[18]</​sup> ​ ghi lại tất cả lịch sử phát hành .
 +</p>
 +<​h2><​span class="​mw-headline"​ id="​Features">​ Các tính năng </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +<​ul><​li>​ Cam kết là các hoạt động nguyên tử thực sự (các hoạt động cam kết bị gián đoạn trong CVS sẽ gây ra sự không nhất quán của kho lưu trữ hoặc tham nhũng) </li>
 +<li> </li>
 +<li> Hệ thống duy trì phiên bản cho các thư mục, đổi tên và siêu dữ liệu tệp (nhưng không phải cho dấu thời gian). Người dùng có thể di chuyển và / hoặc sao chép toàn bộ thư mục cây một cách nhanh chóng, trong khi vẫn giữ lại toàn bộ lịch sử sửa đổi. </li>
 +<li> Phiên bản của các liên kết tượng trưng </li>
 +<li> Hỗ trợ gốc cho các tệp nhị phân, với dung lượng lưu trữ nhị phân không gian hiệu quả. </li>
 +<li> Apache Máy chủ HTTP làm máy chủ mạng, WebDAV / Delta-V cho giao thức. Ngoài ra còn có một quy trình máy chủ độc lập được gọi là svnserve sử dụng giao thức tùy chỉnh qua TCP / IP. </li>
 +<li> Branching là một hoạt động rẻ, độc lập với kích thước tệp (mặc dù Subversion không phân biệt giữa chi nhánh và thư mục) </li>
 +<li> </li>
 +<li> Giao thức máy khách / máy chủ gửi sự khác biệt theo cả hai hướng </li>
 +<li> Chi phí tỷ lệ thuận với kích thước thay đổi, không theo kích thước dữ liệu. </li>
 +<li> Đầu ra có thể phân tích, bao gồm đầu ra bản ghi XML. </li>
 +<li> nguồn được cấp phép - Giấy phép Apache kể từ bản phát hành 1.7; các phiên bản trước sử dụng một dẫn xuất của Giấy phép Phần mềm Apache 1.1 </li>
 +<li> Các tin nhắn chương trình được quốc tế hóa. </li>
 +<li> Khóa tệp cho các tệp không thể nén (&​quot;​các lần kiểm tra dành riêng&​quot;​). </li>
 +<li> Ủy quyền dựa trên đường dẫn. PHP, Python, Perl, Ruby và Java </li>
 +<li> Hỗ trợ MIME đầy đủ - người dùng có thể xem hoặc thay đổi loại MIME của mỗi tệp, với phần mềm biết loại MIME nào có thể có sự khác biệt so với các phiên bản trước được hiển thị. Theo dõi - Hợp nhất giữa các nhánh sẽ được theo dõi, điều này cho phép kết hợp tự động giữa các nhánh mà không cần nói cho Subversion biết những gì và không cần sáp nhập. </li>
 +<li> Các thay đổi để tổ chức các cam kết thành các nhóm cam kết </​li></​ul><​h3><​span class="​mw-headline"​ id="​Repository_types">​ Loại lưu trữ </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ Chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h3>​
 +<p> Subversion cung cấp hai loại lưu trữ kho lưu trữ.
 +</p>
 +<​h4><​span id="​Berkeley_DB_.28deprecated.5B19.5D.29"/><​span class="​mw-headline"​ id="​Berkeley_DB_(deprecated[19])">​ Berkeley DB (không dùng nữa <sup id="​cite_ref-19"​ class="​reference">​[19]</​sup>​) </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h4>​
 +<p> Bản gốc phát triển của Subversion sử dụng gói Berkeley DB.
 +Subversion có một số hạn chế với việc sử dụng Berkeley DB khi một chương trình truy cập cơ sở dữ liệu bị treo hoặc chấm dứt cưỡng bức. Không có mất dữ liệu hoặc tham nhũng xảy ra, nhưng kho lưu trữ vẫn còn ngoại tuyến trong khi Berkeley DB replay tạp chí và làm sạch lên bất kỳ ổ khóa xuất sắc. Cách an toàn nhất để sử dụng Subversion với một kho lưu trữ Berkeley DB liên quan đến một quá trình máy chủ duy nhất chạy như một người dùng (thay vì thông qua một hệ thống tập tin được chia sẻ). <sup id="​cite_ref-backend_20-0"​ class="​reference">​[20]</​sup></​p>​
 +<​h4><​span class="​mw-headline"​ id="​FSFS">​ FSFS </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ edit <span class="​mw-editsection-bracket">​] </​span></​span></​h4>​
 +<p> In 2004, một hệ thống phụ lưu trữ mới đã được phát triển và đặt tên là FSFS.
 +Nó hoạt động nhanh hơn backend Berkeley DB trên các thư mục với một số lượng lớn các tệp và chiếm ít không gian đĩa hơn,
 +<sup id="​cite_ref-backend_20-1"​ class="​reference">​ [20] </​sup>​ </​p><​p>​ Bắt đầu với Subversion 1.2, FSFS đã trở thành kho lưu trữ dữ liệu mặc định cho các kho lưu trữ mới.
 +</​p><​p>​ Từ nguyên của &​quot;​FSFS&​quot;​ dựa trên việc sử dụng thuật ngữ &​quot;​hệ thống tệp&​quot;​ của Subversion cho hệ thống lưu trữ kho lưu trữ của nó.
 +FSFS lưu trữ nội dung của nó trực tiếp trong hệ thống tập tin của hệ điều hành, chứ không phải là một hệ thống có cấu trúc như Berkeley DB.
 +Vì vậy, nó là một &​quot;​[Subversion] FileSystem trên đỉnh FileSystem&​quot;​.
 +</p>
 +<​h4><​span class="​mw-headline"​ id="​FSX">​ FSX </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h4>​
 +<p> Một hệ thống tệp mới, được gọi là FSX, đang được phát triển để loại bỏ một số hạn chế của FSFS. Kể từ phiên bản 1.9, nó không được coi là sẵn sàng sản xuất. <sup id="​cite_ref-21"​ class="​reference">​[21]</​sup></​p>​
 +<​h3><​span class="​mw-headline"​ id="​Repository_access">​ Truy cập kho lưu trữ </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h3>​
 +
 +<p> Truy cập vào kho lưu trữ Subversion có thể diễn ra bằng cách:
 +</p>
 +<​ol><​li>​ Hệ thống tệp cục bộ hoặc hệ thống tệp mạng, <sup id="​cite_ref-22"​ class="​reference">​[22]</​sup> ​ được truy cập trực tiếp bởi ứng dụng khách. Chế độ này sử dụng lược đồ truy cập <tt>: /// path </​tt>​. </li>
 +<li> WebDAV / Delta-V (trên http hoặc https) bằng mô-đun <tt> mod_dav_svn </tt> cho Apache 2. Chế độ này sử dụng <tt> http: // host / path </tt> lược đồ truy cập hoặc <tt> https: // máy chủ / đường dẫn </tt> cho các kết nối an toàn sử dụng ssl. </li>
 +<li> Giao thức &​quot;​svn&​quot;​ tùy chỉnh (cổng mặc định 3690), sử dụng văn bản thuần hoặc qua TCP / IP. Chế độ này sử dụng lược đồ truy cập <tt> svn: // host / path </tt> cho giao thông không được mã hóa hoặc <tt> svn + ssh: // host / path </tt> lược đồ cho đường hầm qua ssh. </​li></​ol><​p>​ Tất cả ba có nghĩa là có thể truy cập cả kho FSFS và Berkeley DB.
 +</​p><​p>​ Mọi phiên bản 1.x của ứng dụng khách đều có thể hoạt động với bất kỳ máy chủ 1.x nào. Các máy khách và máy khách mới hơn có các tính năng bổ sung và khả năng hoạt động, nhưng có hỗ trợ dự phòng cho các máy khách / máy chủ cũ. <sup id="​cite_ref-23"​ class="​reference">​[23]</​sup></​p>​
 +
 +<p> Bên trong, một hệ thống Subversion bao gồm một số thư viện được sắp xếp thành các lớp. Mỗi thực hiện một nhiệm vụ cụ thể và cho phép các nhà phát triển tạo ra các công cụ của riêng họ ở mức độ phức tạp và độ đặc hiệu mong muốn.
 +</p>
 +<​dl><​dt>​ Fs </dt>
 +<dd> Cấp thấp nhất; nó triển khai hệ thống tập tin được phiên bản lưu trữ dữ liệu người dùng </dd>
 +<dt> Repos </dt>
 +<dd> Lo ngại về kho lưu trữ được xây dựng xung quanh hệ thống tập tin. Nó có nhiều chức năng trợ giúp và xử lý các &​quot;​móc&​quot;​ khác nhau mà một kho lưu trữ có thể có, ví dụ: các tập lệnh chạy khi một hành động được thực hiện. </dd>
 +<dt> mod_dav_svn </dt>
 +<dd> Cung cấp quyền truy cập WebDAV / Delta-V thông qua Apache 2. </dd>
 +<dt> Ra </dt>
 +<dd> Xử lý &​quot;​truy cập kho lưu trữ&​quot;,​ cả cục bộ lẫn từ xa. Từ thời điểm này, các kho lưu trữ được gọi bằng URL, ví dụ: </​dd></​dl><​dl><​dt><​ul><​li><​tt>​ tệp: /// path / </tt> để truy cập cục bộ, </li>
 +<li> <tt> http: // host / path / </tt> hoặc <tt> https: // host / path / </tt> để truy cập WebDAV hoặc </li>
 +<li> <tt> svn: // host / path / </tt> hoặc <tt> svn + ssh: // host / path / </tt> cho giao thức SVN </​li></​ul></​dt></​dl><​dl><​dt>​ Khách hàng, Wc </dt>
 +<dd> Cấp độ cao nhất. Nó tóm tắt quyền truy cập kho lưu trữ và cung cấp các tác vụ khách hàng phổ biến, chẳng hạn như xác thực người dùng hoặc so sánh các phiên bản. Khách hàng Subversion sử dụng thư viện Wc để quản lý bản sao làm việc cục bộ </​dd></​dl><​h2><​span class="​mw-headline"​ id="​Filesystem">​ Hệ thống tập tin </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +<div class="​thumb tright"><​div class="​thumbinner"​ style="​width:​252px;"><​img alt=" Svn 3D-tree.svg " src="​http://​upload.wikimedia.org/​wikipedia/​commons/​thumb/​0/​03/​Svn_3D-tree.svg/​250px-Svn_3D-tree.svg.png"​ width="​250"​ height="​350"​ class="​thumbimage"​ srcset="//​upload.wikimedia.org/​wikipedia/​commons/​thumb/​0/​03/​Svn_3D-tree.svg/​375px-Svn_3D-tree.svg.png 1.5x, //​upload.wikimedia.org/​wikipedia/​commons/​thumb/​0/​03/​Svn_3D-tree.svg/​500px-Svn_3D-tree.svg.png 2x" data-file-width="​500"​ data-file-height="​700"/> ​ </​div></​div>​
 +<p> Người ta có thể xem hệ thống tệp Subversion là &​quot;​hai chiều dài &quot;. <sup id="​cite_ref-24"​ class="​reference">​[24]</​sup> ​ Hai tọa độ được sử dụng để định rõ các mục hệ thống tập tin:
 +</p>
 +<p> Mỗi sửa đổi trong một hệ thống tệp Subversion đều có <i> gốc riêng </​i>​được sử dụng để truy cập nội dung tại bản sửa đổi đó. Các tệp được lưu trữ dưới dạng liên kết đến thay đổi gần đây nhất; do đó một kho lưu trữ Subversion khá nhỏ gọn. Hệ thống này tiêu thụ không gian lưu trữ theo tỷ lệ thuận với số lượng thay đổi được thực hiện, chứ không phải số lần sửa đổi.
 +</​p><​p>​ Hệ thống tệp Subversion sử dụng các giao dịch để giữ nguyên thay đổi nguyên tử. Một giao dịch hoạt động trên một phiên bản được chỉ định của hệ thống tập tin, không nhất thiết phải là phiên bản mới nhất. Giao dịch có <i> root </i> của riêng nó, mà trên đó các thay đổi được thực hiện. Sau đó, nó được cam kết và trở thành bản sửa đổi mới nhất hoặc bị hủy bỏ. Giao dịch thực sự là một đối tượng hệ thống tập tin tồn tại lâu dài; một khách hàng không cần phải cam kết hoặc hủy bỏ một giao dịch, thay vào đó nó cũng có thể bắt đầu một giao dịch, thoát, và sau đó có thể mở lại giao dịch và tiếp tục sử dụng nó. Có khả năng, nhiều khách hàng có thể truy cập cùng một giao dịch và làm việc cùng nhau trên một thay đổi nguyên tử, mặc dù không có khách hàng hiện tại nào phơi bày khả năng này.
 +</p>
 +<​h2><​span class="​mw-headline"​ id="​Properties">​ Thuộc tính </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +<p> Một tính năng quan trọng của hệ thống tệp Subversion là thuộc tính: đơn giản <i> tên </i> = <i> giá trị </i> cặp văn bản. Thuộc tính xảy ra trên các mục hệ thống tệp (tức là, tệp và thư mục). Đây là những phiên bản giống như những thay đổi khác cho hệ thống tập tin. Người dùng có thể thêm bất kỳ thuộc tính nào mà họ muốn, và máy khách Subversion sử dụng một tập hợp các thuộc tính, mà nó bắt đầu bằng &#​39;​svn:&#​39;​.
 +</p>
 +<​dl><​dt>​ <tt> svn: executable </tt> </dt>
 +<dd> Tạo các tệp trên các bản sao làm việc được lưu trữ trên Unix có thể thực thi. </dd>
 +<dt> <tt> svn: mime-type </tt> </dt>
 +<dd> Lưu trữ loại phương tiện Internet (&​quot;​MIME gõ &quot;) của một tập tin. </dd>
 +<dt> <tt> svn: ignore </tt> </dt>
 +<dd> Danh sách các mẫu tên tập tin cần bỏ qua trong một thư mục. Tương tự như tập tin <tt> .cvsignore <tt> của CVS </dd>
 +<dt> <tt> svn: keywords </tt> </dt>
 +<dd> Danh sách các từ khóa <i> </i> để thay thế thành tệp khi thay đổi được thực hiện. Bản thân tệp cũng phải tham chiếu từ khóa là <tt> $ keyword $ </tt> hoặc <tt> $ keyword: ... $ </​tt>​. Điều này được sử dụng để duy trì một số thông tin nhất định (ví dụ: tác giả, ngày thay đổi cuối cùng, số sửa đổi) trong một tệp mà không có sự can thiệp của con người <br/> Cơ chế thay thế từ khóa bắt nguồn từ RCS và từ CVS. <sup id="​cite_ref-25"​ class="​reference">​ [25] </​sup>​ </dd>
 +<dt> <tt> svn: eol-style </tt> </dt>
 +<dd> Làm cho khách hàng chuyển đổi các ký tự cuối dòng trong các tệp văn bản. Được sử dụng khi bản sao làm việc là cần thiết với một phong cách EOL cụ thể. &​quot;​native&​quot;​ thường được sử dụng, để EOL khớp với kiểu OS EOL của người dùng. Kho lưu trữ có thể yêu cầu thuộc tính này trên tất cả các tệp để ngăn chặn kết thúc dòng không nhất quán, có thể gây ra sự cố. </dd>
 +<dt> <tt> svn: externals </tt> </dt>
 +<dd> Cho phép các phần của các kho khác được tự động kiểm tra vào </dd>
 +<dt> <tt> svn: needs-lock </tt> </dt>
 +<dd> Chỉ định rằng tệp cần được kiểm tra với quyền của tệp được đặt thành chỉ đọc. Điều này được thiết kế để sử dụng với cơ chế khóa. Quyền chỉ đọc nhắc nhở người dùng lấy khóa trước khi sửa đổi tệp: lấy khóa làm cho tệp có thể ghi được và việc giải phóng khóa làm cho nó chỉ đọc trở lại. Khóa chỉ được thực thi trong một thao tác cam kết. Khóa có thể được sử dụng mà không cần thiết lập thuộc tính này. Tuy nhiên, điều đó không được khuyến khích, bởi vì nó giới thiệu nguy cơ ai đó sửa đổi một tệp bị khóa; họ sẽ chỉ phát hiện ra nó đã bị khóa khi cam kết của họ thất bại. </dd>
 +<dt> <tt> svn: special </tt> </dt>
 +<dd> Thuộc tính này không được thiết lập hoặc sửa đổi trực tiếp bởi người dùng. Tính đến năm 2010 <sup class="​plainlinks noexcerpt noprint asof-tag update"​ style="​display:​none;">​[update]</​sup> ​ nó chỉ được sử dụng để có các liên kết tượng trưng trong kho lưu trữ. Khi một liên kết tượng trưng được thêm vào kho lưu trữ, một tệp chứa mục tiêu liên kết được tạo với tập hợp thuộc tính này. </dd>
 +<dt> <tt> svn: mergeinfo </tt> </dt>
 +<dd> Được sử dụng để theo dõi dữ liệu hợp nhất (số sửa đổi) trong Subversion 1.5 (hoặc mới hơn) ). Thuộc tính này được tự động duy trì bởi lệnh <tt> hợp nhất </tt> và không nên thay đổi giá trị của nó theo cách thủ công. <sup id="​cite_ref-26"​ class="​reference">​[26]</​sup></​dd></​dl><​p>​ Subversion cũng sử dụng các thuộc tính trên bản chỉnh sửa. Giống như các thuộc tính trên trên các mục hệ thống tệp, các tên hoàn toàn tùy ý, với máy khách Subversion sử dụng các thuộc tính nhất định được đặt trước bằng &#​39;​svn:&#​39;​. Tuy nhiên, các thuộc tính này không được phiên bản và có thể được thay đổi sau này.
 +</p>
 +<​dl><​dt>​ <tt> svn: date </tt> </dt>
 +<dd> dấu ngày và giờ của một sửa đổi </dd>
 +<dt> <tt> svn: author </tt> </dt>
 +<dd> tên của người dùng đã gửi (các) thay đổi </dd>
 +<dt> <tt> svn: log </tt> </dt>
 +<dd> mô tả do người dùng cung cấp về (các) thay đổi; </​dd></​dl><​h2><​span class="​mw-headline"​ id="​Branching_and_tagging">​ Phân nhánh và gắn thẻ </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +<p> Subversion sử dụng mô hình phân nhánh giữa các tệp từ Perforce <sup id="​cite_ref-27"​ class="​reference">​[27]</​sup> ​ để triển khai các nhánh và gắn thẻ. Chi nhánh là một dòng phát triển riêng biệt. <sup id="​cite_ref-28"​ class="​reference">​[28]</​sup> ​ Gắn thẻ đề cập đến việc ghi nhãn kho lưu trữ tại một thời điểm nhất định để có thể dễ dàng tìm thấy nó trong tương lai. Trong Subversion, sự khác biệt duy nhất giữa các nhánh và thẻ là cách chúng được sử dụng.
 +</​p><​p>​ Một chi nhánh hoặc thẻ mới được thiết lập bằng cách sử dụng lệnh &​quot;<​tt>​ svn copy </​tt>&​quot;,​ sẽ được sử dụng thay cho cơ chế hệ điều hành gốc. Thư mục sao chép được liên kết với thư mục gốc trong kho lưu trữ để lưu giữ lịch sử của nó và bản sao chiếm rất ít không gian trong kho lưu trữ.
 +</​p><​p>​ Tất cả các phiên bản trong mỗi chi nhánh duy trì lịch sử của tập tin lên đến điểm của bản sao, cộng với bất kỳ thay đổi nào được thực hiện kể từ đó. Người ta có thể &​quot;​hợp nhất&​quot;​ các thay đổi trở lại vào thân cây hoặc giữa các nhánh.
 +</p>
 +<div class="​center"><​div class="​thumb tnone"><​div class="​thumbinner"​ style="​width:​652px;"><​img alt=""​ src="​http://​upload.wikimedia.org/​wikipedia/​commons/​thumb/​4/​4e/​Subversion_project_visualization.svg/​650px-Subversion_project_visualization.svg.png"​ width="​650"​ height="​167"​ class="​thumbimage"​ srcset="//​upload.wikimedia.org/​wikipedia/​commons/​thumb/​4/​4e/​Subversion_project_visualization.svg/​975px-Subversion_project_visualization.svg.png 1.5x, //​upload.wikimedia.org/​wikipedia/​commons/​thumb/​4/​4e/​Subversion_project_visualization.svg/​1300px-Subversion_project_visualization.svg.png 2x" data-file-width="​815"​ data-file-height="​210"/> ​ <div class="​thumbcaption">​ Hình ảnh của một dự án Subversion đơn giản </​div></​div></​div></​div>​
 +<​h2><​span class="​mw-headline"​ id="​Limitations_and_problems">​ Giới hạn và vấn đề </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +<p> Một vấn đề đã biết trong Subversion ảnh hưởng đến việc thực hiện thao tác đổi tên tệp và thư mục. Vào năm 2014 <sup class="​plainlinks noexcerpt noprint asof-tag update"​ style="​display:​none;">​[update]</​sup>​Subversion thực hiện việc đổi tên tệp và thư mục thành &​quot;​bản sao&​quot;​ thành tên mới, sau đó là &​quot;​xóa&​quot;​ tên cũ. Chỉ thay đổi tên, tất cả dữ liệu liên quan đến lịch sử chỉnh sửa vẫn giữ nguyên và Subversion vẫn sẽ sử dụng tên cũ trong các phiên bản cũ hơn của &​quot;​cây&​quot;​. Tuy nhiên, Subversion có thể bị nhầm lẫn khi di chuyển xung đột với các chỉnh sửa được thực hiện ở nơi khác, <sup id="​cite_ref-29"​ class="​reference">​[29]</​sup> ​ cho cả các cam kết thông thường và khi hợp nhất các chi nhánh <sup id="​cite_ref-30"​ class="​reference">​[30]</​sup> ​ Bản phát hành Subversion 1.5 giải quyết một số trường hợp này trong khi một số khác vẫn gặp sự cố. <sup id="​cite_ref-31"​ class="​reference">​[31]</​sup> ​ phát hành giải quyết một số vấn đề này bằng cách làm cho di chuyển một hoạt động hạng nhất trên máy khách, nhưng nó vẫn được coi là bản sao + xóa trong kho. <sup id="​cite_ref-32"​ class="​reference">​ [32] </​sup>​ </​p><​p>​ Năm 2013 <sup class="​plainlinks noexcerpt noprint asof-tag update"​ style="​display:​none;">​[update]</​sup>​Subversion thiếu một số tính năng quản lý và quản trị kho lưu trữ. Ví dụ: ai đó có thể muốn chỉnh sửa kho lưu trữ để xóa vĩnh viễn tất cả các bản ghi lịch sử của dữ liệu nhất định. Subversion không hỗ trợ tích hợp để đạt được điều này đơn giản. <sup id="​cite_ref-33"​ class="​reference">​ [33] </​sup>​ </​p><​p>​ Subversion lưu trữ các bản sao bổ sung của dữ liệu trên máy cục bộ, có thể trở thành vấn đề với các dự án hoặc tệp rất lớn, hoặc các nhà phát triển làm việc trên nhiều nhánh cùng một lúc. Trong các phiên bản trước 1.7 <tt> .svn </tt> các thư mục ở phía máy khách có thể bị hỏng bởi hoạt động người dùng không được thông báo như các hoạt động tìm kiếm / thay thế toàn cầu. <sup id="​cite_ref-34"​ class="​reference">​[34]</​sup> ​ Bắt đầu với phiên bản 1.7 Subversion sử dụng một tập trung duy nhất <tt> .svn </tt> thư mục trên mỗi vùng làm việc. <sup id="​cite_ref-35"​ class="​reference">​ [35] </​sup>​ </​p><​p>​ Subversion không lưu trữ thời gian sửa đổi tệp. Như vậy, một tệp được kiểm tra trong kho lưu trữ Subversion sẽ có ngày &#​39;​hiện tại&#​39;​ (thay vì thời gian sửa đổi trong kho lưu trữ), và tệp được kiểm tra vào kho lưu trữ sẽ có ngày đăng ký (thay vì sửa đổi thời gian của tệp đang được đăng ký). Điều này có thể không phải lúc nào cũng được mong muốn. <sup id="​cite_ref-36"​ class="​reference">​[36]</​sup>​
 + Để giảm thiểu điều này, các công cụ của bên thứ ba tồn tại cho phép duy trì thời gian sửa đổi và các siêu dữ liệu hệ thống tập tin khác <sup id="​cite_ref-37"​ class="​reference">​[37]</​sup><​sup id="​cite_ref-38"​ class="​reference">​[38]</​sup>​
 +. - đây là cách các công cụ như make (1) sẽ chú ý đến một tệp đã thay đổi để xây dựng lại nó.
 +</​p><​p>​ Subversion sử dụng mô hình điều khiển sửa đổi tập trung. Ben Collins-Sussman,​ một trong những nhà thiết kế của Subversion, tin rằng một mô hình tập trung sẽ giúp ngăn chặn &​quot;​những người lập trình không an toàn&​quot;​ che giấu công việc của họ với các thành viên khác. <sup id="​cite_ref-39"​ class="​reference">​[39]</​sup> ​  Một số người dùng hệ thống kiểm soát phiên bản xem mô hình tập trung là bất lợi; nổi tiếng, Linus Torvalds đã tấn công mô hình của Subversion và các nhà phát triển của nó <sup id="​cite_ref-40"​ class="​reference">​ [40] </​sup>​ </​p><​p>​ Subversion thường không giải quyết tốt việc chuẩn hóa tên tệp được thực hiện bởi hệ thống tệp HFS +. Điều này có thể gây ra sự cố khi tệp có ký tự có dấu trong tên của chúng được thêm vào kho lưu trữ trên hệ thống tệp không phải HFS + và kho lưu trữ sau đó được sử dụng với HFS +. <sup id="​cite_ref-41"​ class="​reference">​[41]</​sup></​p>​
 +<​h3><​span class="​mw-headline"​ id="​Subversion_tags_and_branches">​ Thẻ và chi nhánh của thẻ phụ </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​ ] </​span></​span></​h3>​
 +<p> Các số sửa đổi rất khó nhớ trong bất kỳ hệ thống kiểm soát phiên bản nào. Vì lý do này, hầu hết các hệ thống cung cấp các thẻ <i> mang tính biểu tượng </i> dưới dạng tham chiếu thân thiện với người dùng đối với chúng. Subversion không có tính năng như vậy và những gì tài liệu của nó đề xuất sử dụng thay vào đó là rất khác nhau về bản chất. Thay vì triển khai thẻ như <i> tham chiếu </i> thành điểm trong lịch sử, Subversion khuyên bạn nên tạo ảnh chụp nhanh <i> bản sao </i> thành một thư mục con nổi tiếng (&​quot;<​code>​ thẻ / </​code>&​quot;​) trong không gian của cây kho. Chỉ có một vài tài liệu tham khảo được xác định trước <i> </i> có sẵn: HEAD, BASE, PREV và COMMITTED.
 +</​p><​p>​ Phép chiếu lịch sử-không gian này có nhiều vấn đề:
 +</​p><​p>​ 1. Khi chụp nhanh, hệ thống sẽ không gán bất kỳ ý nghĩa đặc biệt nào cho tên của thẻ / ảnh chụp. Đây là sự khác biệt giữa bản sao <i> </i> và tham chiếu <i> </i>. Bản sửa đổi được ghi lại và ảnh chụp có thể được truy cập bằng URL. Điều này làm cho một số hoạt động kém thuận tiện hơn và những hoạt động khác thì không thể. Ví dụ: một svn diff -r tag1: tag2 myfile </​code>​ không ngây thơ không hoạt động; nó hơi phức tạp hơn một chút để đạt được, yêu cầu người dùng biết và nhập URL / đường dẫn đến ảnh chụp nhanh thay vì chỉ các tên: <​code>​ svn diff <​URL-TO-TAG1>​ / myfile <​URL-TO-TAG2>​ / myfile </​code>​. Các hoạt động khác như ví dụ <​code>​ svn log -r tag1: tag2 myfile </​code>​ là không thể.
 +</​p><​p>​ 2. Khi hai loại đối tượng (lý tưởng độc lập) sống trong cây kho, một &​quot;​cuộc chiến lên đỉnh&​quot;​ có thể xảy ra. Nói cách khác, thường khó có thể quyết định cấp độ nào để tạo thư mục con &​quot;<​code>​ / </​code>&​quot;:​
 +</p>
 +<​table><​tbody><​tr><​td>​
 +<​pre><​b>​ thân cây </b> /
 +     / thành phần <b> foo </b> /
 +     / thành phần <b> thanh </b> /
 +<b> thẻ </b> /
 +    /​1.1/​
 +        /​ thành phần <b> foo </b> /
 +        /​ thành phần <b> thanh </b> /
 +</​pre>​
 +</td>
 +<td> hoặc
 +</td>
 +<td>
 +<pre> thành phần <b> foo </b> /
 +            /​ <b> thân cây </b> /
 +            /​ <b> thẻ </b> /
 +                 /​1.1/​
 +thành phần <b> thanh </b> /
 +            /​ <b> thân cây </b> /
 +            /​ <b> thẻ </b> /
 +                 /​1.1/​
 +</​pre>​
 +</​td></​tr></​tbody></​table><​p>​ 3. Thẻ, theo định nghĩa thông thường của chúng là cả chỉ đọc và trọng lượng nhẹ, trên kho và ứng dụng khách. Các bản sao Subversion không chỉ đọc, và trong khi chúng có trọng lượng nhẹ trên kho lưu trữ, chúng rất nặng trên máy khách.
 +</​p><​p>​ Để giải quyết các vấn đề như vậy, áp phích trên danh sách gửi thư của Subversion đã đề xuất một tính năng mới được gọi là &​quot;​nhãn&​quot;​ hoặc &​quot;​bí danh&​quot;​. <sup id="​cite_ref-42"​ class="​reference">​[42]</​sup><​sup class="​noprint Inline-Template"​ style="​white-space:​nowrap;">​ [<​i><​span title="​A complete citation is needed (September 2018)">​ cần trích dẫn đầy đủ </​span></​i>​] </​sup>​
 +Nhãn SVN sẽ gần giống với &​quot;​các thẻ&​quot;​ của các hệ thống khác như CVS hoặc Git. Thực tế là Subversion có số sửa đổi toàn cầu mở đường đến một nhãn rất đơn giản → thực hiện sửa đổi. Tuy nhiên, đến năm 2013, không có tiến bộ nào được thực hiện và các thẻ biểu tượng không nằm trong danh sách các tính năng mong muốn nhất. <sup id="​cite_ref-43"​ class="​reference">​[43]</​sup></​p>​
 +<​h2><​span class="​mw-headline"​ id="​Development_and_implementation">​ Phát triển và triển khai </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ edit <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +<p> CollabNet đã tiếp tục tham gia với Subversion, nhưng dự án hoạt động như một cộng đồng nguồn mở độc lập. Vào tháng 11 năm 2009, dự án đã được chấp nhận vào Vườn ươm Apache, nhằm trở thành một phần trong nỗ lực của Quỹ Phần mềm Apache. <sup id="​cite_ref-44"​ class="​reference">​[44]</​sup> ​ Kể từ tháng 3 năm 2010, dự án được chính thức gọi là Apache Subversion, là một phần của Dự án Cấp cao nhất Apache <sup id="​cite_ref-CollabNetPR2010_45-0"​ class="​reference">​ [45] </​sup>​ </​p><​p>​ Vào tháng 10 năm 2009, WANdisco đã công bố việc thuê các ủy viên Subversion cốt lõi khi công ty chuyển sang trở thành nhà tài trợ chính của công ty. Điều này bao gồm Hyrum Wright, chủ tịch của Subversion Corporation và người quản lý phát hành cho dự án Subversion kể từ đầu năm 2008, người đã gia nhập công ty để lãnh đạo nhóm nguồn mở của nó. <sup id="​cite_ref-46"​ class="​reference">​ [46] </​sup>​ </​p><​p>​ Cộng đồng mã nguồn mở Subversion Mặc dù dự án Subversion không bao gồm giao diện người dùng đồ họa chính thức (GUI) để sử dụng với Subversion, các bên thứ ba đã phát triển một số GUI khác nhau, cùng với một nhiều phần mềm phụ trợ khác nhau.
 +</​p><​p>​ Công việc được công bố trong năm 2009 bao gồm SubversionJ (một API Java) và thực hiện lệnh Obliterate, tương tự như được cung cấp bởi Perforce. Cả hai cải tiến này đều được tài trợ bởi WANdisco <sup id="​cite_ref-48"​ class="​reference">​ [48] </​sup>​ </​p><​p>​ Các ủy ban Subversion thường có ít nhất một hoặc hai tính năng mới theo sự phát triển tích cực tại bất kỳ thời điểm nào. Phiên bản 1.7 của Subversion vào tháng 10 năm 2011 bao gồm một giao thức HTTP được sắp xếp hợp lý để cải thiện hiệu suất và thư viện sao chép làm việc được viết lại. <sup id="​cite_ref-49"​ class="​reference">​[49]</​sup></​p>​
 +<​h2><​span class="​mw-headline"​ id="​See_also">​ Xem thêm </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ edit <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +
 +<​h2><​span class="​mw-headline"​ id="​References">​ Tài liệu tham khảo </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +<​h3><​span class="​mw-headline"​ id="​Citations">​ Trích dẫn </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h3>​
 +
 +<​h3><​span class="​mw-headline"​ id="​Sources">​ Nguồn </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h3>​
 +<div class="​refbegin"​ style="">​
 +<​ul><​li>​ C. Michael Pilato, Ben Collins-Sussman,​ Brian W. Fitzpatrick;​ <​cite>​ Kiểm soát phiên bản với Subversion </​cite>;​ O&#​39;​Reilly;​ <link rel="​mw-deduplicated-inline-style"​ href="​mw-data:​TemplateStyles:​r861714446"/>​ ISBN 0-596-00448-6 (Ấn bản đầu tiên, bìa mềm, 2004, toàn bộ cuốn sách trực tuyến, gương) </li>
 +<li> Garrett Rooney; <​cite>​ Subversion thực tế </​cite>;​ Apress; <link rel="​mw-deduplicated-inline-style"​ href="​mw-data:​TemplateStyles:​r861714446"/>​ ISBN 1-59059-290-5 (Ấn bản đầu tiên, bìa mềm, 2005) </li>
 +<li> Mike Mason; <​cite>​ Kiểm soát phiên bản thực dụng bằng Subversion </​cite>;​ Kệ sách thực dụng; <link rel="​mw-deduplicated-inline-style"​ href="​mw-data:​TemplateStyles:​r861714446"/>​ ISBN 0-9745140-6-3 (Ấn bản đầu tiên, bìa mềm, 2005) </li>
 +<li> William Nagel; <​cite>​ Kiểm soát phiên bản Subversion: Sử dụng Hệ thống kiểm soát phiên bản Subversion trong các dự án phát triển </​cite>;​ Prentice Hall; <link rel="​mw-deduplicated-inline-style"​ href="​mw-data:​TemplateStyles:​r861714446"/>​ ISBN 0-13-185518-2 (Ấn bản 1, bìa mềm, 2005) </​li></​ul></​div>​
 +<​h2><​span class="​mw-headline"​ id="​Further_reading">​ Đọc thêm </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +<​h2><​span class="​mw-headline"​ id="​External_links">​ Liên kết ngoài </​span><​span class="​mw-editsection"><​span class="​mw-editsection-bracket">​ [</​span>​ chỉnh sửa <span class="​mw-editsection-bracket">​] </​span></​span></​h2>​
 +
 +
 +
 +<​!-- ​
 +NewPP limit report
 +Parsed by mw1339
 +Cached time: 20181118233958
 +Cache expiry: 1900800
 +Dynamic content: false
 +CPU time usage: 0.732 seconds
 +Real time usage: 0.932 seconds
 +Preprocessor visited node count: 4770/​1000000
 +Preprocessor generated node count: 0/1500000
 +Post‐expand include size: 125994/​2097152 bytes
 +Template argument size: 5403/​2097152 bytes
 +Highest expansion depth: 29/40
 +Expensive parser function count: 6/500
 +Unstrip recursion depth: 1/20
 +Unstrip post‐expand size: 77870/​5000000 bytes
 +Number of Wikibase entities loaded: 1/400
 +Lua time usage: 0.286/​10.000 seconds
 +Lua memory usage: 7.12 MB/50 MB
 +-->
 +<!--
 +Transclusion expansion time report (%,​ms,​calls,​template)
 +100.00% ​ 759.413 ​     1 -total
 + ​33.56% ​ 254.845 ​     1 Template:​Reflist
 + ​32.83% ​ 249.281 ​     2 Template:​Infobox
 + ​28.64% ​ 217.522 ​     1 Template:​Infobox_software
 + ​22.06% ​ 167.529 ​    21 Template:​Cite_web
 +  6.82%   ​51.798 ​     1 Template:​Full_citation_needed
 +  6.78%   ​51.460 ​     1 Template:​Infobox_software/​simple
 +  6.02%   ​45.721 ​     1 Template:​Fix
 +  5.49%   ​41.723 ​     1 Template:​Plainlist
 +  5.27%   ​40.014 ​     2 Template:​URL
 +-->
 +
 +<!-- Saved in parser cache with key enwiki:​pcache:​idhash:​144868-0!canonical and timestamp 20181118233957 and revision id 869493253
 + ​-->​
 +</​div></​pre>​
 + </​HTML>​
apache-subversion-wikipedia.txt · Last modified: 2018/11/21 09:36 (external edit)