git mimic old commit из другого хранилища - PullRequest
0 голосов
/ 23 сентября 2019

Почему

В нашей компании мы начали использовать некоторый открытый исходный код и начали его исправлять.Теперь я хочу сделать эти изменения общедоступными, поэтому я хочу применить эти изменения с правильными авторами и датами авторов (я не хочу брать кредит за работу, которую я не делал).

Вопрос

  • в company-repo, у меня есть коммит 123456789, который я хочу имитировать
  • в new-repo, я подготовил коммит (используя git add -p).

Теперь я хочу создать коммит, который имитирует коммит 123456789 из company-repo, но создать этот коммит внутри new-repo.

ideas

  • git commit -C может получить сообщение git commit от другого коммита, но это не удастся (could not lookup commit)
  • , так как это происходит в двух разных репозиториях, возможно, при создании патча?Но поскольку имена файлов изменились, это будет сложно
  • , просто проанализировать необходимую информацию и повторно использовать?Что должно быть скопировано?Временные метки, сообщение коммита, другие?

1 Ответ

0 голосов
/ 23 сентября 2019

Я не знаю, есть ли более простой способ сделать это, но я бы проанализировал author , message и timestamp и использовал бы их, когдаcommitting.

Установите эти две переменные правильно:

OLDREPO=/path/to/company-repo
HASH=123456789 # hash of commit to mimic

, затем вы можете извлечь значения из старого коммита:

DATE=$(git --git-dir=$OLDREPO/.git/ show --no-patch --no-notes --pretty='%cd' $HASH)
AUTHOR=$(git --git-dir=$OLDREPO/.git/ show --no-patch --no-notes --pretty='%an <%ae>' $HASH)
MESSAGE="$(git --git-dir=$OLDREPO/.git/ show --no-patch --no-notes --pretty='%B' $HASH)"

и использовать их для вашего нового коммита:

git commit --author="$AUTHOR" --date="$DATE" -m "$MESSAGE"

ПРИМЕЧАНИЕ: Я не установил GIT_COMMITTER_DATE специально.Технически коммит создается сегодня, а автор уже давно написал свой код.

...