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


7

ฉันมี 700+ โฟลเดอร์พร้อมชุดไฟล์ asp คลาสสิกกว่า 200+ ไฟล์ (โดยทั่วไปคือไฟล์ข้อความ) ในแต่ละโฟลเดอร์ ในช่วงหลายปีที่ผ่านมามีหลายคนที่ทำการเปลี่ยนแปลงเล็กน้อยในไฟล์ asp ฉันต้องการโปรแกรมอรรถประโยชน์ (สำหรับ Windows) ซึ่งสามารถเปรียบเทียบโฟลเดอร์และไฟล์ทั้งหมดและระบุไฟล์เดียวกันทุกเวอร์ชัน

ไม่มีใครมีข้อเสนอแนะหรือไม่?


4
คิดค้นไทม์แมชชีนย้อนเวลากลับไปเมื่อคุณมี 1 ไฟล์ที่มีไฟล์มากกว่า 200 ไฟล์ใช้การควบคุมเวอร์ชันย้อนหลังไปจนถึงวันนี้ปัญหาหายไป! ;)
Shevek

ฉันหวังว่านั่นเป็นตัวเลือก
Daniel Brink

คุณเคยพิจารณาถามที่stackoverflowว่ามีคนอื่นที่มีปัญหาคล้ายกันหรือไม่ อาจจะมีโครงการ un-scm-ed ...
Tobias Kienzler

เพียงใช้พรอมต์คำสั่งคุณสามารถเปรียบเทียบสองไฟล์หรือโฟลเดอร์อย่างมีประสิทธิภาพเพียงแค่ดูfunbutlearn.com/2012/10/30
เทคโนโลยี

1
มีคนบอกฉันว่ามีคำสั่ง Windows ในตัวในการcmdเรียกใช้RoboCopyนอกจากนี้ยังมีแอปพลิเคชันที่เรียกWinMergeว่าคุณสามารถติดตั้งบน Windows เพื่อแยกไฟล์ต่าง ๆ ได้ มันจะใช้เวลาสักครู่ไม่ว่าคุณจะเลือกใช้เครื่องมือใด
Kolob Canyon

คำตอบ:


4

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


ตอนนี้เป็นความคิดที่ดี! แต่ถ้าคุณต้องการประวัติศาสตร์ที่สมบูรณ์แบบมันขึ้นอยู่กับการรู้ว่ามีการสร้างไดเรกทอรีมากกว่า 700+ แห่งอย่างไร
Shevek

@Shevek มีความแม่นยำมากขึ้นลำดับที่ไฟล์ได้รับการแก้ไขและแม้ว่าคุณจะได้รับการเปลี่ยนแปลงล่าสุดเท่านั้น แต่เฮ้ทุบตีสามารถทำทุกอย่าง แต่หน้าต่าง ...
Tobias Kienzler

คุณได้พิจารณาแล้วว่าต้องใช้เวลานานเท่าใดกว่า 700+ การรวมกันของทรีไฟล์ที่มี 200+ ไฟล์? ฉันประจบประแจงแม้กระทั่งพยายามจินตนาการ ...
Evan Plaice

การผสาน @Evan git นั้นค่อนข้างชาญฉลาดที่จะจดจำการรวมก่อนหน้าของคุณและพยายามลดการโต้ตอบ แต่ใช่มันคงเป็นงาน Sisyphean ฉันเดา
Tobias Kienzler

1

คุณสามารถเริ่มต้นด้วยการใช้โปรแกรมเช่นdupehunterเพื่อลดโครงสร้างเป็นไฟล์ที่แตกต่างกันจริงๆ (แน่นอนคุณควรเริ่มจากโครงสร้างโฟลเดอร์ที่คัดลอก!) จากนั้นWinMergeอย่างน้อยสามารถเปรียบเทียบสองโฟลเดอร์


jip โดยใช้เครื่องมือเช่น dupehunter กำลังช่วย ดูเหมือนว่าไฟล์ส่วนใหญ่จะเหมือนกันทั่วทั้งโฟลเดอร์ แต่ฉันยังต้องการวิธีดูความแตกต่างที่อยู่ภายในไฟล์ที่ไม่ซ้ำกันอย่างแน่นอนไฟล์ 2000+ การทำสิ่งนี้ทีละคนจะใช้เวลาเป็นปี
ดาเนียลบริงค์

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

@OncelUmutTURER ดีใจที่ได้ยิน :) ไม่มีอะไรเต้น OpenSource
Tobias Kienzler

1

สิ่งที่คุณกำลังมองหาคือแอปพลิเคชันการซิงโครไนซ์ไฟล์ ...

DirSync Proเป็นรายการโปรดส่วนตัวของฉัน

หมายเหตุ: ฉันรู้ว่า 'โปร' ทำให้ดูเหมือนว่าตลาดการค้าที่เป็นกรรมสิทธิ์โดยเฉลี่ย แต่ไม่ปล่อยให้มันหลอกคุณ DirSync Pro เป็นฟรีโอเพ่นซอร์สและข้ามแพลตฟอร์ม

:: นิ้วสั่นคลอน :: และฉันหวังว่าคุณจะเรียนรู้บทเรียนของคุณจากน้ำท่วมนี้) รับไฟล์เหล่านั้นภายใต้การควบคุมการแก้ไขและสาขาหากคุณต้องการการพัฒนาหลายรุ่น


โซลูชันของคุณไม่เพียงแค่คุณรู้ตรงกันหรือไม่ ฉันหมายความว่านี่จะไม่เขียนทับการแก้ไขทั้งหมดด้วยรุ่นเดียวหรือไม่
Tobias Kienzler

@Tobias ใช่ถ้าคุณเลือกที่จะเขียนทับ ฉันรู้ว่าคุณจะไปกับเรื่องนี้ ... ทำไมไม่เสนอวิธีแก้ปัญหาที่สามารถติดตามการเปลี่ยนแปลงเมื่อเวลาผ่านไป? เพราะนั่นไม่ใช่สิ่งที่เขาถาม "เปรียบเทียบโฟลเดอร์และไฟล์ทั้งหมดและระบุไฟล์เดียวกันทุกรุ่น" โซลูชันของฉันจะระบุเวอร์ชันที่แตกต่างกันตามคุณลักษณะของไฟล์เนื่องจากขั้นตอนก่อนการซิงโครไนซ์คือการเปรียบเทียบโดยรวม เขาไปจากที่ไหนมีการตัดสินใจของเขา โดยส่วนตัวแล้วฉันจะรวมทุกอย่างให้เป็นเวอร์ชั่นล่าสุดและเริ่มต้นประวัติศาสตร์ใหม่จากที่นั่น แต่ฉันไม่ใช่ op
Evan Plaice

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

@Daniel ooooh เมื่อคุณพูดว่า "ไฟล์ asp คลาสสิกชุดเดียวกัน 200+ ไฟล์" คุณหมายถึงโฟลเดอร์ 700+ ประกอบด้วยไฟล์ 200+ ชุดเพียงไม่กี่ชุดเท่านั้น ดังนั้นสิ่งที่คุณพูดคือมี 200 * 700 ~ = 140k ไฟล์? อุ๊ย ... ดีเซอร์ซิงก์จะให้คุณเริ่มทำการเปรียบเทียบโฟลเดอร์ 1-1 เพื่อดูความแตกต่าง แต่คุณจะต้องทำมากกว่า 700 ครั้ง
Evan Plaice

1
@Daniel สิ่งที่คุณต้องการคือสคริปต์ที่รวบรวมข้อมูลไดเรกทอรีมากกว่า 700 รายการและแบบเรียงต่อไฟล์และเปรียบเทียบแบบทีละบรรทัดเพื่อดึงข้อมูลเฉพาะ จากนั้นเมื่อเปรียบเทียบรุ่นที่สัมพันธ์กับวันที่แก้ไขล่าสุดในแอตทริบิวต์ของไฟล์ให้เรียงตามลำดับเวลา จากนั้นคุณสามารถป้อนเพียงเดลตา (ต่าง) ของแต่ละเวอร์ชันถัดไปลงในที่เก็บเพื่อสร้างประวัติ ปัญหาเดียวคือไม่มีวิธีรับประกันได้ว่าคุณจะสามารถใช้งานฟังก์ชันการทำงานของเวอร์ชันเดิมได้ นั่นเป็นปัญหาหรือไม่?
Evan Plaice

0

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

หากคุณต้องการบางสิ่งบางอย่างที่กึ่งแจ้งอย่างชาญฉลาดว่าไฟล์xในโฟลเดอร์cดูเหมือนว่าจะขึ้นอยู่กับไฟล์เดียวกันในโฟลเดอร์bซึ่งจะขึ้นอยู่กับไฟล์เดียวกันในโฟลเดอร์a (เช่นซอฟต์แวร์พยายามที่จะอนุมาน 'ต้นไม้ของ การแก้ไข 'สำหรับแต่ละไฟล์) จากนั้นฉันคิดว่ามันค่อนข้างเหนียว


ฉันไม่มีปัญหาในการเขียนแอปด้วยตัวเอง แต่จะไม่คิดค้นล้อใหม่อีกต่อไปถ้ามีคนอื่นเขียนไว้แล้ว
Daniel Brink

0

สิ่งที่คุณกำลังมองหาคือการควบคุมแหล่งที่มา เราใช้ Tortoise SVN ที่นี่ที่ บริษัท ของฉันและรักมัน หากคุณติดตั้ง "Tortoise SVN" สำหรับ windows คุณควรทำตามขั้นตอนดังกล่าว เพียงสร้างที่เก็บและนำเข้าโฟลเดอร์ที่เก่าที่สุด หลังจากรหัสฐานอยู่ใน SVN ให้ดึง "Working Copy" เขียนทับไฟล์ในโฟลเดอร์นั้นด้วยโฟลเดอร์ที่เก่าแก่ที่สุดถัดไปยอมรับกระทำซ้ำ ฉันรู้ว่านี่ยังคงน่ากลัวอยู่กับโฟลเดอร์มากกว่า 700+ โฟลเดอร์ (หรือรุ่นที่แก้ไข) แต่ไม่มีอะไรมากที่คุณสามารถทำได้เมื่อใช้การควบคุมแหล่งที่มาในช่วงปลายเกม หลังจากคุณมีทุกอย่างใน SVN แล้วคุณจะได้รับประวัติเต็มสำหรับทุกไฟล์แยกกัน


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