Git
Creer module importable via pip
Architecture :
README.md
LICENCE.txt
setup.py
from setuptools import setup
setup(
name='pkg name',
version='1.0',
description='a pip-installable pkg',
license='APGL',
packages=['pkgname'],
author='Pierre',
author_email='',
keywords=[],
url='framagit'
)
requirements.txt
.gitignore
*~
.#*
#*
#*#
*__pycache__*
*.pyc
docs/build/*
env_module
env_module/*
.gitlab-ci.yml
module_dir/
Fichier requirements.txt des autres projets
git+ssh//git@framagit.org/path:id_commit
git+https://framagit.org/path:branch_name
git+https://framagit.org/path:tag
Créer un nouveau repo à partir de sous-dossiers
Attention : travailler sur une copie ! (même si tout doit être à jour avant)
Attention 2 : il manque peut être des git add/commit : ne pas forcer et les faire !
L’objectif est de créer un sous-module à partir de ./lib/one, lib/two, lib/three.
* Il est donc conseillé de faire un $ cd .. && git clone ... new_mod && cd new_mod
* ... et bien évidemment basculer sur la branche qui nous intéresse :$ git checkout -b test <name of remote>/test
* On va commencer par sélectionner les dossiers à déplacer [1] :
$ git filter-branch --index-filter 'git rm --cached -qr --ignore-unmatch -- . && git reset -q $GIT_COMMIT -- lib/one lib/two lib/three' --prune-empty -- --all
Ici, l’historique des fichiers est conservés ; s’ils ont été déplacés avant, on doit ajouter leurs anciens chemins (sinon, ceux-ci ne seront pas pris en compte dans l’historique !).
* Il faut ensuite déplacer les fichiers avec (par exemple), pour conserver l’historique
$ git mv ./lib/one ./one # etc.
$ rmdir ./lib
* Ajoutons le nouveau repo distant, vide :
$ git remote add newrepo git@framagit.org:...
* Supprimons la branche "main" actuelle (qui est une copie de la branche main de l’origine) et recréeons la pour être la future main du nouveau repo :
$ git branch -d main && git checkout -b main
* Poussons les modifications :
$ git push -u newrepo main
* Retournons dans l’ancien repo et créons le nouveau sous-module :
$ cd ../old_repo
$ mkdir lib/external && cd lib/external
$ git submodule add git@framagit.org:...
$ git submodule update --recursive --init
$ git submodule update --recursive --remote
* Et nettoyons, committons, bref, ayons un truc propre ^^
$ rm -r lib/one lib/two lib/three
$ git commit -m "clean old"
* Une fois cela fait, il restera bien évidemment à mettre à jour les différents chemins des import
Merger 2 repos
cd repo2
git checkout master
git remote add r1remote **url-of-repo1**
git fetch r1remote
git merge r1remote/master --allow-unrelated-histories
git remote rm r1remote