[PYTHON] Ein Befehlszeilentool, das .gitkeep in ein leeres Verzeichnis legt

Bei der Migration von Subversion zu Git müssen Sie daran denken, Ihrem Repository ein leeres Verzeichnis hinzuzufügen. Git kontrolliert keine leeren Verzeichnisse, daher müssen Sie einige Dateien dort ablegen. Einige Dateien sind `.gitignore``` und` leer, aber ich persönlich versuche, `` `.gitkeep in einen Rails-Stil zu setzen.

Grundsätzlich können Sie `find. -Type d -name .git -prune -o -type d -empty -exec touch {} /. Gitkeep \;` ausführen. Das Tool, das ich dieses Mal erstellt habe, ist optional, z. B. die Funktion zum Überprüfen, welches Verzeichnis leer ist, bevor .gitkeep``` platziert wird, und die Möglichkeit, den `.gitkeep``` Teil dieses Befehls anzugeben. Es ist eine zusätzliche Funktion.

Wie benutzt man

Leere Verzeichnisse auflisten:

cd git-repo
git-empty-dir list

Platzieren Sie `` `.gitkeep``` in einem leeren Verzeichnis:

cd git-repo
git-empty-dir keep

Es gibt andere Optionen wie `--dir``` und` --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()

Pythons `` `argparse``` ist nützlich!

[2012-04-05 11:55] Ich habe es versehentlich in Abwesenheit von .git behalten, was katastrophal war, also habe ich nach .git gesucht.

Recommended Posts

Ein Befehlszeilentool, das .gitkeep in ein leeres Verzeichnis legt
Prozedur-Memo zum Einfügen der AWS-Befehlszeilenschnittstelle in CentOS6
Hinweise Ich habe nachgeschlagen, um Befehlszeilentools in Python zu erstellen
So empfangen Sie Befehlszeilenargumente in Python
So erstellen Sie einen Artikel über die Befehlszeile
So erstellen Sie ein interaktives CLI-Tool mit Golang
Ich habe ein Skript zur automatischen Erstellung eines leeren Verzeichnisses in Python geschrieben
So geben Sie Befehlszeilenargumente beim Debuggen mit PyCharm an
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
Eine einfache Möglichkeit, einen zuvor ausgeführten Befehl in ipython erneut auszuführen
Erstellen Sie ein Befehlszeilenprogramm, um mit Python Dollar in Yen umzurechnen
Chainer-Befehlszeilentool ChainerCMD
Im Python-Befehl zeigt Python auf Python3.8
Versuchen Sie, Daten in MongoDB abzulegen
Eine Alternative zu "Pause" in Python
Erstellen Sie mit Numpy ein leeres Array, um Zeilen für jede Schleife hinzuzufügen
Ich habe ein CLI-Tool erstellt, um Bilder in jedem Verzeichnis in PDF zu konvertieren
Ich möchte einen beliebigen Befehl im Befehlsverlauf von Shell belassen
Pin aktuelles Verzeichnis an Skriptverzeichnis in Python
[Itertools.permutations] So löschen Sie eine Sequenz in Python
PUT gzip direkt in S3 in Python
Mit Devisen gewinnen Teil 4 ~ LINE Notification Edition
Zerlegen Sie Befehlsargumente in einer Zeile in Python
[V11 ~] Ein Memorandum für Misskey
Tool zum Verschieben von Verzeichnissen in das Python-Paket (pycd)
Ich habe einen Appdo-Befehl erstellt, um Befehle im Kontext der App auszuführen
Erstellen Sie eine Befehlszeilen-App in Python, um die Aktionen setup.py, argparse und GitHub zu verstehen
Verwalten von Argumenten beim Implementieren eines Python-Skripts als Befehlszeilentool