development

ลบไฟล์แบบถาวรใน Subversion

posted on 06 Oct 2009 17:42 by pongtawat  in development

ความสามารถอันนึงที่ Subversion ไม่ยอมใส่มาก็คือการลบไฟล์หรือโฟลเดอร์ทิ้งแบบถาวร ชนิดที่ไม่เหลือประวัติไว้ใน repository เลย ดูเผินๆ เหมือนเรื่องนี้ไม่จำเป็น แต่เอาเข้าจริงจะมีกรณีที่เรา commit ไฟล์ผิดเข้าไปยัง svn และจำเป็นจริงๆ ที่จะต้องลบออกแบบไม่ให้เหลือซาก เช่นเผลอ commit ไฟล์ที่มีลิขสิทธิ์เข้าไปในโครงการ open source เป็นต้น

ทางออกทางเดียวที่มีตอนนี้ ก็คือการ dump repository ออกมา แล้ว filter ข้อมูลที่ต้องการลบออก แล้วค่อย load กลับเข้าไปใหม่อีกที

วิธีการก็ตามนี้เลย

Windows Version

svnadmin dump svn_repos > .\dump
type .\dump | svndumpfilter exclude somefolder > .\dump2
STOP SVN Services
Backup svn_repos/conf folder
Delete svn_repos folder
svnadmin create svn_repos
Restore svn_repos/conf folder
svnadmin load svn_repos < dump2

Linux Version
svnadmin dump /path/to/repos > proj.dump
cat proj.dump | svndumpfilter exclude somefolder > cleanproj.dump
STOP SVN services
BACKUP /path/to/repos/conf /path/to/repos/hooks (all custom configuration for this repository)
DELETE /path/to/repos
svnadmin create /path/to/repos
RESTORE /path/to/repos/conf /path/to/repos/hooks
svnadmin load /path/to/repos < cleanproj.dump
RESTART SVN services

 ที่มา: http://www.robgonda.com/blog/index.cfm/2005/7/10/SVN-Obliterate

Maven กับ Proxy

posted on 16 Sep 2009 10:46 by pongtawat  in development

ไม่จดทีไรเป็นอันลืมทุกที :/

 วิธีตั้ง proxy สำหรับ Apache Maven 2 ทำได้ 2 วิธี

วิธีแรก ตั้งแบบ global ไปเลย ให้ไปแก้ที่ /etc/maven2/settings.xmlจะเห็นว่ามี section ของ proxy ที่ comment ไว้ ก็ไป uncomment แล้วแก้ให้เป็นค่า proxy ของเรา หลักๆ ก็ใช้แค่นี้ก็พอ

  
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.host.net</host>
      <port>80</port>
    </proxy>

 วิธีที่สอง คือตั้งแบบของใครของมัน ก็ไปแก้ในไฟล์ ~/.m2/settings.xml ของตัวเอง ถ้าไฟล์นี้ไม่มีอยู่ก็สร้างขึ้นมา และใส่ section proxy เข้าไป ซึ่งจะได้ไฟล์ประมาณนี้

<settings>
<proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.host.net</host>
      <port>80</port>
    </proxy>
</settings> 

ที่มา: http://maven.apache.org/guides/mini/guide-proxies.html

หมายเหตุ: ใครที่ตั้ง proxy ช้าไปแล้ว จะทำให้ maven มัน black list repoistory ที่ติดต่อไม่ได้ไปแล้ว วิธีแก้ก็คือให้เพิ่ม -U เค้าไปเวลาสั่ง mvn (เช่น mvn -U build) ซึ่งจะเป็นการบอกให้ maven refresh list (เค้าเรียก snapshots) ของ repositories

edit @ 16 Sep 2009 11:01:00 by pongtawat

แก้ commit message ใน subversion

posted on 27 May 2009 11:46 by pongtawat  in development

บางครั้งเวลา commit ไฟล์ไปบน subversion แล้ว ปรากฏว่าเราเขียน commit message ผิด (เกิดบ่อยๆ เวลารีบ) เราก็สามารถแก้ไขได้ตามนี้

svn propset svn:log --revprop -r <REV> "Editted message"

โดย <REV> คือ revision ที่เราต้องการแก้ไข commit message และ "Editted message" เป็นข้อความใหม่ที่แก้ไขแล้ว

ถ้าใช้ TortoiseSVN ก็ง่ายหน่อย สั่ง Show Log แล้วก็ Edit message ได้เลย

ทีนี้บางครั้งคำสั่งนี้จะใช้ไม่ได้ โดยจะขึ้น Error ว่า

DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent

ทั้งนี้เนื่องจาก commit message ของ subversion ไม่มีการทำ revision คือแก้แล้วแก้เลย ปกติก็เลยปิดไม่ให้แก้ ถ้าเราอยากให้มันแก้ได้ด้วย ก็ต้องไปแก้ที่ repository ตามนี้

cd <myrep>/hooks
cp pre-revprop-change.tmpl pre-revprop-change
chmod a+x pre-revprop-change

เท่านี้เราก็จะแก้ไข commit message ได้แล้ว