Cam kết không đệ quy của Tortoise hoạt động như thế nào?


110

Tôi đã kiểm tra bản sao của nhánh SVN (nhánh của tôi) cục bộ mà tôi đã hợp nhất từ ​​một nhánh khác (có cấu trúc thư mục hoàn toàn khác). Vì vậy, về cơ bản có rất nhiều lần xóa (của tệp cũ) và bổ sung (của tệp mới).

Khi tôi cố gắng hợp nhất với kho lưu trữ (với chi nhánh của tôi), Tortoise nói

Cam kết này không phải là đệ quy và có các thư mục đã chuyển / đổi tên được chọn để cam kết. Việc di chuyển / đổi tên như vậy luôn được thực hiện đệ quy trong kho lưu trữ. Bạn có muốn cam kết không?

Có ổn không để tiếp tục cam kết này? Nếu không, tôi phải làm gì để không có vấn đề gì?

Ngoài ra, đối với một số tệp mà tôi đã thêm, tôi đã thực hiện các thay đổi sau khi thêm (nếu điều này ảnh hưởng đến bản chất).

Câu trả lời:


129

Được Google tìm thấy cách khắc phục: nhấn F5 trong cửa sổ cam kết (không phải trong "cửa sổ bật lên cảnh báo")

Xem http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2831045 để biết chi tiết.

Vào ngày 26.08.2011 22:39, Ryan J Ollos đã viết:

Trong vài tháng nay, tôi đã thấy hộp thoại sau xuất hiện khi bắt đầu Cam kết. Nó thường xảy ra khi cố gắng cam kết sau một hợp nhất.

Tuy nhiên, điều tôi nhận thấy gần đây là nếu tôi Hủy và sau đó làm mới danh sách tệp theo cách thủ công (F5), tôi sẽ không thấy lại thông báo khi bắt đầu cam kết lần thứ hai. Cam kết dường như thành công tốt đẹp và không có vấn đề gì thêm.

Hộp thoại cam kết giám sát bản sao hoạt động trong một chuỗi nền để biết các thông báo thay đổi. Các thông báo như vậy được gửi bởi Hệ điều hành trong trường hợp các tệp được sửa đổi / di chuyển / đổi tên / ... Nếu nhận được thông báo như vậy, trước tiên hộp thoại cam kết sẽ thực hiện một số kiểm tra để nó có thể loại bỏ hầu hết chúng. Nếu thông báo chỉ ra rằng một tệp không được kiểm tra và không hiển thị trong hộp thoại cam kết bằng cách nào đó đã thay đổi, nó sẽ chuyển trở lại cam kết không đệ quy. Đó là bởi vì nếu bạn có ví dụ: một tệp đang mở trong trình chỉnh sửa khác và lưu các thay đổi của bạn trong khi hộp thoại cam kết đang mở, thì tệp đó cũng sẽ được cam kết ngay cả khi bạn chưa kiểm tra nó trong hộp thoại cam kết (nó không hiển thị cho đến khi bạn làm mới hộp thoại bằng F5).

Vì vậy, nếu bạn thấy hộp thoại cảnh báo đó thường xuyên, hãy kiểm tra xem có một công cụ / ứng dụng nào khác đang chạy sửa đổi tệp trong bản sao làm việc của bạn hay không.

Và như bạn nhận thấy: nếu bạn nhấn F5, 'cờ không đệ quy' đó sẽ được đặt lại vì sau khi làm mới, bạn sẽ thấy lại tất cả các tệp - ngay cả những tệp bạn đã sửa đổi sau khi bắt đầu hộp thoại.

Stefan


1
Liên kết trong câu trả lời dường như đã chết. Dưới đây là một hiệu lực kể từ Internet Archive web.archive.org/web/20150306224932/http://...
buzz3791

1
Tôi vừa thử nhấn F5. Hiệu quả là bây giờ, danh sách tệp hộp thoại cam kết hiển thị hầu hết các tệp của tôi hai lần (với đường dẫn và tên giống hệt nhau) và thông báo cảnh báo vẫn xuất hiện khi tôi cố gắng thực hiện.
HOẶC Mapper

26

Tôi gặp vấn đề tương tự nhưng đã giải quyết nó bằng cách hoàn nguyên các thay đổi đối với các tệp mà tôi đã đánh dấu là 'bỏ qua khi cam kết'

Sau khi tôi hoàn nguyên các tệp này, thì rùa bò có thể cam kết tất cả các tệp khác từ hợp nhất


một lý do thực tế là gì? tại sao hoặc làm thế nào những tệp này gây ra sự cố?
Mannoj

5

Có ổn không nếu tôi tiếp tục cam kết này?

Không, cam kết của bạn sẽ bỏ qua tất cả các thay đổi trong WC-tree và chỉ phản ánh các thay đổi cấp gốc (hợp nhất bị hỏng).

Bạn đã mắc lỗi khi kiểm tra không đệ quy lúc đầu. Bạn có thể thử thực hiện cam kết tốt, đầy đủ bằng cách sử dụng --depth infinitytham số trong CLI hoặc tìm công tắc này trong TortoiseSVN GUI.

svn commit --depth infinity . -m "Merge"

1
"Bạn đã mắc lỗi khi kiểm tra ban đầu không đệ quy." Không, không nhất thiết. Tôi đã kiểm tra nhà vệ sinh của mình theo cách tôi thường làm, nhưng tôi vẫn gặp sự cố đột ngột. Trên thực tế, điều này dường như không đúng với bất kỳ giải pháp thay thế nào bên dưới.
Keith M

Điều này là hoàn toàn sai. Tôi nhận được thông báo này bất cứ lúc nào và tôi đã kiểm tra ra làm việc của tôi sao chép một cách đệ quy trong cùng một cách tôi vẫn thường làm
1800 INFORMATION

1

Ngoài ra, đối với một số tệp mà tôi đã thêm SVN, tôi đã thực hiện các thay đổi sau khi thêm (Nếu điều này ảnh hưởng đến tính chất).

Trong trường hợp của tôi, đó chính xác là nguyên nhân khiến thông báo xuất hiện, ngay cả khi tôi đã bỏ chọn các tệp đó cho cam kết.

Giải pháp xấu chỉ hoạt động an toàn nếu chỉ một số tệp bị ảnh hưởng:

  1. Tạo bản sao của các tệp đã thay đổi
  2. Hoàn nguyên các tệp đã thay đổi
  3. Cam kết hợp nhất / tái hòa nhập
  4. Sao chép các tệp đã thay đổi trở lại vị trí ban đầu

Nhắc nhở bản thân: chỉ hòa nhập lại một nhánh nếu mục tiêu (thân cây) đã sạch.


1

Có vẻ như TortoiseSVN thực hiện một số loại kiểm tra tính hợp lệ trước khi gọi cam kết. Tốt nhưng thông báo lỗi rất không rõ ràng.

Khi gặp sự cố này, tôi đã quay lại sử dụng dòng lệnh svn để cam kết. Cam kết không thành công do một trong các thư mục không được cập nhật. Sau khi cập nhật thư mục đó, tôi chạy "svn commit" một lần nữa và nó đã hoạt động.

Chỉnh sửa: Tái bút: Trước khi bạn sử dụng, hãy thử điều này, hãy đảm bảo rằng bạn không có bất kỳ tệp nào được đánh dấu là "bỏ qua khi cam kết". "Bỏ qua khi cam kết" là cụ thể và cam kết SVN cũng chọn những thay đổi này.


1

Tôi chỉ nghĩ rằng tôi sẽ đăng bài này bởi vì nó hiệu quả với tôi ...

Lý do điều này xảy ra là vì tôi đã đổi tên một phần của một trong những dự án mới mà tôi đã tạo và vì một số lý do tất cả chúng đều hiển thị là "Thiếu" trên màn hình cam kết.

Sau khi tôi xóa dự án và thư mục (mà SVN đã đánh dấu vào) và đặt nó trở lại như một dự án mới một lần nữa, đột nhiên tất cả "Thiếu" đã chuyển thành "Đã thêm" và cam kết chạy tốt mà không cảnh báo tôi bất kỳ điều gì. .

Hi vọng điêu nay co ich!


1

Tôi đã gặp sự cố này và nguyên nhân là do một số tệp được thêm vào không có trạng thái đã thêm mà không có lý do rõ ràng. Chúng vẫn 'bình thường' mặc dù thư mục mẹ hiển thị chính xác là 'đã thêm'. Tôi đã hoàn nguyên những thay đổi 'bình thường' đó và sau đó thực hiện lại chúng theo cách thủ công. Điều này đã làm cho mỗi mục được thêm vào hiển thị hai lần trong danh sách cam kết nhưng nó đã giải quyết được lỗi và mọi thứ dường như đang hoạt động bình thường.

Nó không liên quan gì đến bỏ qua khi cam kết như trong một câu trả lời khác, nó chỉ có vẻ như là một lỗi trong TortoiseSVN.


Từ những gì tôi có thể nói, TortoiseSVN không di chuyển đệ quy các tệp. Di chuyển một thư mục sẽ thay đổi lịch sử thư mục, nhưng không thay đổi các tệp trong đó. Điều này có nghĩa là để di chuyển các thư mục với TortoiseSVN, bạn phải tạo lại thư mục ở đích mong muốn, thêm thư mục, sau đó di chuyển nội dung của thư mục gốc sang thư mục mới. Hoặc chỉ sử dụng dòng lệnh.
Bradley Singer

Tôi tin rằng đây là từ một hợp nhất, không phải là một động thái. Trừ khi đó là những thao tác tương tự, tôi sẽ không làm theo.
Chris

0

Vấn đề có thể là thông tin hợp nhất của bạn bị ai đó hoặc tự động xóa, vì thông tin được chuyển lên trong cây. Nếu bạn định hợp nhất chúng lại, nó sẽ hoạt động ngay lúc này. Nhưng tất cả những người khác sẽ gặp vấn đề với các nhánh không hợp nhất của họ. SVN sẽ loại bỏ một số mã và hợp nhất lại mã đã được gửi.

Vì vậy, việc hoàn nguyên các tệp đó và thay đổi lại chúng có thể hoạt động, nhưng bạn không nên chỉ cam kết các thay đổi.


0

Tôi chỉ có cùng một vấn đề. Thay vì chọn tất cả các tệp, tôi đã nhấp vào phiên bản và mọi thứ hoạt động tốt. Trong trường hợp của tôi, tùy chọn được tạo phiên bản đã chọn tất cả các tệp, vì vậy mọi thứ bây giờ đều ổn.


-4

tôi không biết một tùy chọn cho rùa bò nhưng bạn có thể sử dụng dòng lệnh

svn commit --non-recursive [folder]

nó sẽ hoạt động giống như bạn thích nó làm việc


Các câu trả lời khác nói rằng điều này sẽ không cam kết những gì bạn thực sự muốn cam kết.
Keith M
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.