Máy chủ Git Giống như GitHub? [đóng cửa]


412

Tôi là một người dùng Subversion lâu sẽ thử dùng Git. Tôi đã đọc một số về nó và hiểu bản chất phân tán - tôi có thể thấy rất nhiều lợi ích.

Tuy nhiên, tôi thích ý tưởng về một máy chủ trung tâm có thể đảm nhận vai trò sao lưu, hệ thống hồ sơ, v.v., trong khi vẫn sử dụng Git cho việc phân nhánh và chia sẻ cục bộ của tôi. Tôi không làm một dự án nguồn mở, vì vậy tôi không thể sử dụng Github (không phải trả tiền), vì vậy câu hỏi của tôi thực sự là: cách tốt nhất để chạy máy chủ git cục bộ là gì?

Tôi nhận ra điều này có thể trái với mô hình sử dụng Git tiêu chuẩn, nhưng nó sẽ hữu ích cho dự án của tôi. Tuy nhiên, bất kỳ mối quan tâm nào mà tôi có thể bỏ qua luôn được chào đón.

Cảm ơn!


50
Sử dụng một máy chủ trung tâm như bạn mô tả nó thực sự là một mô hình sử dụng tiêu chuẩn cho các hệ thống kiểm soát phiên bản phân phối, vì vậy đừng lo lắng về điều đó. :-)
Aasmund Eldhuset

8
Ahh - nghĩ rằng đó là ngoại lệ nhiều hơn. Muốn chống đỡ "nếu bạn tập trung thì bạn đừng lấy nó!" bình luận. Cảm ơn.
skaz

27
Một suy nghĩ hợp lý. :-) Theo hiểu biết của tôi, điểm quan trọng của các VCS phân tán không phải là bạn phải có một repo trung tâm (điều này thường rất hữu ích), mà là bạn không bị buộc phải sử dụng repo trung tâm - bạn có thể thực hiện các cam kết cục bộ và rất dễ trao đổi các bản sửa đổi với những người cụ thể nếu cần và thậm chí bạn có thể có một số repos "trung tâm" (trong git, bất kỳ repo nào khác, bất kể nó có vai trò gì, được gọi là điều khiển từ xa , và bạn có thể Thêm như nhiều như bạn muốn). Và DVCS thường có các mô hình phân nhánh rất linh hoạt (git tỏa sáng ở đây).
Aasmund Eldhuset

15
Để tóm tắt / viết lại nhận xét của Aasmund: quan điểm của DVCS thường không phải là loại bỏ kho lưu trữ tập trung, mà còn cung cấp cho mọi người dùng khác toàn bộ sức mạnh của VCS.
Cascabel

2
Google có Kho lưu trữ nguồn trên đám mây mới cho phép các kho lưu trữ riêng tư: cloud.google.com/tools/cloud-reposeocate Ngoài ra, FWIW, không chắc tại sao điều này được đánh dấu là lạc đề!
Josh M.

Câu trả lời:


203

Bạn chỉ có thể thiết lập một máy chủ ssh và chạy một kho lưu trữ trung tâm ở đó. Tất cả các nhà phát triển sau đó chỉ cần đồng ý (như một vấn đề của chính sách) để đẩy tới máy chủ khi họ thực hiện xong các cam kết. Đây là mô hình sử dụng tại nơi làm việc của tôi. Rất giống CVS và SVN.

  1. Tìm một nơi nào đó để đặt kho lưu trữ ( /var/gitrootví dụ).
  2. Tạo một repo mới ( mkdir project.git && cd project.git && git init --bare --shared=group).
  3. Sau đó, trên máy khách của bạn, sao chép repo từ xa ( git clone ssh://yourserver.com/var/gitroot/project.git && cd project)
  4. thêm một số tệp ( git add README)
  5. cam kết ( git commit -m "Initial import"),
  6. đẩy ( git push origin master)

Điều này sẽ thiết lập mọi thứ cho bạn.


5
Để tôi rõ ràng: Cài đặt git trên máy chủ khác (có thể truy cập) và tạo repo. Có khách hàng nhân bản mà repo. Khi một khách hàng hoàn thành một sửa chữa, đẩy lên repo máy chủ. Cảm ơn!
skaz

8
+1. Như một vấn đề của thực tế, đây là những mô hình sử dụng cho việc sử dụng cộng tác của git.
Aasmund Eldhuset

1
Lỗi này xảy ra khi đẩy bản gốc master :::: Đếm các đối tượng: 3, xong. Đối tượng viết: 100% (3/3), 244 byte | 0 byte / s, xong. Tổng 3 (delta 0), tái sử dụng 0 (delta 0) remote: error: không đủ quyền để thêm một đối tượng vào cơ sở dữ liệu kho lưu trữ ./objects remote: fatal: fail to write object object: unpack fail: unpack-object exit exit ssh: //localhost/var/gitroot/project.git! [bị từ chối] lỗi master -> master (lỗi unpacker): không thể đẩy một số ref đến 'ssh: //localhost/var/gitroot/project.git'
Abdo

3
Tôi đã viết một bài đăng trên blog về cách thiết lập repo git cục bộ một thời gian trước đây. Tối đa là 10 phút. Điều khó khăn là thiết lập các chiến lược sao lưu máy chủ cục bộ phù hợp, quản trị máy chủ, v.v.
atmosx

Bạn không thể chạy git init --bare project.git?
Dan Dascalescu

199

Gitorious là một giao diện web nguồn mở cho git mà bạn có thể chạy trên máy chủ của riêng mình, giống như github:

http://getgitorious.com/

Cập nhật:

http://gitlab.org/ cũng là một lựa chọn khác.

Cập nhật 2:

Gitorious hiện đã tham gia với GitLab


5
Ngoại hình đẹp, nhưng các thiết lập dường như nặng cân [(đặc biệt đối với một tổ chức phi-ray dùng.) Cjohansen.no/en/ruby/setting_up_gitorious_on_your_own_server ]
gatoatigrado

1
Quá trình cài đặt đang trong quá trình đơn giản hóa và thực hiện ít "Rails-y". Ngoài ra còn có một trình cài đặt tự động cho các máy chủ CentOS (và một thiết bị dựng sẵn) có sẵn tại trang Install Gitorious tại getgitorious.com.
thomanil

3
Có vẻ như Gitorious không còn là một giải pháp lưu trữ riêng miễn phí mã nguồn mở.
Mingming

1
Nếu bạn truy cập getgitorious.com và nhấp vào Trình cài đặt trong Gitorious Community Edition, điều đó không cung cấp cho bạn một giải pháp lưu trữ riêng tư nguồn mở miễn phí?
Craig

16
Ngoài ra gitlab.org là một thay thế khác đã được phát triển kể từ câu trả lời của tôi.
Craig

74

Hãy thử GitLab

Công cụ GUI git tốt nhất tôi từng sử dụng. Nó rất giống với GitHub.

Nó là mã nguồn mở (Giấy phép MIT) và là phần mềm quản lý git được cài đặt nhiều nhất với hơn 25.000 cài đặt. Nó có các bản phát hành hàng tháng và một cộng đồng tích cực với hơn 375 người đóng góp. Bạn có thể có kho riêng tư, nội bộ và công cộng không giới hạn trên máy chủ của riêng bạn. Nó là một ứng dụng Ruby on Rails chạy trên hầu hết các nền tảng Unix.


1
Tôi đồng ý, nó thật tuyệt vời. (+1) Nhưng theo nhận xét này, thật khó để cài đặt. Sẽ thật tuyệt nếu họ có thể gói vòng / phút, deb, v.v.
Synesso

2
Tôi đã tìm thấy thiết lập tập lệnh tương đối mới cho Ubuntu khá dễ chịu. Ngay cả khi không có nó, chủ yếu vẫn là làm theo các hướng dẫn ngoài trang web. Tôi chưa bao giờ sử dụng đường ray hoặc thậm chí là máy chủ Ubuntu và tôi đã chạy thử lần đầu tiên.
Jon Shier

Tôi gặp một số rắc rối khi tích hợp nó với Active Directory thông qua LDAP.
riezebosch

2
Trên thực tế, ngày nay GitLab khá dễ cài đặt. Đó chỉ là vấn đề giải nén một gói. Xem about.gitlab.com/doads
Công việc

2
Tất nhiên Gitlab Enterprise không miễn phí, nhưng có phiên bản cộng đồng , miễn phí và cũng dễ cài đặt. Mặc dù, nó đòi hỏi khoảng 800 MB dung lượng ổ đĩa, vì nó cài đặt một vài công cụ cơ sở dữ liệu và rất nhiều phụ thuộc.
OndroMih

39

Nếu bạn không cảm thấy chán nản với dòng lệnh, gitolite là một điều trị tuyệt đối khi làm việc trong môi trường công ty, nơi bạn cần đặt quyền truy cập differenct trên các kho lưu trữ khác nhau. Nó là một phiên bản mới hơn của gitosis được đề cập bởi @Chris.

Dưới đây là tóm tắt từ trang web của tác giả:

Gitolite cho phép bạn sử dụng một người dùng trên một máy chủ để lưu trữ nhiều kho lưu trữ git và cung cấp quyền truy cập cho nhiều nhà phát triển, mà không phải cung cấp cho họ quyền truy cập thực sự trên hoặc máy chủ truy cập vào máy chủ. Phép thuật thiết yếu trong việc này là truy cập pubkey của ssh và tệp ủy quyền, và nguồn cảm hứng là một chương trình cũ hơn gọi là gitosis.

Gitolite có thể hạn chế những người có thể đọc từ (clone / fetch) hoặc ghi vào (đẩy) một kho lưu trữ. Nó cũng có thể hạn chế những người có thể đẩy đến chi nhánh hoặc thẻ nào, điều này rất quan trọng trong môi trường công ty. Gitolite có thể được cài đặt mà không yêu cầu quyền root và không có phần mềm bổ sung nào ngoài git và perl.

Nó có một bộ tính năng khá toàn diện, nhưng một điều tôi rất thích, đó là tất cả các chỉnh sửa cấu hình hàng ngày được thực hiện thông qua một kho lưu trữ git đặc biệt. Đó là, thêm một người dùng chỉ là

  • Thêm người dùng vào tập tin cấu hình
  • Thêm khóa ssh của người dùng
  • Cam kết thay đổi
  • Đẩy nó vào gitite
  • Voila, cấu hình là trực tiếp!

Và khi cần xem mã thông qua trình duyệt, gitolite có hỗ trợ cấu hình "đồng bộ hóa" với gitweb. Hoặc nếu bạn thích cgit , một trang web rất tốt cho git được viết bằng C, tốt hơn, thì bạn nên xem hướng dẫn này .


24

Bạn có thể xem xét Gitblit , một máy chủ Java Git, trình xem và trình quản lý kho lưu trữ mã nguồn mở, tích hợp, mã nguồn mở cho các nhóm làm việc nhỏ.


Gitblit có vẻ hoàn hảo cho ứng dụng của tôi, nhưng điều đó làm tôi lo lắng rằng phiên bản cuối cùng là vào năm 2016.
Roberto

1
@Roberto, một điểm hợp lệ. Tôi đoán nó phụ thuộc vào những gì bạn cần hoặc những gì quan trọng với bạn. Nếu nó hoạt động cho bạn như nó là, nó vẫn có thể là một lựa chọn hợp lệ. Nếu bạn lo lắng về việc sửa lỗi kịp thời hoặc cần nhiều tính năng hơn, thì có thể không.
Florian

15

Trình duyệt Bare Bones

git instaweb --httpd=webrick

từ cuốn sách git scm

kết hợp nó với một cái gì đó giống như cách tiếp cận được mô tả ở đây để phát triển phân tán (tín dụng cho datagrok cho khái niệm được mô tả tốt)

Khởi chạy một máy chủ git một lần từ bất kỳ kho lưu trữ cục bộ nào.

Tôi đã tweet điều này rồi nhưng tôi nghĩ nó có thể sử dụng một số mở rộng:

Cho phép luồng công việc git phi tập trung: git config alias.serve "daemon --verbose --export-all --base-path = .git --reuseaddr --strict-path .git /"

Giả sử bạn sử dụng quy trình công việc git liên quan đến việc làm việc với kho lưu trữ "chính thức" cốt lõi mà bạn kéo và đẩy các thay đổi của mình từ và vào. Tôi chắc chắn nhiều công ty làm điều này, cũng như nhiều người dùng dịch vụ lưu trữ git như Github.

Nói rằng máy chủ, hoặc Github, đi xuống một chút.

Không phải lo lắng, sau tất cả, một trong những lý do bạn sử dụng git là vì vậy bạn có một bản sao của toàn bộ lịch sử dự án trong bản sao địa phương của bạn.

Bạn có thể tiếp tục mã hóa và cam kết, trong khi bạn chờ nhóm vận hành đưa máy chủ hoạt động trở lại. Lưu ý cho bản thân: mua bánh rán cho nhóm hoạt động.

Nhưng nếu trong thời gian chết này, bạn muốn cộng tác với một người khác, người có thể không phải là chuyên gia git, trên cùng một kho lưu trữ thì sao?

Hoặc, thay vì thời gian chết, điều gì sẽ xảy ra nếu bạn và cộng tác viên của bạn ở trong lĩnh vực này và vì một số lý do bạn không thể có được VPN để cho phép bạn kết nối với repo chính thức của mình?

Hoặc, điều gì sẽ xảy ra nếu bạn và cộng tác viên của bạn đang đưa ra một loạt các thay đổi thử nghiệm và mặc dù bạn có quyền truy cập, bạn không muốn đẩy mớ hỗn độn chưa hoàn thành của mình vào kho lưu trữ trung tâm chính thức? (Thậm chí không phải là các nhánh tính năng.) Có thể bạn đang trong quá trình dọn dẹp một cuộc nổi loạn hoặc hợp nhất thảm hại và các chi nhánh ở khắp mọi nơi.

Vâng, như bạn có thể biết, là một hệ thống kiểm soát phiên bản "phân tán" .

Mặc dù bạn có thể sử dụng kho git "chính thức" trung tâm trong quy trình làm việc của mình, bạn vẫn có khả năng sử dụng git theo cách ngang hàng, trong đó bạn và cộng tác viên của bạn chỉ cần xây dựng và chia sẻ các cam kết với nhau và trung tâm Máy chủ thậm chí không bao giờ phải biết.

Vì vậy, làm thế nào để bạn có được các chi nhánh của bạn và cam kết với họ, hoặc ngược lại?

  • Bạn có thể sử dụng các cơ sở của git cho các bản vá email. Nhưng đó là một chút không phù hợp và đòi hỏi một số kiến ​​thức về cách áp dụng các bản vá email.
  • Bạn có thể tạo một tài khoản trên máy của riêng bạn để cộng tác viên của bạn ssh vào. Nhưng có thể bạn không có quyền truy cập root cục bộ hoặc có thể bạn không tin tưởng họ với quyền truy cập SSH vào hộp của bạn.
  • Bạn có thể sao chép repo của bạn lên một ngón tay cái và đưa nó qua lại. Nhưng điều đó khá tẻ nhạt, đặc biệt nếu bạn tình cờ ở trên cùng một mạng cục bộ và yêu cầu một ổ đĩa ngón tay cái.

Bạn có thể có thể nghĩ về các phương pháp khác, quá. Nhưng có một cách cực kỳ dễ dàng: nếu bạn có thể nhìn thấy nhau trên mạng, bạn có thể khởi chạy máy chủ git một lần mà họ có thể sử dụng làm điều khiển từ xa để sao chép, tìm nạp và kéo các thay đổi của bạn và giết nó khi bạn thực hiện với nó

Công cụ cho phép điều này là git daemon, có rất nhiều tùy chọn và chức năng, nhưng với mục đích cho phép một lần dễ dàng này "chỉ phục vụ repo tôi tham gia", cách sử dụng là tạo ra bí danh. Tôi thích gọi nó git serve. Chạy:

git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"

Sử dụng một bí danh thực sự rất quan trọng, bởi vì các bí danh git được thực thi trong thư mục cơ sở của cây làm việc của bạn. Vì vậy, đường dẫn '.git' sẽ luôn luôn đến đúng nơi, bất kể bạn đang ở đâu trong cây thư mục của kho lưu trữ.

Sử dụng git servenhư thế mới của bạn như vậy:

  1. Chạy git serve . "Sẵn sàng để ầm ầm", nó sẽ báo cáo. Git là ass xấu.
  2. Tìm địa chỉ IP của bạn. Nói đó là 192.168.1.123.
  3. Nói "này Jane, tôi chưa sẵn sàng / có thể đẩy các cam kết này lên nguồn gốc, nhưng bạn có thể lấy các cam kết của tôi vào bản sao của mình bằng cách chạy git fetch git://192.168.1.123/ "
  4. Nhấn ctrl + c khi bạn không muốn phục vụ repo đó nữa.

Bạn cũng có thể nói với Jane git clone git://192.168.1.123/ local-repo-namenếu cô ấy chưa có bản sao của kho lưu trữ. Hoặc, sử dụng git pull git://192.168.1.123/ branchnameđể thực hiện tìm nạp và hợp nhất cùng một lúc, hữu ích nếu bạn đang làm việc cùng nhau trên một nhánh tính năng.

Tuy nhiên, lưu ý rằng bạn không nên làm điều này trên các mạng thù địch nếu bạn giữ bí mật trong kho lưu trữ của mình, vì không có xác thực. Nó không quảng cáo sự tồn tại của nó, nhưng bất kỳ ai có máy quét cổng aa đều có thể tìm thấy nó, kết nối với nó và sao chép repo của bạn.

Nhưng nó không nguy hiểm lắm vì nó chỉ đọc theo mặc định. Đọc git daemontrang man cẩn thận nếu bạn nghĩ rằng bạn muốn kích hoạt quyền truy cập ghi. Trong trường hợp bạn muốn nhận được các cam kết của cộng tác viên, việc để nó ở chế độ chỉ đọc và yêu cầu cộng tác viên của bạn cũng chạy lệnh này sẽ an toàn hơn nhiều.

Liên quan liên tục: về chủ đề máy chủ một lần, nếu bạn muốn tạm thời chia sẻ một loạt các tệp tĩnh qua HTTP: python -m SimpleHTTPServer


11

Nếu bạn cần máy chủ GIT tốt, dễ dàng hơn bạn phải thử GitBlit. Ngoài ra tôi sử dụng gitolite nhưng nó chỉ có máy chủ, với GitBlit bạn có được tất cả trong một, máy chủ, quản trị viên, repos. người quản lý ... URL: http://gitblit.com/


9

https://rhodecode.com là một ứng dụng web mã nguồn mở cho Git & Mercurial, có thể dễ dàng cài đặt dưới bất kỳ hệ điều hành nào (bao gồm một trình cài đặt).

RhodeCode (phiên bản mới được gọi là RhodeCode Enterprise) bổ sung các tính năng Git bị thiếu như xem lại mã và nó thường nói rất nhanh và đáng tin cậy.


1
Tôi thực sự chạy ví dụ của riêng tôi ở đây: code.gmgauthier.com . Bản phát hành 3.x rất sạch và ổn định. Tôi sử dụng nó cho nhiều hơn mã, thực sự (mặc dù, có rất nhiều trong số đó). Tôi sử dụng nó để giữ các bản sao chính của các tạp chí cá nhân, bản thảo của mình cho hai cuốn sách, kịch bản podcast và bản nháp blog. Đó là lý tưởng cho điều này, một phần vì nó kết xuất cả Markdown và Tái cấu trúc cho bạn, làm cho các bản nháp rất dễ đọc từ bất cứ đâu.
Greg Gauthier

8

Bạn cũng có thể cài đặt Indefero , đây là bản sao GPL của GoogleCode, vì nó hỗ trợ cả Subversion và Git, bạn có thể chuyển đổi suôn sẻ. Tôi là tác giả của Indefero.


Tôi đang sử dụng nó và thích nó. Nhưng thiết kế hơi lỗi thời. Nó vẫn được duy trì?
Jaroslav


8

Nó có thể không là thiết lập máy chủ git phổ biến nhất , nhưng đã chơi với các bố cục, công cụ, phản chiếu và cấp phép khác nhau, tôi nói một thay thế khá chắc chắn cho kho lưu trữ doanh nghiệp là Gerrit , có vẻ đáng ngạc nhiên vì nó được biết đến nhiều hơn công cụ xem lại mã. Chúng tôi bắt đầu sử dụng nó để xem xét mã và nó dần trở thành kho lưu trữ chính của chúng tôi, không dùng g3 / gitolite

  • Việc triển khai rất đơn giản (về cơ bản bạn thả .war trong tomcat)
  • có một ui web để quản lý kho, nhóm và quyền (hoặc ssh cli)
  • có một triển khai java ssh và git tích hợp, vì vậy bạn không có gì khác để thiết lập
  • hỗ trợ ldap cho người dùng và nhóm (thường là bắt buộc đối với các công ty)
  • một hệ thống cấp phép rất linh hoạt (với các nhóm dự án, kế thừa quyền, hạn chế đọc / ghi / phân nhánh / ghi không được xem xét / v.v.)
  • khả năng xem lại mã (nếu bạn thích điều đó)
  • phản chiếu repo (để đẩy một số kho lưu trữ lên github hoặc repo công khai khác)

Ngoài ra, nó được sử dụng bởi các dự án lớn (ví dụ như Android, chrome) vì vậy nó có quy mô và hiện khá vững chắc. Chỉ cần cung cấp cho người dùng của bạn quyền PUSH nếu bạn muốn cho phép bỏ qua phần đánh giá mã.


7

Đối với một lưu trữ từ xa Như những người khác đã nói bitbucket.org cung cấp các kho riêng tư miễn phí, tôi đã sử dụng nó mà không gặp vấn đề gì.

Đối với mạng cục bộ hoặc mạng LAN, tôi sẽ thêm một scm-manager.org này (Một tệp thực thi duy nhất, rất đơn giản để cài đặt, nó được tạo trên Java để có thể chạy trên Linux hoặc Windows). Chỉ trong trường hợp bạn cài đặt nó, đây là những mật khẩu mặc định.

Username: scmadmin
Password: scmadmin

3
cảm ơn vì đã cung cấp thông tin đăng nhập mặc định
Ryan Williams

6

Trong khi đó, trang web lưu trữ Mercurial Bitbucket cũng đã bắt đầu cung cấp kho Git.

Vì vậy, nếu bạn không cần một máy chủ cục bộ , chỉ cần một số vị trí trung tâm nơi bạn có thể lưu trữ các kho Git riêng miễn phí, IMO Bitbucket là lựa chọn tốt nhất.

Miễn phí, bạn nhận được kho Git và Mercurial riêng tư và công khai không giới hạn.
Hạn chế duy nhất là trong gói miễn phí, không quá năm người dùng có thể truy cập vào kho riêng của bạn (để biết thêm, bạn phải trả tiền).
Xem https://bitbucket.org/plans để biết thêm thông tin!



2

Nếu bạn chỉ muốn kho lưu trữ của mình ở vị trí trung tâm, điều này khá dễ dàng với điều khiển phiên bản phân tán như Git:
Bạn chỉ có thể đặt kho lưu trữ trung tâm của mình vào một thư mục dùng chung trên một máy trung tâm và mọi người có thể sao chép nó từ đó.

Nếu bạn muốn có một trang web "thực" trên máy chủ cục bộ của mình, tôi biết đến trang web lưu trữ Git http://repo.or.cz .
Nó dường như có ít tính năng hơn GitHub, nhưng không giống như GitHub, bạn có thể lấy mã nguồn và lưu trữ nó trên máy chủ cục bộ của riêng bạn.

Disclaimer: Tôi chỉ đọc về repo.or.cz, tôi chưa bao giờ thử nó!


2

đối với các thiết lập đơn giản, bạn có thể cung cấp quyền truy cập ssh vào máy chủ trung tâm và thiết lập thư mục làm việc của mỗi người dùng để đẩy / kéo từ 'nguồn gốc' này. Đó sẽ là thiết lập đơn giản và phổ biến nhất cho các nhóm nhỏ.

Bạn cũng có thể xem xét bệnh gitosis cung cấp cho bạn một máy chủ http và khả năng quản lý nó từ xa. Bằng cách đó, bạn không phải cấp quyền truy cập ssh và tất cả những gì đòi hỏi cho mỗi người đi làm.


2

Để thêm vào những gì Chris đã nói, bạn có thể sử dụng gitosis (http://eagain.net/gitweb/?p=gitosis.git) để kiểm soát ai thực sự có thể truy cập repo.

Tùy thuộc vào cách sử dụng của bạn, bạn cũng có thể sử dụng hook (trong thư mục .git / hook) để mã của bạn sẽ tự động được kéo vào hệ thống tập tin của máy chủ khi bạn đẩy từ máy cục bộ. Đây là một tập lệnh phổ biến để làm điều đó: http://utsl.gen.nz/git/post-update . Điều này sẽ không cần thiết trong mọi trường hợp.


Liên kết đến tập lệnh cập nhật đã chết ...
Morten Jensen


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.