ย้าย SVN ไป GIT มันต้องระวังอะไรบ้างนะ

จากช่วงปลายที่ 2020 ที่ผ่านมาทุกคนคงจะกลับบ้าน หรืออยู่บ้านปลอดเชื้อกันนะครับ ส่วนผมแก้ Code ข้ามปีครับ สำหรับการย้าย Code จาก SVN ไป GIT ใน Project .NET ครับ โดยมีข้อที่ต้องสังเกตุ ดังนี้

  • Requirement ของการย้าย Code ตอนนี้ยังเป็น Parallel อยู่ครับ
    • Build ของปี 2021 เป็นต้นไป อันนี้ใช้ Code จาก GIT เลยครับ
    • แต่ถ้าเป็นงาน MA ที่ลูกค้ายังใช้งานเวอร์ชันเก่าๆ อย่างปี 2018 อันนี้ยังคงใช้งาน SVN เพื่อดึง Code มาตรวจสอบเคส และทำ Hot Fixed ครับ ถ้าจำเป็น
  • ทำความสะอาด Repo บน SVN ใช้เรียบร้อยก่อน
    • Project/Code เก่าๆ ตำนานที่เป็นอดีต และไม่ถูกเรียกใช้งาน เอามันออกไปซะ จะได้ไม่ลำบากกับคนรุ่นหลังครับ แถมตอน Build จะได้ไปเปลืองเนื้อที่ด้วยครับ
    • ไฟล์ .exe .dll เอาออกเถอะครับ ย้ายมันไประบบ Dependency managers จัดการเถอะครับ จุดประสงค์ของ Git/SVN เก็บอะไรที่มัน Diff ได้ พอเอาไฟล์พวกนี้เข้าไปตัว Log มันจะโตเกินไปครับ สำหรับ Dependency managers
      • .NET เป็นตัว NuGet ครับ และโปรแกรม NuGet Package Explorer ที่ช่วยจัดการ Pack ไฟล์ .exe / .dll เพื่อขึ้น Server คร้บ ซึ่งตัว Server ที่ผมใช้จัดเก็บ NuGet คือ Nexus ครับ
      • เนื่องจากงานผมยังไม่มีส่วนของ Front-End เพราะ แยก Repo ไว้บน Git ตั้งแต่แรกเลยไม่มีคำแนะนำนะครับ
    • ไฟล์เอกสาร Word / Excel / Crystal Report ที่เป็น Template ต่างๆ อันนี้ผมปล่อยไว้ใน SVN อยู่ครับ แต่มองตัว Document Management อย่าง Alfresco เข้ามาช่วยจัดการต่อไปครับ
  • รูปแบบการย้าย Code เอา Log หรือ ป่าว
    • ไม่เอา Log อันนี้ง่ายเลยครับ Get Code จาก SVN มาในคอมเรา แล้ว Clean ให้สะอาด จากนั้นก็ Commit และ Push ขึ้นไปครับ
    • เอา Log อันนี้ต้องเตรียม Script เพื่อย้ายครับ เดวถ้าลองไปหลายๆ Project จนนิ่งแล้ว ผมจะเอามาแชร์อีกทีครับ
    • สำหรับผมเอา Log และย้ายมาเฉพาะใน Trunk ของ SVN เท่านั้นครับ
  • หลังจากย้ายเสร็จแล้ว ผลกระทบที่ตามเป็นพวก Script ที่ทำ Automate Build / Test ไว้ครับ อันนี้ต้องลงทุนปรับแก้ตามด้วยครับ เพราะ
    • ตอนนี้ Project เราเป็นลูกครึ่งครับ ส่วนใหญ่อยู่บน Git และบางส่วนยังคงอยู่บน SVN
    • แก้ไข Path ต่างๆในเครื่อง Build ครับ เนื่องจาก Path เดิมใช้สำหรับ SVN ครับ
    • หลังจากนั้นปรับ Script Build ครับ และทดสอบครับ

ปัญหา และการปรับแก้ไข

Started by user admin
hudson.plugins.git.GitException: Command "git.exe fetch --tags --force --progress --prune -- origin +refs/heads/${BRANCH_ON_GIT}:refs/remotes/origin/${BRANCH_ON_GIT}" returned status code 128:
stdout: 
stderr: fatal: Couldn't find remote ref refs/heads/${BRANCH_ON_GIT}
	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2450)
	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:2051)
	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$500(CliGitAPIImpl.java:84)
	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:573)
	at jenkins.plugins.git.GitSCMFileSystem$BuilderImpl.build(GitSCMFileSystem.java:365)
	at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:197)
	at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:173)
	at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:115)
	at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:69)
	at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:309)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE

Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.