Subversion không có tính năng "không cam kết" / "bỏ qua cam kết" tích hợp, kể từ tháng 2 năm 2016 / phiên bản 1.9. Câu trả lời này là một cách giải quyết dòng lệnh không lý tưởng
Như OP tuyên bố, TortoiseSVN đã tích hợp sẵn tính năng thay đổi, "bỏ qua cam kết", tự động được loại trừ khỏi các cam kết. Máy khách dòng lệnh không có điều này, vì vậy bạn cần sử dụng nhiều thay đổi để thực hiện cùng một hành vi này (có cảnh báo) :
- một cho công việc bạn muốn cam kết [công việc]
- một cho những thứ bạn muốn bỏ qua [bỏ qua cam kết]
Vì đã có tiền lệ với TortoiseSVN, tôi sử dụng "bỏ qua cam kết" trong các ví dụ của mình cho các tệp mà tôi không muốn cam kết. Tôi sẽ sử dụng "công việc" cho các tệp tôi làm, nhưng bạn có thể chọn bất kỳ tên nào bạn muốn.
Đầu tiên, thêm tất cả các tệp vào một thay đổi có tên là "công việc". Điều này phải được chạy từ gốc của bản sao làm việc của bạn:
svn cl work . -R
Điều này sẽ thêm tất cả các tệp trong bản sao làm việc theo cách đệ quy vào danh sách thay đổi có tên là "công việc". Có một bất lợi cho điều này - vì các tệp mới được thêm vào bản sao đang hoạt động, bạn sẽ cần thêm cụ thể các tệp mới hoặc chúng sẽ không được bao gồm. Thứ hai, nếu bạn phải chạy lại cái này thì bạn sẽ cần phải thêm lại tất cả các tệp "bỏ qua cam kết" của mình. Không lý tưởng - bạn có thể bắt đầu duy trì danh sách 'bỏ qua' của riêng mình trong một tệp như những người khác đã làm.
Sau đó, đối với các tệp bạn muốn loại trừ:
svn cl ignore-on-commit path\to\file-to-ignore
Bởi vì các tệp chỉ có thể nằm trong một thay đổi, nên việc bổ sung này sau khi thêm "công việc" trước đó của bạn sẽ xóa tệp bạn muốn bỏ qua khỏi công cụ thay đổi "công việc" và đưa nó vào danh sách thay đổi "bỏ qua cam kết".
Khi bạn đã sẵn sàng cam kết các tệp đã sửa đổi mà bạn muốn cam kết, sau đó bạn chỉ cần thêm "--cl work" vào cam kết của mình:
svn commit --cl work -m "message"
Đây là một ví dụ đơn giản trông giống như trên máy của tôi:
D:\workspace\trunk>svn cl work . -R
Skipped '.'
Skipped 'src'
Skipped 'src\conf'
A [work] src\conf\db.properties
Skipped 'src\java'
Skipped 'src\java\com'
Skipped 'src\java\com\corp'
Skipped 'src\java\com\corp\sample'
A [work] src\java\com\corp\sample\Main.java
Skipped 'src\java\com\corp\sample\controller'
A [work] src\java\com\corp\sample\controller\Controller.java
Skipped 'src\java\com\corp\sample\model'
A [work] src\java\com\corp\sample\model\Model.java
Skipped 'src\java\com\corp\sample\view'
A [work] src\java\com\corp\sample\view\View.java
Skipped 'src\resource'
A [work] src\resource\icon.ico
Skipped 'src\test'
D:\workspace\trunk>svn cl ignore-on-commit src\conf\db.properties
D [work] src\conf\db.properties
A [ignore-on-commit] src\conf\db.properties
D:\workspace\trunk>svn status
--- Changelist 'work':
src\java\com\corp\sample\Main.java
src\java\com\corp\sample\controller\Controller.java
src\java\com\corp\sample\model\Model.java
M src\java\com\corp\sample\view\View.java
src\resource\icon.ico
--- Changelist 'ignore-on-commit':
M src\conf\db.properties
D:\workspace\trunk>svn commit --cl work -m "fixed refresh issue"
Sending src\java\com\corp\sample\view\View.java
Transmitting file data .done
Committing transaction...
Committed revision 9.
Một cách khác là chỉ cần thêm mọi tệp bạn muốn cam kết vào danh sách thay đổi 'công việc' và thậm chí không duy trì danh sách bỏ qua, nhưng đây cũng là một công việc rất nhiều. Thực sự, giải pháp lý tưởng, đơn giản duy nhất là nếu / khi điều này được thực hiện trong chính SVN. Có một vấn đề lâu dài về vấn đề này trong trình theo dõi vấn đề Subversion, SVN-2858 , trong trường hợp điều này thay đổi trong tương lai.