Как создать несколько папок из команды git worktree? - PullRequest
0 голосов
/ 10 июня 2019

Это мой файл данных, который содержит CommitId:

CommitId
d38f7b334856ed4007fb3ec0f8a5f7499ee2f2b8
d38f7b334856ed4007fb3ec0f8a5f7499ee2f2b8
d38f7b334856ed4007fb3ec0f8a5f7499ee2f2b8
4bb968a47ce00279d6051df95bd782650700179e
c3d7ec38417ecff03d1cd3be0163e6ce07578eb3
00568c9886e739d6b5dd61b4a4326d598552fb6f
00568c9886e739d6b5dd61b4a4326d598552fb6f
00568c9886e739d6b5dd61b4a4326d598552fb6f
00568c9886e739d6b5dd61b4a4326d598552fb6f
6e062098453febbfb0169cd0af56f70f2e3fc77f
63f658918c2f4b851b0d0fffbffab4df0cfe13ca

Мне нужно проверить каждый коммит и скопировать версию кода в другой каталог, поэтому для этого примера мне нужно 11 версий кода в каждомкаталог так 11 каталог с разными именами

Я попробовал этот пример кода:

import os
from distutils.dir_util import copy_tree
path1='C:/Users/AQ42770/Desktop/RefactoringMiner/bin/Android-ContactPicker'
os.chdir(path1)

commande1='git worktree add C:/Users/AQ42770/Documents/commit d38f7b334856ed4007fb3ec0f8a5f7499ee2f2b8' 
os.system(commande1)

commande2='git worktree add C:/Users/AQ42770/Documents/commit1 
4bb968a47ce00279d6051df95bd782650700179e'
os.system(commande2) 

Но это не практично, потому что у меня есть много коммитов для этого примера У меня есть 11 коммитов для других у меня есть100+ коммитов. Так что я попробовал этот код, но он ничего не возвращает:

n=1
list=["95fe00030ad97c998cd0b1b7df030dcda0db7baa","47b91018e3cb45ee0f7c3135488855554ad6617d"]
path="C:/Users/AQ42770/Documents/commit"
for n in range(0,2):
   t=path+str(n)
   os.system('git worktree add t list[n]')

PS: я поместил коммиты в список, чтобы сначала протестировать, затем я прочитаю с фрейма данных

1 Ответ

0 голосов
/ 11 июня 2019

Предположим, что файл данных C:/Users/AQ42770/Desktop/mydata.txt.

import os
import re

wortreebase = 'C:/Users/AQ42770/Documents/'
mydata = 'C:/Users/AQ42770/Desktop/mydata.txt'
gitdir = 'C:/Users/AQ42770/Desktop/RefactoringMiner/bin/Android-ContactPicker/.git'

# find all commits
with open(mydata) as f:
    commits = re.findall(r'[0-9a-f]{40}', f.read())

for i, commit in enumerate(commits):
    # name the worktree
    worktree = wortreebase + '%s_%s' % (i, commit))
    # create the worktree
    cmd = 'git --git-dir=%s worktree add %s %s' % (gitdir, worktree, commit)
    os.system(cmd)
...