ค้นหาที่เก็บ SVN [ปิด]


155

มีซอฟต์แวร์ที่ดีที่จะให้ฉันสามารถค้นหาตัวอย่างรหัส SVN ของฉันได้หรือไม่? ฉันพบ 'FishEye' แต่ค่าใช้จ่ายอยู่ที่ 1,200 และอยู่นอกงบประมาณของฉัน


6
คุณต้องการค้นหาประวัติของธุรกรรมซื้อคืนหรือไม่? หรือแค่หัว?
swilliams

4
มี FishEye รุ่นฟรี - www.atlassian.com/starter
David d C e Freitas

1
@DavidFreitas ไม่มีตัวเลือกฟรีในขณะนี้
bahrep

มี FishEye เวอร์ชัน 10 ดอลลาร์: www.atlassian.com/software/starter/overview , @bahrep ทุกครั้งที่มีรายได้เพื่อการกุศล
David d C e Freitas

1
มีsvn log --searchตัวเลือกใหม่อาจเป็นประโยชน์สำหรับคนที่กำลังมองหาการค้นหาประวัติพื้นที่เก็บข้อมูลที่เรียบง่าย
bahrep

คำตอบ:


69

หากคุณค้นหาเฉพาะชื่อไฟล์ให้ใช้:

svn list -R file:///subversion/repository | grep filename

ของ windows:

svn list -R file:///subversion/repository | findstr filename

มิฉะนั้นเช็คเอาต์และค้นหาระบบไฟล์:

egrep -r _code_ .

3
อาจไม่ชัดเจนทั้งหมด แต่คำสั่งเหล่านี้ใช้กับวิธีการเข้าถึงเซิร์ฟเวอร์ svn ไม่ใช่เฉพาะไฟล์: (เช่น svn: และ svn + ssh: ใช้ได้เช่นกัน)
Alex Marshall

2
//, คุณจะช่วยเป็นตัวอย่างในการทำงานให้แต่ละคนได้ไหม?
Nathan Basanese

1
OP ต้องการค้นหาไฟล์ไม่ใช่แค่ชื่อไฟล์ ตัวอย่างการค้นหาระบบไฟล์ไม่เป็นประโยชน์มากนัก
ลบ

37

มีsourceforge.net/projects/svn-search

นอกจากนี้ยังมีแอปพลิเคชัน Windows โดยตรงจากบ้าน SVN ที่เรียกว่า SvnQuery ที่http://svnquery.tigris.org


1
ฉันเพิ่งดาวน์โหลดมาเอง - เวอร์ชั่น 1.2.2.0 มีให้บริการในขณะนี้ (เช่นออกจากเบต้า)
Brett Rigby

URL Source Forge ใหม่สำหรับการค้นหา SVN: svn-search.sourceforge.net
Robert Brisita

12

อัปเดตในเดือนมกราคม 2563

VisualSVN Server 4.2 รองรับการค้นหาไฟล์และโฟลเดอร์ในเว็บอินเตอร์เฟส ลองใช้คุณสมบัติใหม่ในที่เก็บเซิร์ฟเวอร์สาธิต !

ดูเวอร์ชัน 4.2 บันทึกประจำรุ่นและดาวน์โหลด VisualSVN เซิร์ฟเวอร์ 4.2.0 จากหน้าดาวน์โหลดหลัก

ป้อนคำอธิบายรูปภาพที่นี่


คำตอบเก่า

เริ่มต้นด้วยการโค่นล้ม 1.8 คุณสามารถใช้--searchตัวเลือกที่มีsvn logคำสั่ง โปรดทราบว่าคำสั่งไม่ทำการค้นหาข้อความแบบเต็มภายในที่เก็บข้อมูลจะพิจารณาข้อมูลต่อไปนี้เท่านั้น:

  • ผู้เขียน revision ( svn:authorคุณสมบัติที่ไม่มีใครสนใจ)
  • วันที่ ( svn:dateทรัพย์สินที่ไม่มีคุณสมบัติ)
  • ข้อความบันทึกการทำงาน ( svn:logคุณสมบัติที่ไม่มีการย้อนกลับ)
  • รายการเส้นทางที่เปลี่ยนแปลง (เช่นเส้นทางที่ได้รับผลกระทบจากการแก้ไขเฉพาะ)

นี่คือหน้าความช่วยเหลือเกี่ยวกับตัวเลือกการค้นหาใหม่เหล่านี้:

 If the --search option is used, log messages are displayed only if the
 provided search pattern matches any of the author, date, log message
 text (unless --quiet is used), or, if the --verbose option is also
 provided, a changed path.
 The search pattern may include "glob syntax" wildcards:
     ?      matches any single character
     *      matches a sequence of arbitrary characters
     [abc]  matches any of the characters listed inside the brackets
 If multiple --search options are provided, a log message is shown if
 it matches any of the provided search patterns. If the --search-and
 option is used, that option's argument is combined with the pattern
 from the previous --search or --search-and option, and a log message
 is shown only if it matches the combined search pattern.
 If --limit is used in combination with --search, --limit restricts the
 number of log messages searched, rather than restricting the output
 to a particular number of matching log messages.

1
วิธีนี้ใช้งานได้เร็ว แต่ไม่ควรใช้เพื่อค้นหาไฟล์ที่มีอยู่ เนื่องจากตัวเลือกการค้นหานี้แยกวิเคราะห์รายการของเส้นทางที่เปลี่ยนแปลงอย่างชัดเจนในการแก้ไขแต่ละครั้งคุณสามารถสร้างสำเนาโฟลเดอร์ (สาขาใหม่ที่สร้างขึ้นจาก trunk) ที่มีไฟล์บางไฟล์อยู่ แต่จะไม่แสดงโดยวิธีนี้
Pieter-Jan Busschaert

@ Pieter-JanBusschaert ความคิดเห็นของคุณเกี่ยวกับการใช้ svn log --search command ดูคำตอบที่อัปเดตเกี่ยวกับการค้นหาผ่าน webui ใหม่ มันไม่มีข้อ จำกัด นี้
bahrep


9
  1. สร้างgit-svnมิเรอร์ของที่เก็บนั้น
  2. ค้นหาสตริงที่เพิ่มหรือลบออกภายใน git: git log -S'my line of code'หรือเหมือนกันในgitk

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


8

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

svn list -R svn://svn > filelist.txt

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


4
ฉันควรทราบว่าในกรณีของฉันจำเป็นต้องใช้httpเป็นโปรโตคอล ( svn list -R http://repo/svn/etc)
Charles Wood

downvoted เนื่องจาก OP ต้องการค้นหาไฟล์ไม่ใช่ชื่อไฟล์ คำสั่ง svn list จะดัมพ์ชื่อไฟล์ของที่เก็บเท่านั้น
ลบ

4

ฉันชอบ TRAC - ปลั๊กอินนี้อาจมีประโยชน์สำหรับงานของคุณ: http://trac-hacks.org/wiki/RepoSearchPlugin


ดูเหมือนว่าจะมีแนวโน้ม ... แต่ไม่ใช่เรื่องง่ายที่จะติดตั้งมากเกินไปไม่สามารถยืนยันได้ว่าทำงานกับเซิร์ฟเวอร์ Trac + VisualSVN ได้หรือไม่
Kit Roed

4

เพิ่งทราบว่าFishEye (และผลิตภัณฑ์อื่น ๆ ของ Atlassian) มี Starter Editions จำนวน $ 10 ซึ่งในกรณีของ FishEye จะให้ที่เก็บ 5 แห่งและให้คุณเข้าถึงได้ถึง 10 คน เงินจะไปบริจาคเพื่อการกุศลในกรณีนี้

www.atlassian.com/starter


ไม่อีกแล้ว? ฉันไม่เห็นตัวเลือกฟรีบนหน้า
bahrep

@bahrep ฉันได้อัปเดตคำตอบแล้วตอนนี้คุณจะได้รับ $ 10 สำหรับการกุศลซึ่งเป็น "ฟรี" ที่มีประสิทธิภาพถ้าคุณคิดถึงมัน
David d C e Freitas

3

อย่างช้า ๆ อย่างเจ็บปวด (และนำมาใช้อย่างโหดร้าย) แต่การรวมกันของ svn log และ svn cat ทำงานได้ถ้าคุณกำลังค้นหาประวัติไฟล์เดียวหรือที่เก็บขนาดเล็ก:

svn log filetosearch |
    grep '^r' |
    cut -f1 -d' ' |
    xargs -i bash -c "echo '{}'; svn cat filetosearch -'{}'" 

จะส่งออกแต่ละหมายเลขการแก้ไขซึ่งไฟล์มีการเปลี่ยนแปลงและไฟล์ คุณสามารถทำการแก้ไขแต่ละครั้งเป็นไฟล์ที่แตกต่างกันได้และจากนั้น grep สำหรับการเปลี่ยนแปลง

PS การอัปโหลดจำนวนมากให้กับทุกคนที่แสดงให้ฉันเห็นวิธีการทำอย่างถูกต้อง!


3
git-svnใช้เพียงแค่ Git มีการค้นหารหัสในประวัติการกระทำ git-svnแต่คุณจะต้องดาวน์โหลดทั้งกระทำประวัติศาสตร์ที่จะใช้
วิ

2

หากคุณหมดหวังจริงๆให้ทำการถ่ายโอนข้อมูลของ repo (ดูที่ "svnadmin dump") แล้วไล่ตามมัน มันไม่สวย แต่คุณสามารถดูรอบ ๆ ผลการค้นหาเพื่อค้นหาข้อมูลเมตาที่ระบุไฟล์และการแก้ไขจากนั้นตรวจสอบเพื่อให้ดูดีขึ้น

ไม่ใช่วิธีแก้ปัญหาที่ดีอย่างแน่นอน แต่มันฟรี :) SVN ไม่มีคุณสมบัติสำหรับการค้นหาเช็คอินที่ผ่านมา (หรือแม้แต่ไฟล์บันทึกที่ผ่านมา AFAIK)


1

repos SVN จำนวนมากเป็น "เว็บไซต์ HTTP" เพียงอย่างเดียวดังนั้นคุณอาจพิจารณาดูแอพพลิเคชั่นการค้นหา "web crawling" ที่อยู่บนชั้นวางซึ่งคุณสามารถชี้ไปที่รูท SVN และจะให้ฟังก์ชันการทำงานพื้นฐาน การอัปเดตอาจเป็นกลลวงเล็กน้อยบางทีการตรวจสอบ SVN บางอย่างในแฮกเกอร์สามารถจั๊กจี้ดัชนีเพื่อยกเลิกหรือทำดัชนีการเปลี่ยนแปลงตามที่คุณไป

แค่คิดออกมาดัง ๆ


1
นี่อาจไม่ใช่ความคิดที่ดีเนื่องจากค่าใช้จ่ายที่เกี่ยวข้องจะสูงมาก นอกจากนี้ SVN- เซิร์ฟเวอร์ไม่ใช่ปกติหน้าเว็บ แต่เป็น svn repo ที่เปิดเผยผ่าน webdav
torkildr


1

ฉันเริ่มใช้เครื่องมือนี้

http://www.supose.org/wiki/supose

มันใช้งานได้ดีเพียงแค่ขาด UI ของภาพ แต่ก็รวดเร็วและบำรุงรักษาค่อนข้างดี


1
ทุกวันนี้ (สิงหาคม 2012) โครงการดูเหมือนจะหยุด ...
anol

ในเดือนธันวาคม 2012 พวกเขาเปิดตัวสิ่งใหม่ ๆ (0.7.1)
sendmoreinfo

2
ดูเหมือนว่าจะหายไป
fbstj

0

// แก้ไข: เครื่องมือถูกกล่าวถึงแล้วในคำตอบอื่นดังนั้นให้มอบเครดิตทั้งหมดให้ Kuryaki

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

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