ย้ายโค้ดไปยัง Azure DevOps Repo จาก TFS โดยไม่สูญเสียประวัติ TFS

ในบริษัทของเรา เราเป็นคนแรกที่พยายามทำเช่นนี้

เรากำลังพยายามรับโค้ดจาก TFS ไปยัง Azure DevOps

ด้านล่างนี้เป็นรายละเอียด TFS

TFS Server: companyTFS

TFS Project Collection: TechTeam. 

TFS Project name: Main.

TFS Branch : Dev

ตอนนี้ฉันกำลังพยายามรับโค้ดจาก TFS ไปยัง Azure DevOps เราอาจคัดลอกโค้ดจากโฟลเดอร์ TFS ไปยังโฟลเดอร์ Azure DevOps ได้ แต่เราไม่ต้องการสูญเสียประวัติ TFS

ตามที่อธิบายไว้ด้านล่าง ฉันติดตั้ง Chocolatey และติดตั้ง gittfs ด้วย

https://blog.rsuter.com/migrate-a-tfs-repository-to-a-vsts-git-repository

เมื่อฉันให้คำสั่งด้านล่าง

git tfs clone http://companyTFS:8080/TechTeam/Main $/Main/Dev/Registration/FeeDetails . –ignore-branches –debug

ฉันได้รับข้อยกเว้นด้านล่าง

TF31002: Unable to connect to this Team Foundation Server: http://companyTFS:8080/TechTeam/Main.
Team Foundation Server Url: http://companyTFS:8080/TechTeam/Main.

Possible reasons for failure include:
- The name, port number, or protocol for the Team Foundation Server is incorrect.
- The Team Foundation Server is offline.
- The password has expired or is incorrect.

Technical information (for administrator):
The remote server returned an error: (404) Not Found.
The remote server returned an error: (404) Not Found.

ฉันยังลองสิ่งนี้แต่ไม่ได้ผล

https://github.com/microsoft/azure-repos-vscode/issues/320#issuecomment-335573266

ฉันกำลังพยายามค้นหาว่าเซิร์ฟเวอร์ TFS ของฉันสามารถจับมือกับส่วนประกอบภายนอกได้หรือไม่

ฉันจะดีใจถ้ามีคนบอกฉันว่าฉันทำอะไรผิด


person Ziggler    schedule 06.07.2020    source แหล่งที่มา
comment
ฉันไม่เข้าใจว่าทำไมจึงมี -1 และทำไมจึงแนะนำให้ปิด คนที่แนะนำให้ปิดจะรู้คำตอบหรือไม่หรือต้องการข้อมูลเพิ่มเติมหรือไม่ สาเหตุคืออะไร?   -  person Ziggler    schedule 07.07.2020
comment
ฉันไม่ได้โหวตหรือโหวตเพื่อปิดคำถาม ข้อความแสดงข้อผิดพลาดแจ้งให้คุณทราบว่าเซิร์ฟเวอร์ TFS ส่งคืนการตอบสนอง 404 Not Found ดูเหมือนว่าคุณมี URL ผิด   -  person Greg Burghardt    schedule 07.07.2020
comment
ขอบคุณเกร็ก ฉันพบวิธีแก้ปัญหา เพียงทดสอบก่อนที่ฉันจะโพสต์โซลูชัน   -  person Ziggler    schedule 07.07.2020
comment
อาจลองทิ้งส่วน /main ของ URL ออก   -  person Greg Burghardt    schedule 07.07.2020
comment
@GregBurghardt .. ใกล้กับนั้น ...   -  person Ziggler    schedule 07.07.2020


คำตอบ (1)


ในที่สุดหลังจากใช้เวลาเกือบ 4 วัน ฉันสามารถย้ายโค้ดจาก TFS ไปยัง Azure DevOps พร้อมกับประวัติได้ โปรดดูด้านล่างทุกขั้นตอนที่ฉันทำ

ติดตั้ง Chocolatey:

ก่อนอื่นเราต้องติดตั้ง Chocolatey เพื่อให้เรื่องง่ายขึ้น ฉันได้สร้างไฟล์สองไฟล์ไว้ด้านล่างในโฟลเดอร์เดียวกัน ชื่อไฟล์ : installChocolatey.cmd

เนื้อหา:

@echo off
SET DIR=%~dp0%

%systemroot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& '%DIR%install.ps1' %*"
SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

ชื่อไฟล์: install.ps1

เนื้อหา: คัดลอกและวางเนื้อหาจากที่นี่ https://chocolatey.org/install.ps1

เปิดพร้อมท์คำสั่งในโหมดผู้ดูแลระบบแล้วรัน installChocolatey.cmd เพื่อติดตั้ง Chocolatey

ใน command prompt ให้ choco -v เพื่อดูว่าติดตั้งถูกต้องหรือไม่

ติดตั้ง git tfs:

ต่อไป เราต้องติดตั้งเครื่องมือ git tfs เพื่อดำเนินการตามคำสั่งด้านล่างใน command prompt และทำตามคำแนะนำ

choco install gittfs

ในกรณีของฉัน ติดตั้งไว้ที่ C:\Tools\gittfs

เปิดตัวแปรสภาพแวดล้อมและตรวจสอบให้แน่ใจว่าคุณเพิ่มด้านล่าง (ในกรณีของฉัน) ลงในตัวแปร PATH

C:\เครื่องมือ\gittfs

ใน command prompt ให้ git tfs -version เพื่อดูว่าติดตั้งเวอร์ชันใด

ย้ายโค้ดจาก TFS ไปยัง Azure DevOps:

Azure DevOps Project Name: Experiment
Azure DevOps Repo Name: MyRepo
Azure DevOps Repo Name: Master and DEV

ก่อนอื่น ฉันโคลน repo นี้ไปยังในพื้นที่ของฉัน ตรวจสอบให้แน่ใจว่าฉันมีสาขาระยะไกลทั้งหมดในพื้นที่ของฉัน

ในพื้นที่ของฉันได้สร้างชื่อสาขาใหม่ชื่อ TestBranch และผลักมันไปที่ระยะไกล ตอนนี้ MyRepo มี 3 สาขาและ TestBranch เป็นสาขาทำงานในพื้นที่ของฉัน

ในพร้อมท์คำสั่ง ฉันไปที่โฟลเดอร์ที่ฉันแมป repo Azure DevOps ฉันให้คำสั่งด้านล่างเพื่อรับรหัส TFS พร้อมประวัติ

git tfs clone http://companyTFS:8080/TechTeam $/Main/Dev/Registration/FeeDetails . –debug

การดำเนินการนี้จะใช้เวลาสักครู่และหลังจากนั้นคุณจะเห็นว่ามีการดาวน์โหลดรหัส TFS ลงในโฟลเดอร์นั้น

ในพรอมต์คำสั่งเดียวกัน

ให้คำสั่งด้านล่างเพื่อให้แน่ใจว่าสาขาการทำงานของคุณคืออะไร

git branch 

คำสั่งด้านล่างจะสร้างสาขา

git checkout -b TempBranch

สำหรับคำสั่งด้านล่างให้รับ url ของ repo Azure DevOps เป้าหมายของคุณ

คำสั่งด้านล่างจะตั้งค่า Azure DevOps Repo ระยะไกลของคุณเป็น Repo ที่คุณต้องการกำหนดเป้าหมาย

git remote add origin https://[email protected]/xxx/Experiment/_git/MyRepo

ด้านล่างนี้จะสร้างสาขาใหม่ที่เรียกว่า TempBranch ใน repo เป้าหมายของคุณใน ADO ที่นี่ในโครงการการทดลองและ repo ของ MyRepo

git push --set-upstream origin TempBranch

ตอนนี้โค้ดและประวัติทั้งหมดของคุณจาก TFS ได้มาถึง Azure DevOps ใน Repo ของคุณแล้ว คุณสามารถใช้คุณสมบัติคำขอ PULL เพื่อรวมเข้ากับสาขาอื่นและอื่นๆ ได้

ตอนนี้สมมติว่าคุณต้องการให้โครงสร้างโค้ด Azure DevOps ของคุณแตกต่างออกไป

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

ให้คำสั่งด้านล่างทีละรายการ

git add .

หากต้องการดูการเปลี่ยนแปลงทั้งหมดของคุณให้คำสั่งด้านล่าง

git status

เพื่อยืนยันการเปลี่ยนแปลงทั้งหมดของคุณในท้องถิ่น

git commit -m "[commit message goes here]"

คำสั่งเพื่อพุชการเปลี่ยนแปลงจาก git push ในเครื่องไปเป็นระยะไกล

โค้ดจะอยู่ในโปรเจ็กต์การทดลอง MyRepo repo TempBranch สาขา

person Ziggler    schedule 06.07.2020
comment
ฉันจะรอ 2 วันและดูความคิดเห็นใด ๆ แล้วจะยอมรับคำตอบ - person Ziggler; 07.07.2020
comment
ยอดเยี่ยม! คุณสามารถยอมรับคำตอบของคุณได้ ในกรณีนี้ ผู้อื่นสามารถค้นหาวิธีแก้ปัญหาที่เป็นประโยชน์ได้โดยตรง - person Kevin Lu-MSFT; 13.07.2020