การกระทำแบบไม่เรียกซ้ำของ Tortoise ทำงานอย่างไร


110

ฉันได้ตรวจสอบสำเนาของสาขา SVN (สาขาของฉัน) ในเครื่องที่ฉันรวมจากสาขาอื่น (ซึ่งมีโครงสร้างโฟลเดอร์ที่แตกต่างกันโดยสิ้นเชิง) โดยพื้นฐานแล้วมีการลบ (ไฟล์เก่า) และส่วนเพิ่มเติม (ของไฟล์ใหม่) จำนวนมาก

เมื่อฉันพยายามรวมเข้ากับที่เก็บ (ไปยังสาขาของฉัน) Tortoise กล่าว

คอมมิตนี้จะไม่วนซ้ำและมีการย้าย / เปลี่ยนชื่อโฟลเดอร์ที่เลือกสำหรับคอมมิต การย้าย / เปลี่ยนชื่อดังกล่าวจะดำเนินการซ้ำในที่เก็บเสมอ คุณต้องการที่จะกระทำต่อไปหรือไม่?

สามารถดำเนินการตามข้อตกลงนี้ได้หรือไม่ ถ้าไม่ควรทำอย่างไรจึงจะไม่มีปัญหา

นอกจากนี้สำหรับบางไฟล์ที่ฉันเพิ่มฉันได้ทำการเปลี่ยนแปลงหลังจากเพิ่มแล้ว (หากสิ่งนี้มีผลต่อลักษณะ)

คำตอบ:


129

Google ค้นพบวิธีแก้ไข: กด F5 ในหน้าต่างคอมมิต (ไม่ใช่ใน "ป๊อปอัปคำเตือน")

ดูรายละเอียดhttp://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2831045

เมื่อ 26.08.2011 22:39 น. Ryan J Ollos เขียนว่า:

เป็นเวลาหลายเดือนแล้วที่ฉันเห็นกล่องโต้ตอบต่อไปนี้ปรากฏขึ้นเมื่อเริ่มต้น Commit มักเกิดขึ้นเมื่อพยายามกระทำการตามการผสาน

สิ่งที่ฉันสังเกตเห็นเมื่อเร็ว ๆ นี้ก็คือถ้าฉันยกเลิกแล้วรีเฟรชรายการไฟล์ด้วยตนเอง (F5) ฉันจะไม่เห็นข้อความนั้นอีกเมื่อเริ่มการคอมมิตเป็นครั้งที่สอง ดูเหมือนว่าการกระทำจะประสบความสำเร็จและไม่มีปัญหาใด ๆ

กล่องโต้ตอบคอมมิตจะตรวจสอบสำเนาที่ใช้งานได้ในเธรดพื้นหลังสำหรับการแจ้งเตือนการเปลี่ยนแปลง ระบบปฏิบัติการส่งการแจ้งเตือนดังกล่าวในกรณีที่ไฟล์มีการแก้ไข / ย้าย / เปลี่ยนชื่อ / ... หากได้รับการแจ้งเตือนดังกล่าวกล่องโต้ตอบการคอมมิตจะทำการตรวจสอบสองสามครั้งก่อนเพื่อให้ไฟล์ส่วนใหญ่หลุดได้ หากการแจ้งเตือนระบุว่าไฟล์ที่ไม่ได้ตรวจสอบและมองไม่เห็นในกล่องโต้ตอบการคอมมิตมีการเปลี่ยนแปลงอย่างใดการแจ้งเตือนจะเปลี่ยนกลับเป็นการคอมมิตแบบไม่เรียกซ้ำ นั่นเป็นเพราะถ้าคุณมีเช่นไฟล์ที่เปิดในโปรแกรมแก้ไขอื่นและบันทึกการเปลี่ยนแปลงของคุณในขณะที่กล่องโต้ตอบการกระทำเปิดอยู่ไฟล์นั้นก็จะถูกผูกมัดเช่นกันแม้ว่าคุณจะไม่ได้ตรวจสอบในกล่องโต้ตอบการกระทำก็ตาม (มันไม่ปรากฏขึ้น จนกว่าคุณจะรีเฟรชกล่องโต้ตอบด้วย F5)

ดังนั้นหากคุณเห็นกล่องโต้ตอบคำเตือนบ่อยครั้งโปรดตรวจสอบว่ามีเครื่องมือ / แอปอื่นที่ทำงานอยู่ซึ่งแก้ไขไฟล์ในสำเนาการทำงานของคุณหรือไม่

และอย่างที่คุณสังเกตเห็น: ถ้าคุณกด F5 'แฟล็กที่ไม่เรียกซ้ำ' นั้นจะถูกรีเซ็ตเนื่องจากหลังจากรีเฟรชคุณจะเห็นไฟล์ทั้งหมดอีกครั้งแม้แต่ไฟล์ที่คุณแก้ไขหลังจากที่คุณเริ่มกล่องโต้ตอบ

สเตฟาน


1
ลิงก์ในคำตอบดูเหมือนจะตายแล้ว นี่คือข้อมูลที่ถูกต้องจาก Internet Archive web.archive.org/web/20150306224932/http://…
buzz3791

2
ฉันเพิ่งลองกด F5 ผลกระทบคือตอนนี้รายการไฟล์โต้ตอบการกระทำจะแสดงไฟล์ส่วนใหญ่ของฉันสองครั้ง (โดยมีพา ธ และชื่อเดียวกันทุกประการ) และข้อความเตือนยังคงปรากฏขึ้นเมื่อฉันพยายามคอมมิต
หรือ Mapper

26

ฉันมีปัญหาเดียวกัน แต่แก้ไขได้โดยการคืนค่าการเปลี่ยนแปลงไฟล์ที่ฉันทำเครื่องหมายเป็น 'ละเว้น-on-กระทำ'

เมื่อฉันเปลี่ยนคืนไฟล์เหล่านี้แล้ว tortoisesvn ก็สามารถคอมมิตไฟล์อื่น ๆ ทั้งหมดจากการผสาน


เหตุผลที่แท้จริงคืออะไร? เหตุใดไฟล์เหล่านี้จึงทำให้เกิดปัญหาได้อย่างไร
Mannoj

5

จะดีหรือไม่หากฉันดำเนินการตามข้อตกลงนี้

ไม่คอมมิตของคุณจะเพิกเฉยต่อการเปลี่ยนแปลงทั้งหมดใน WC-tree และแสดงเฉพาะการเปลี่ยนแปลงระดับรูท (การผสานที่ไม่สมบูรณ์)

คุณทำข้อผิดพลาดเมื่อตรวจสอบแบบไม่เรียกซ้ำในตอนแรก คุณสามารถลองดำเนินการที่ดีและเต็มรูปแบบโดยใช้ --depth infinityพารามิเตอร์ใน CLI หรือค้นหาสวิตช์นี้ใน TortoiseSVN GUI

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

1
"คุณเกิดข้อผิดพลาดเมื่อตรวจสอบในตอนแรกที่ไม่มีการเรียกซ้ำ" ไม่ไม่จำเป็น ฉันตรวจสอบห้องสุขาของฉันแบบเดียวกับที่ทำมาตลอด แต่จู่ๆก็ยังมีปัญหานี้อยู่ ในความเป็นจริงดูเหมือนจะไม่เป็นเช่นนั้นสำหรับโซลูชันทางเลือกใด ๆ ด้านล่างเลย
Keith M

นี่เป็นเท็จอย่างสมบูรณ์ ฉันได้รับข้อความนี้เป็นครั้งคราวและตรวจดูสำเนาการทำงานของฉันแบบวนซ้ำในลักษณะเดียวกับที่ฉันทำอยู่เสมอ
1800 ข้อมูล

1

นอกจากนี้สำหรับไฟล์บางไฟล์ที่ฉันเพิ่ม SVN ฉันได้ทำการเปลี่ยนแปลงหลังจากเพิ่มแล้ว (หากสิ่งนี้มีผลต่อลักษณะ)

ในกรณีของฉันนั่นคือสิ่งที่ทำให้ข้อความปรากฏขึ้นแม้ว่าฉันจะไม่ได้เลือกไฟล์เหล่านั้นสำหรับการคอมมิตก็ตาม

วิธีแก้ปัญหาที่น่าเกลียดซึ่งใช้งานได้อย่างปลอดภัยหากไฟล์เพียงไม่กี่ไฟล์ได้รับผลกระทบ:

  1. สร้างสำเนาของไฟล์ที่เปลี่ยนแปลง
  2. เปลี่ยนกลับไฟล์ที่เปลี่ยนแปลง
  3. ยอมรับการรวม / การรวมใหม่
  4. คัดลอกไฟล์ที่เปลี่ยนแปลงกลับไปที่เดิม

เตือนตัวเอง: รวมกิ่งไม้กลับเข้าไปใหม่ก็ต่อเมื่อเป้าหมาย (ลำต้น) สะอาด


1

ดูเหมือนว่า TortoiseSVN จะทำการตรวจสอบความถูกต้องบางอย่างก่อนที่จะเรียกคอมมิต ดี แต่ข้อความแสดงข้อผิดพลาดไม่ชัดเจนมาก

เมื่อฉันประสบปัญหานี้ฉันกลับไปใช้บรรทัดคำสั่ง svn เพื่อกระทำ Commit ล้มเหลวเนื่องจากสาเหตุที่โฟลเดอร์ใดโฟลเดอร์หนึ่งไม่ทันสมัย หลังจากอัปเดตเพียงแค่โฟลเดอร์นั้นฉันเรียกใช้ "svn คอมมิต" อีกครั้งและผ่านไป

แก้ไข: ป.ล. : ก่อนที่คุณจะใช้ลองทำดูให้แน่ใจว่าคุณไม่มีไฟล์ใด ๆ ที่ทำเครื่องหมายว่า "ละเว้นในการกระทำ" "ละเว้นในการกระทำ" เป็นเต่าที่เฉพาะเจาะจงและ SVN กระทำเลือกการเปลี่ยนแปลงเหล่านี้เช่นกัน


1

แค่คิดว่าฉันโพสต์สิ่งนี้เพราะมันได้ผลสำหรับฉัน ...

สาเหตุที่เกิดขึ้นเป็นเพราะฉันเปลี่ยนชื่อบางส่วนของโครงการใหม่ที่สร้างขึ้นและด้วยเหตุผลบางอย่างพวกเขาทั้งหมดแสดงเป็น "หายไป" บนหน้าจอคอมมิต

หลังจากที่ฉันลบโปรเจ็กต์และโฟลเดอร์ (ซึ่ง SVN ได้ใส่เครื่องหมายถูกไว้) และใส่มันกลับเข้าไปในโปรเจ็กต์ใหม่อีกครั้งทันใดนั้น "หายไป" ทั้งหมดก็กลายเป็น "เพิ่มแล้ว" และคอมมิตก็ทำงานได้ดีโดยไม่มีการเตือนอะไรฉันเลย .

หวังว่านี่จะช่วยได้!


1

ฉันเห็นปัญหานี้และสาเหตุคือไฟล์ที่เพิ่มบางไฟล์ไม่มีสถานะที่เพิ่มโดยไม่มีเหตุผลที่ชัดเจน มันเป็น 'ปกติ' แม้ว่าโฟลเดอร์หลักจะแสดงอย่างถูกต้องว่า 'เพิ่ม' ฉันเปลี่ยนกลับการเปลี่ยนแปลง 'ปกติ' เหล่านั้นแล้วทำการเปลี่ยนแปลงใหม่ด้วยตนเอง สิ่งนี้ทำให้แต่ละรายการที่เพิ่มแสดงขึ้นสองครั้งในรายการการกระทำ แต่ได้รับการแก้ไขข้อผิดพลาดและทุกอย่างดูเหมือนจะทำงานได้ดีในขณะนี้

ไม่มีส่วนเกี่ยวข้องกับการเพิกเฉยต่อการกระทำเช่นเดียวกับคำตอบอื่นดูเหมือนว่าเป็นข้อบกพร่องใน TortoiseSVN


จากสิ่งที่ฉันบอกได้ TortoiseSVN ไม่ได้ย้ายไฟล์ซ้ำ ๆ การย้ายโฟลเดอร์จะเปลี่ยนประวัติโฟลเดอร์ แต่ไม่ใช่ไฟล์ในนั้น ซึ่งหมายความว่าในการย้ายโฟลเดอร์ด้วย TortoiseSVN คุณต้องสร้างโฟลเดอร์ใหม่ในปลายทางที่ต้องการเพิ่มโฟลเดอร์จากนั้นย้ายเนื้อหาของโฟลเดอร์เดิมไปยังโฟลเดอร์ใหม่ หรือเพียงแค่ใช้บรรทัดคำสั่ง
Bradley Singer

ฉันเชื่อว่านี่มาจากการผสานไม่ใช่การเคลื่อนไหว ฉันไม่ได้ติดตามเว้นแต่จะเป็นการดำเนินการที่คล้ายคลึงกัน
คริส

0

ปัญหาอาจเกิดจากการที่ใครบางคนลบข้อมูลผสานของคุณโดยอัตโนมัติหรือโดยอัตโนมัติเนื่องจากข้อมูลถูกย้ายขึ้นในแผนภูมิ หากคุณจะรวมเข้าด้วยกันอีกครั้งก็จะใช้ได้ในขณะนี้ แต่คนอื่น ๆ ทั้งหมดจะได้รับปัญหาเกี่ยวกับสาขาที่ไม่ได้รวมเข้าด้วยกัน SVN จะหลวมรหัสบางส่วนและรวมรหัสที่ส่งไปแล้วอีกครั้ง

ดังนั้นการคืนค่าไฟล์เหล่านั้นและเปลี่ยนแปลงอีกครั้งอาจได้ผล แต่คุณไม่ควรเพียงแค่ยอมรับการเปลี่ยนแปลง


0

ฉันเพิ่งมีปัญหาเดียวกัน แทนที่จะเลือกไฟล์ทั้งหมดฉันคลิกที่เวอร์ชันและทุกอย่างทำงานได้ดี ในกรณีของฉันตัวเลือกเวอร์ชันเลือกไฟล์ทั้งหมดดังนั้นตอนนี้ทุกอย่างก็โอเค


-4

ฉันไม่รู้ตัวเลือกสำหรับ tortoisesvn แต่คุณสามารถใช้บรรทัดคำสั่งได้

svn commit --non-recursive [folder]

นั่นจะทำงานได้เหมือนกับที่คุณชอบในการทำงานกรีก


คำตอบอื่น ๆ บอกว่าสิ่งนี้จะไม่เป็นการกระทำในสิ่งที่คุณต้องการกระทำจริงๆ
Keith M
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.