[PYTHON] Un outil de ligne de commande qui place .gitkeep dans un répertoire vide

Lorsque vous passez de Subversion à Git, vous devez vous rappeler d'ajouter un répertoire vide à votre référentiel. Git ne contrôle pas la version des répertoires vides, vous devrez donc y placer des fichiers. Certains fichiers sont .gitignoreetempty, mais j'essaye personnellement de mettre `` `.gitkeep dans un style Rails.

En gros, vous pouvez exécuter find. -Type d -name .git -prune -o -type d -empty -exec touch {} /. Gitkeep ; . L'outil que j'ai créé cette fois-ci est facultatif, comme la fonction pour vérifier quel répertoire est vide avant de placer .gitkeep``` et la possibilité de spécifier la partie .gitkeep``` de cette commande. C'est une fonction supplémentaire.

Comment utiliser

Liste des répertoires vides:

cd git-repo
git-empty-dir list

Placez `` .gitkeep``` dans un répertoire vide:

cd git-repo
git-empty-dir keep

Il existe d'autres options telles que --dir et `` --keeper.

$ git-empty-dir keep --help
usage: git-empty-dir keep [-h] [--dir DIR] [--keeper KEEPER]

optional arguments:
  -h, --help       show this help message and exit
  --dir DIR        path to git directory
  --keeper KEEPER  dummy file name. Default is ".gitkeep"

git-empry-dir.py

git-empry-dir.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import argparse
import commands
import sys

def list(args):
	command = "find %(dir)s -type d -name .git -prune -o -type d -empty" % vars(args)
	result = commands.getstatusoutput(command)
	print result[1]
	if result[0] > 0:
		sys.exit(1)

def keep(args):
	command = "find %(dir)s -type d -name .git -prune -o -type d -empty -exec touch {}/%(keeper)s \;" % vars(args)
	result = commands.getstatusoutput(command)
	print result[1]
	if result[0] > 0:
		sys.exit(1)

def check_git_dir(dir):
	git_dir = dir + '/.git'
	if os.path.isdir(git_dir) == False or os.path.islink(git_dir) == True:
		print 'Not found .git in ' + dir
		sys.exit(1)

def main():
	parser = argparse.ArgumentParser(description='Add .gitkeep to empty directories.')

	subparsers = parser.add_subparsers(title='commands', metavar='command')

	parser_list = subparsers.add_parser('list', help='list candidates')
	parser_list.set_defaults(func=list)
	parser_list.add_argument('--dir', type=str, help='path to git directory', default=os.getcwd())

	parser_keep = subparsers.add_parser('keep', help='')
	parser_keep.set_defaults(func=keep)
	parser_keep.add_argument('--dir', type=str, help='path to git directory', default=os.getcwd())
	parser_keep.add_argument('--keeper', type=str, help='dummy file name. Default is ".gitkeep"', default='.gitkeep')

	args = parser.parse_args()
	args.dir = args.dir.rstrip('/')
	
	check_git_dir(args.dir)
	
	args.func(args)

if __name__ == "__main__":
	main()

L'argparse de Python est utile!

[2012-04-05 11:55] Je l'ai accidentellement gardé en l'absence de .git, ce qui était désastreux, alors j'ai vérifié .git.

Recommended Posts

Un outil de ligne de commande qui place .gitkeep dans un répertoire vide
Mémo de procédure pour mettre l'interface de ligne de commande AWS dans CentOS6
Notes J'ai recherché la création d'outils de ligne de commande en Python
Comment recevoir des arguments de ligne de commande en Python
Comment créer un article à partir de la ligne de commande
Comment créer un outil CLI interactif avec Golang
J'ai écrit un script de création automatique de répertoire vide en Python
Comment spécifier des arguments de ligne de commande lors du débogage avec PyCharm
Comment obtenir une chaîne à partir d'un argument de ligne de commande en python
Un moyen simple de réexécuter une commande précédemment exécutée dans ipython
Créez un outil de ligne de commande pour convertir des dollars en yens en utilisant Python
Outil de ligne de commande Chainer ChainerCMD
Dans la commande python, python pointe vers python3.8
Essayez de mettre des données dans MongoDB
Une alternative à `pause` en Python
Créez un tableau vide avec Numpy pour ajouter des lignes pour chaque boucle
J'ai créé un outil CLI pour convertir les images de chaque répertoire en PDF
Je souhaite laisser une commande arbitraire dans l'historique des commandes de Shell
Épingler le répertoire actuel au répertoire de script en Python
[Itertools.permutations] Comment créer une séquence en Python
PUT gzip directement dans S3 en Python
Pour gagner avec des devises, partie 4 ~ LINE Notification Edition
Décomposer les arguments de commande en une seule ligne en Python
[V11 ~] Un mémorandum à mettre dans Misskey
Outil de déplacement de répertoire vers le package Python (pycd)
J'ai créé une commande appdo pour exécuter des commandes dans le contexte de l'application
Créez une application de ligne de commande en Python pour comprendre les actions setup.py, argparse et GitHub
Comment gérer les arguments lors de l'implémentation d'un script Python en tant qu'outil de ligne de commande