Tôi có nên cam kết thư mục .vscode kiểm soát nguồn không?


294

.vscodethư mục có nghĩa là cam kết kiểm soát nguồn?

Trong một dự án mới, thư mục trống, ngoại trừ settings.jsontệp. Những thứ gì sẽ đi vào thư mục này? Có phải nó dành riêng cho máy, dành riêng cho nhà phát triển như .vsthư mục và do đó không được cam kết không? Hoặc tất cả các nhà phát triển nên chia sẻ thư mục này và do đó nó nên được cam kết?

Nhận xét ở đầu tệp .vscode/settings.jsonnêu:

// Place your settings in this file to overwrite default and user settings.
{
}

Điều này dường như ngụ ý rằng thư mục nên chứa các cài đặt dành riêng cho dự án và do đó được bao gồm trong nguồn. Ngoài ra, bài đăng này trên UserVoice dường như ngụ ý một số kiểu chữ sẽ xuất hiện ở đó, cũng gợi ý rằng nó nên được cam kết.


Nếu bạn bắt đầu một dự án trong Visual Studio và sau đó cam kết thì nên có một khởi đầu thích hợp (ít nhất là điển hình) .gitignore FE. Nếu nó có nghĩa là ở đó thì có lẽ nó sẽ ở đó. Bạn cũng có thể tham khảo cái này mà tôi đã sử dụng mà không có vấn đề.
ChiefTwoP Pencil 6/10/2015

2
Một ý tưởng hay, @ChiefTwoP Pencil! Đối với bản ghi, mặc định .gitignoremà Visual Studio tạo không có .vscodethư mục được loại trừ tại thời điểm này. Nhưng vì VS Code tự nó khá mới, nên họ có thể chưa tìm được nó. Bây giờ tôi đã để lại thư mục chưa bị khóa trong khi tôi có thêm thông tin về nó.
Ronald Zarīts

Câu trả lời:


312

Kiểm tra trong .vscodethư mục nếu bạn muốn chia sẻ cài đặt, cấu hình tác vụ và cấu hình gỡ lỗi với nhóm. Tôi nghĩ nói chung sẽ rất hợp lý khi chia sẻ cài đặt (ví dụ: khoảng trắng so với tab) với nhóm nếu bạn muốn thực thi cài đặt trong một nhóm. Chúng tôi trong nhóm VS Code cũng chia sẻ cài đặt gỡ lỗi và cài đặt cụ thể cho nhiệm vụ vì chúng tôi muốn nhóm của mình có cùng một bộ mục tiêu gỡ lỗi và mục tiêu nhiệm vụ cho Mã VS.

Btw bạn không cần phải có một .vscodethư mục trong dự án của bạn để cài đặt. Bạn cũng có thể định cấu hình cài đặt ở cấp độ người dùng.


54
Cảm ơn! "Chúng tôi trong nhóm Mã VS ..." là đủ tốt cho tôi - ít nhất là để bắt đầu!
Ronald Zarīts

97
Nếu bạn muốn chia sẻ cài đặt cấp độ tệp như "khoảng trắng so với tab" thì bạn nên xem xét một giải pháp chỉnh sửa chéo như EditorConfig .
Tanzania87

2
Thư mục này có thư mục con "chrome" có kích thước 80 MB. Bạn có chắc chắn điều này nên được cam kết với kho lưu trữ?
ygoe

10
Bạn không được sử dụng VSCode cho một cái gì đó như dự án python nơi cài đặt không gian làm việc sẽ có đường dẫn python cụ thể cho môi trường cho những thứ như môi trường VirtualEnv hoặc Anaconda. Kiểm tra các tệp này trong âm thanh như một vấn đề lớn đối với hầu hết các kịch bản. Kiểm tra trong một tập tin mẫu / mặc định thay thế.
StefanGordon

3
Theo dõi trên symbols.json: stackoverflow.com/questions/51876769/ từ
ripper234

39

Giữa cam kết / bỏ qua có tùy chọn thông minh thứ ba: cam kết với .defaulthậu tố.

Ví dụ, bạn có thể thêm settings.jsonvào .gitignore, và cam kết settings.json.default, giống như nó là thực tế phổ biến (trong đội của tôi) với .envtập tin.

Tôi đã lấy lời khuyên này từ cài đặt trình chỉnh sửa Cam kết video để kiểm soát phiên bản? bởi Mattias Petter Johansson


5
Điều này settings.json.defaultcó ý nghĩa nhưng điều này giả định rằng toàn bộ nhóm của bạn đang sử dụng vs mã và cơ sở mã của bạn sẽ không được chia sẻ cho đối tượng rộng hơn. Tôi thấy rằng các dự án nguồn mở của tôi trên GitHub, tôi chỉ đảm bảo rằng tôi đã thêm nó vào gitignore mặc định của mình, vì tôi không muốn ép buộc một IDE cụ thể vào những người dùng tiềm năng của cơ sở mã của tôi.
jamescampbell

2
@jamescampbell Thêm các tệp dành riêng cho IDE hầu như không bao giờ ép IDE đó lên bất kỳ ai - nó chỉ cung cấp cho họ tùy chọn để nhận các cài đặt môi trường chung của bạn nếu chúng tình cờ sử dụng IDE đó. Vấn đề lớn hơn là liệu các tệp đó có được hỗ trợ chính thức hay không - nghĩa là luôn luôn cập nhật và hoạt động. Về mặt lý thuyết bạn có thể có nhiều tệp môi trường IDE cho các IDE khác nhau hiện diện mà không có bất kỳ xung đột nào.
LightCC

23
  • không bao giờ cam kết .vscode/settings.json- với ngoại lệ kỳ lạ search.exclude. Nếu bạn thực sự cần, hãy cẩn thận khi chỉ đặt các cài đặt cụ thể cho dự án của bạn mà bạn muốn thực thi cho các nhà phát triển khác.
  • để xác nhận, định dạng, sử dụng tổng hợp các file khác như package.json, .eslint, tsconfig.json, vv
  • .Vscode duy nhất có ý nghĩa bao gồm là các cấu hình khởi chạy phức tạp để gỡ lỗi.
  • Hãy cẩn thận, có thể có một phần mở rộng của bên thứ ba trong hệ thống của bạn có thể đặt thông tin cá nhân ở đó!

Những gì bạn không thể làm là sao chép và dán toàn bộ tệp nội dung settings.json vào .vscode/settings.json. Tôi thấy một số người làm điều này và cam kết tập tin là một sự tàn bạo. Trong trường hợp đó, bạn sẽ không chỉ phá vỡ không gian làm việc của người khác mà tệ nhất, bạn sẽ thực thi các cài đặt cho người dùng mà bạn không thích thẩm mỹ, giao diện người dùng, trải nghiệm. Bạn có thể sẽ phá vỡ môi trường của họ vì một số rất phụ thuộc hệ thống. Hãy tưởng tượng tôi có vấn đề về thị lực để editor.*cài đặt người dùng của tôi được cá nhân hóa và khi tôi mở dự án của bạn, hình ảnh sẽ thay đổi. Hãy tưởng tượng tôi có vấn đề về thị lực Tôi cần cá nhân hóa trình chỉnh sửa người dùng. * Cài đặt để có thể hoạt động. Tôi sẽ tức giận.

Nếu bạn nghiêm túc không cam kết .vscode/settings.json. Nói chung, các cài đặt có thể hữu ích cho một dự án cụ thể như xác thực, biên dịch, có ý nghĩa nhưng nói chung, bạn có thể sử dụng các tệp cấu hình công cụ cụ thể như .eslint, tsconfig.json, .gitignore, pack.json. v.v ... Tôi đoán các tác giả vscode chỉ cần thêm tệp để đơn giản hóa trải nghiệm người mới nhưng nếu bạn muốn nghiêm túc thì đừng!

Ngoại lệ duy nhất và trong các trường hợp rất cụ thể có thể là search.exclude


3
Tôi cảm thấy đề nghị của bạn .vscode/settingslà quá hạn chế. Sử dụng .eslinthoặc .editorconfigtệp nếu bạn có thể, nhưng bạn vẫn nên đăng ký .vscode/settingsnếu bạn thực sự muốn một cài đặt được chia sẻ giữa tất cả các nhà phát triển trong một nhóm / dự án
Matt Bierner

3
Matt, tại sao bạn cho rằng tất cả các nhà phát triển khác sử dụng vscode? Có thể là những người sử dụng webstorm, vim, cao siêu, đó là lý do tại sao bạn nên làm việc với eslint, v.v. chứ không phải settings.json.
Cancerbero

Một lần nữa, kiểm tra .vscode/settingscó ý nghĩa nếu bạn làm việc trong một nhóm sử dụng vscode hoặc bạn đang làm việc trong một dự án có nhiều nhà phát triển sử dụng vscode. Không phải tất cả các cài đặt này đều có tương đương trình soạn thảo chéo
Matt Bierner

@MattBierner đủ công bằng, nếu bạn đang phát triển các dự án nguồn gần trong một công ty thực thi trình soạn thảo, nhưng tôi không nghĩ đó là tình huống phổ biến và đặc biệt trong các dự án nguồn mở ...
Cancerbero

Quan điểm về các tiện ích mở rộng của bên thứ ba là rất hợp lệ - Như một ví dụ tôi tin rằng Tiện ích mở rộng MS SQL sẽ thêm cấu hình kết nối vào dự án / không gian làm việc.j.j nếu nó tồn tại - Mặc dù nó không lưu thông tin đăng nhập, nhưng nó có thể đang kiểm tra tên máy chủ, v.v. .
Dan Harris

17

Tóm tắt các câu trả lời khác

  • Khuyến nghị là thường loại trừ .vscodethư mục, nhưng để lại trong một vài tệp JSON được chọn sẽ cho phép các thành viên trong nhóm tạo lại các cài đặt

.gitignoreMã mẫu để sử dụng (và nơi nhận được nó)

Dưới đây là các cài đặt, như được đề xuất tại https://gitignore.io . Bạn có thể tìm kiếm "VisualStudioCode" ở đó để có được .gitignoretệp khuyến nghị mới nhất . Tôi sử dụng trang web này làm điểm khởi đầu .gitignorecho hầu hết các repos mới của mình:

# Created by https://www.gitignore.io/api/visualstudiocode
# Edit at https://www.gitignore.io/?templates=visualstudiocode

### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

### VisualStudioCode Patch ###
# Ignore all local history of files
**/.history

# End of https://www.gitignore.io/api/visualstudiocode

Ở phía trên .gitignoretập tin, các .vscode/*dòng nói để loại trừ tất cả mọi thứ trong .vscodethư mục, nhưng sau đó các !.vscode/a_specific_filedòng tell git để "không" bỏ qua một số tác phẩm cụ thể trong thư mục đó ( settings.json, launch.json, vv). Kết quả cuối cùng là mọi thứ được loại trừ trong .vscodethư mục ngoại trừ các tệp được đặt tên cụ thể trong một trong những dòng khác.


Các yếu tố khác và cách tự mình tìm ra ...

Bao gồm .vscodethư mục trong repo của bạn không thực sự làm tổn thương bất kỳ ai sử dụng IDE khác (hoặc trình soạn thảo văn bản / mã).

Tuy nhiên, điều đó có thể làm tổn thương người khác khi sử dụng VS Code, nếu các tệp này bao gồm các cài đặt chung yêu cầu một cái gì đó cụ thể cho môi trường của bạn, thì khác với môi trường của họ - giống như đường dẫn tuyệt đối mà repo được cài đặt (mà phần mở rộng VS Code Python luôn đặt vào cái pythonpathtrong .vscode/settings.json). Điều quan trọng là tránh lưu các cài đặt tùy chỉnh vào môi trường cục bộ của bạn, chỉ chia sẻ những cài đặt có thể được sử dụng bởi mọi người.

Ví dụ: nếu các tệp cài đặt IDE có đường dẫn tuyệt đối đến repo hoặc bất kỳ tệp / thư viện nào, v.v., thì điều đó thật tệ, đừng chia sẻ. Nhưng nếu tất cả các tham chiếu là tương đối, thì chúng nên hoạt động cho bất kỳ ai sử dụng repo (mặc dù vậy, hãy cẩn thận về sự khác biệt về đặc tả đường dẫn giữa Windows / Unix ..).


Lưu ý về cài đặt người dùng, không gian làm việc và thư mục

Lưu ý: các tệp cài đặt trong .vscodethư mục thường chỉ được cập nhật khi bạn thay đổi phiên bản thư mục của cài đặt (dường như có một số ngoại lệ không thường xuyên).

  • Nếu bạn thay đổi cài đặt người dùng , chúng sẽ được lưu ở nơi khác.
  • Nếu bạn thay đổi cài đặt không gian làm việc , chúng thường được lưu trữ trong *.code-workspacethư mục mà bạn hiện đang sử dụng (đôi khi chúng vẫn xuất hiện trong các tệp cài đặt thư mục - nhưng bạn có thể tự di chuyển chúng!).

Điều này có nghĩa là bạn nên đặt các cài đặt tùy chỉnh cho PC cá nhân của mình vào cài đặt người dùng và đặt các cài đặt chung cho một dự án / gói cụ thể vào các dự án khác, bất cứ khi nào có thể.

  • Tôi đã nhận thấy rằng khi sử dụng tiện ích mở rộng Python, .vscode/settings.jsontệp (lưu cài đặt thư mục ) luôn lưu đường dẫn tuyệt đối trong pythonpathcài đặt, vì vậy tôi đã xóa loại trừ khỏi .gitignoretệp của mình và không còn lưu tệp đó vào kho lưu trữ Python của tôi. Ngay cả khi tôi lưu nó với một đường dẫn tương đối, Mã VS chỉ đặt lại nó thành đường dẫn tuyệt đối.
  • Thay vào đó, tôi chỉ lưu bất kỳ thư mục nào tôi cần sử dụng trong Code làm không gian làm việc (ví dụ: tạo myproject.code-workspacetệp bằng Tệp -> Lưu không gian làm việc dưới dạng . Bằng cách đó, bạn có thể kiểm soát những gì đi vào tệp không gian làm việc và lưu vào repo, trong khi loại trừ tệp cài đặt thư mục ( .vscode/settings.json). Bạn có thể di chuyển khá nhiều bất kỳ cài đặt nào giữa các tệp cài đặt không gian làm việc và thư mục để kiểm soát những gì được lưu và những gì không. Chỉ cần lưu ý rằng tệp không gian làm việc sẽ ghi đè lên bất cứ thứ gì trong tệp cài đặt thư mục.

Cái dài và ngắn của nó là - bạn chỉ có thể sử dụng tệp không gian làm việc và đặt tất cả các cài đặt chung trong đó, trong khi đặt cài đặt cục bộ vào tệp cài đặt thư mục, ít nhất là cho Python. Các ngôn ngữ khác có thể theo một mô hình khác nhau.

Tất nhiên, bạn có thể có các lý do khác để lưu .vscode/settings.jsontệp hoặc một phần của tệp. Hoặc điều này có thể không phải là một vấn đề cho các cài đặt trong ngôn ngữ hiện tại của bạn.

Số dặm của bạn có thể thay đổi ...


10

Tại sao không chỉ nhìn vào thực tiễn, ngoài những tranh luận xung quanh đây?

Một trong những dự án lớn nhất mà .vscodetôi tìm thấy cho đến nay là Mozilla Firefox . Có vẻ như nhóm Firefox chia sẻ các tác vụ chung và các tiện ích mở rộng được đề xuất.

Vì vậy, tôi đoán rằng đó không phải là một ý tưởng tồi để giữ .vscode, miễn là bạn biết những gì bạn đang làm.

Tôi sẽ cập nhật bài viết này khi tôi thấy các dự án lớn khác chia sẻ .vscode.


8

Tương tự như các câu trả lời khác: không.

Như một minh họa, hãy xem xét cách tiếp cận được chọn bởi Git 2.19 (Q3 2018), bổ sung một tập lệnh (in contrib/) để giúp người dùng VSCode hoạt động tốt hơn với cơ sở mã Git.

Nói cách khác, tạo .vscodenội dung (nếu nó chưa tồn tại), đừng phiên bản nó.

Xem cam kết 12861e2 , cam kết 2a2cdd0 , cam kết 5482f41 , cam kết f2a3b68 , cam kết 0f47f78 , cam kết b4d991d , cam kết 58930fd , cam kết dee3382 , cam kết 54c06c6 (30 tháng 7 năm 2018) bởi Johannes Schindelin ( dscho) .
(Được hợp nhất bởi Junio ​​C Hamano - gitster- trong cam kết 30cf191 , ngày 15 tháng 8 năm 2018)

contrib: thêm tập lệnh để khởi tạo cấu hình Mã VS

VS Code là trình chỉnh sửa mã nguồn nhẹ nhưng mạnh mẽ chạy trên máy tính để bàn của bạn và có sẵn cho Windows, macOS và Linux.
Trong số các ngôn ngữ khác, nó có hỗ trợ cho C / C ++ thông qua một phần mở rộng, cung cấp không chỉ xây dựng và gỡ lỗi mã, mà còn cả Intellisense, tức là hoàn thành nhận biết mã và các tính năng tương tự.

Vá này cho biết thêm một kịch bản mà giúp thiết lập môi trường làm việc hiệu quả với VS Mã số: chỉ cần chạy shell script Unix contrib/vscode/init.sh, mà tạo ra các tập tin có liên quan, và mở thư mục cấp cao nhất của mã nguồn Git trong VS Mã .


1

Câu trả lời là "KHÔNG", vì thư mục .vscode dành cho trình chỉnh sửa này và bạn không nên đẩy các cài đặt cá nhân này để repo trong trường hợp gây nhầm lẫn cho người khác, vì vậy bạn có thể thêm nó vào tệp .gitignore của dự án để bỏ qua các thay đổi


17
Tôi sẽ không đồng ý với lập trường nghiêm ngặt của bạn. Như được đề cập trong câu trả lời của @BenjaminPasero, bạn không cần phải làm vậy, nhưng nó có ý nghĩa trong nhiều trường hợp, ví dụ như chia sẻ cấu hình tác vụ. Tất nhiên, thật tốt khi để tâm đến đồng đội của một người và không ép buộc sở thích đối với họ một cách không cần thiết.
Ronald Zarīts

Vâng, đây là lý do tại sao chúng tôi có các cài đặt người dùng và cài đặt không gian làm việc riêng biệt ( .vscode/settings.jsontệp trong không gian làm việc): code.visualstudio.com/docs/getstarted/. Chỉ những thứ như cấu hình công cụ mới đi vào cài đặt không gian làm việc
Matt Bierner

@ RonaldZarīts .vscode thư mục nói về cài đặt và kiểu mã của trình soạn thảo của riêng bạn, tôi nghĩ rằng nó chỉ để sử dụng riêng, vì vậy như tôi đã nói trước đây, đừng đẩy thư mục vào luồng điều khiển git.
jialin wang

6
@jialinwang Xin lỗi, tôi đã làm rồi. ;) Đùa sang một bên, nó cũng chứa các mục hữu ích để chia sẻ, ví dụ trong dự án của tôi, chúng tôi có (1) launch.json- khởi chạy các cấu hình để gỡ lỗi có thể không tầm thường để thiết lập. (2) settings.jsoncài đặt cấp độ dự án, như trình biên dịch TypeScript để sử dụng, quy tắc khoảng trắng, (3) tasks.json- xây dựng các lệnh. Bạn có thể chọn không chia sẻ, nhưng chúng tôi thấy nó hữu ích.
Ronald Zarīts

@jialinwang Không, họ không có. Chúng là các cài đặt cấp thư mục. Bạn không chỉ nên bao gồm cấp cao nhất, nếu bạn có bất kỳ cài đặt cụ thể nào cho các thư mục phụ, bạn cũng nên bao gồm các cài đặt đó. Điều quan trọng là giữ cho tùy chọn người dùng của bạn thoát khỏi cài đặt cấp thư mục (điều này cũng quan trọng vì các lý do khác). Những thứ bạn nên có trong cài đặt cấp thư mục nên áp dụng cho toàn bộ thư mục: trình định dạng, linters, quy ước khoảng trắng (ví dụ: cắt các dòng mới cuối cùng, kích thước tab ...) ...
DylanYoung

1

Một cách đơn giản để giữ các cài đặt của bạn mà không cần cam kết trong kho git dự án của bạn là tạo một không gian làm việc và thêm thư mục vào đó.

Khi bạn tạo một không gian làm việc, bạn cần lưu một tệp code-workspace. Tệp này chứa các cài đặt tùy chỉnh, chỉ cần lưu tệp này ra khỏi kho git và sẽ miễn phí để thêm .vscodevào .gitignoretệp.

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.