[Git] patch maken van repos1 en apply'en op repos2

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • rednek
  • Registratie: Juli 1999
  • Laatst online: 01-09 17:44
Het hele probleem zit hem in dat bij de een andere basis structuur hebben.

Voorbeeld:

van repos A. wil ik een alle veranderingen in de
- directory "website/script/lib" verzamelen.
nu wil ik die veranderingen toepassen op repos B.
Maar die heeft de structuur
- directory "src/lib"

is dit mogelijk en hoe ga ik dit doen?

Acties:
  • 0 Henk 'm!

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 22:44

Freee!!

Trotse papa van Toon en Len!

Aannemende dat je het verzamelen en toepassen al beheerst, is het verder een eenvoudige search/replace als tussenstap.

[ Voor 6% gewijzigd door Freee!! op 14-02-2015 22:05 ]

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


Acties:
  • 0 Henk 'm!

  • rednek
  • Registratie: Juli 1999
  • Laatst online: 01-09 17:44
Sorrie, ik snap niet helemaal wat je bedoelt?

Ik heb een lib die in project A in een bepaalde dir structuur zit. Vervolgens heb ik allemaal aanpassingen gedaan aan de lib en die aanpassingen wil ik doorvoeren met de commit berichten op mijn repos van de lib zelf maar de root dir van de lib in de project A is niet het zelfde als mijn lib repos.

A;s ik een patch aanmaak en die apply op mijn rip repos gaat toch alles kapot?

Acties:
  • 0 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Nu online
Omdat een patch gewoon een tekstbestand is, kan je deze na genereren aanpassen aan de nieuwe directory structuur.

Overigens zal het echt niet snel kapot gaan op een manier die niet makkelijk terug te draaien is, dus je kan gewoon experimenteren.

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Acties:
  • 0 Henk 'm!

  • Arzie
  • Registratie: Juni 1999
  • Laatst online: 19:36
Het kan ook zonder handmatig de patch file(s) aan te passen, Git heeft hier zelf ondersteuning voor.

Ga eerst naar repository A en genereer een lijst patches (in dit voorbeeld alleen de laatste commit, maar je bent natuurlijk vrij om zelf een range te specificeren):
code:
1
git format-patch HEAD^

Dit geeft een file met een naam als '0001-patched-lib-src.patch'. In die file worden paths uit repository A gebruikt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ cat ../0001-added-lib-src.patch 
From c0281a10879d8bd955b8ca7e00a2e4e2a13bfdcb Mon Sep 17 00:00:00 2001
From: Je Moeder <je@moeder.org>
Date: Sun, 15 Feb 2015 08:48:22 +0100
Subject: [PATCH] added lib src

---
 website/script/lib/source.c | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 website/script/lib/source.c

diff --git a/website/script/lib/source.c b/website/script/lib/source.c
new file mode 100644
index 0000000..f4c6dce
--- /dev/null
+++ b/website/script/lib/source.c
@@ -0,0 +1 @@
+sources
-- 
2.3.0


Ga dan naar repository B en apply de patches, waarbij je met -p een stuk van het input path kunt strippen (je geeft het aantal leading slashes op, in dit geval wil ik 4 slashes verwijderen) en met --directory een nieuwe prefix voor het output path kunt opgeven:
code:
1
git am -p4 --directory=src/lib < 0001-patched-lib-src.patch

[ Voor 35% gewijzigd door Arzie op 15-02-2015 09:04 ]


Acties:
  • 0 Henk 'm!

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 22:44

Freee!!

Trotse papa van Toon en Len!

Arzie schreef op zondag 15 februari 2015 @ 09:02:
Het kan ook zonder handmatig de patch file(s) aan te passen, Git heeft hier zelf ondersteuning voor.
Bedankt, dat wist ik nog niet (gebruik Git zelf niet).

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT

Pagina: 1