Cómo instalar el servidor git en mac
Este artículo presenta cómo crear un servidor Git en una máquina Mac. La idea general es: usar gitosis para simplificar el proceso de creación y crear una cuenta llamada git en la máquina utilizada como servidor para crear un git. servidor y otros clientes El cliente accede al servidor git a través del mecanismo ssh.
1. Cree una cuenta de git
1. Cree una cuenta de git en la máquina utilizada como servidor. Podemos agregarlo a través de Preferencias del Sistema->cuentas. Aquí agrego una cuenta de administrador de git. No se requiere administrador, es solo por conveniencia.
2. Configure el acceso remoto
Cierre sesión en la cuenta actual y use la cuenta git para iniciar sesión en Preferencias del sistema->Compartir, marque Inicio de sesión remoto.
En segundo lugar, descargue e instale gitosis
1. Mac OSX Yosemite nos ha instalado Git y Python de forma predeterminada. Puede utilizar el siguiente comando para ver la información de su versión:
tu nombre:~ git$git--version
git versión 2.3.2 (Apple Git-55)
tu nombre:~ git$python--version
Python 2.7.9
2, descarga gitosis con el comando git clone git@github.com:tv42/gitosis.git
tu nombre:~ git$ git clone git@ github.com :tv42/gitosis.git
Clonación en gitosis
remoto: contando objetos: 614, listo.
remoto: comprimiendo objetos: 100% ( 183/183 ), hecho.
remoto: Total 614 (delta 434), reutilizado 594 (delta 422)
Recibiendo objetos: 100% (614/614), 93,82 KiB | 45 KiB/s, listo.
Resolviendo deltas: 100% (434/434), listo.
3. Ingrese al directorio de gitosis y use el comando sudo python setup.py install. para ejecutar el script de Python. Instale gitosis.
tu nombre:~ git$ cd gitosis/tu nombre:gitosis git$ sudo python setup.py install
ejecutando install
ejecutando bdist_egg
ejecutando egg_info
creando gitosis.egg-info
……
Usando /Library/Python/2.6/site-packages/setuptools-0.6c9-py2 .6.egg
Terminado el procesamiento de dependencias para gitosis==0.2
Tercero, haga que la clave ssh rsa sea pública
1. clave pública ssh.
Aquí la mía usa otra cuenta en la misma máquina que el cliente. Si la máquina utilizada como cliente y la máquina utilizada como servidor no son las mismas, se utiliza el mismo proceso: crear una clave pública y colocarla en el directorio /tmp del servicio. Pero en la misma máquina, podemos abrir otra terminal y usar su para cambiar a la cuenta local para operar dos cuentas al mismo tiempo.
tu nombre:~ git$ su cuenta_localContraseña:bash-3.2$ cd ~
bash-3.2$ ssh-keygen -t rsa
Generando rsa público/privado par de claves.
Ingrese el archivo en el que guardar la clave (/Users/local_account/.ssh/id_rsa):
Ingrese la frase de contraseña (vacía si no hay frase de contraseña):
Ingrese la misma frase de contraseña nuevamente: su identificación se ha guardado en /Users/local_account/.ssh/id_rsa.
Su clave pública se ha guardado en /Users/local_account/.ssh/id_rsa.pub.
bash-3.2$ cd .ssh
bash-3.2$ ls
id_rsa id_rsa.pub
bash-3.2$ cp id_rsa .pub /tmp/yourame.pub
En el comando anterior, primero cambie a la cuenta local a través de su (solo válido en la misma máquina), luego ingrese el directorio de inicio de la cuenta local y use ssh - keygen -t rsa genera id_rsa.pub y finalmente copia el archivo en ?/tmp/yourname.pub para que la cuenta de git pueda acceder a yourname.pub. El nombre se cambia aquí para facilitar la identificación de varios clientes en git.
Cuarto, use la clave pública ssh para inicializar gitosis
1 No importa qué método use (correo electrónico, USB, etc.), copie sunombre.pub al /tmp del servidor. /tu nombre. El siguiente proceso es el mismo. Inicie sesión en la cuenta git de la máquina del servidor, ingrese al directorio de gitosis mencionado anteriormente y realice las siguientes operaciones para inicializar gitosis. Una vez completada la inicialización, se creará el directorio de repositorios en el directorio principal de git.
tunombre:gitosis git$ sudo -H -u git gitosis-init < /tmp/tunombre.pub
Repositorio Git vacío inicializado en /Users/git/repositories/gitosis-admin .git/
Reinicializado el repositorio Git existente en /Users/git/repositories/gitosis-admin.git/
Aquí, el cliente será considerado como una cuenta confiable certificada, por lo que allí Habrá registros en el directorio de inicio de git y el contenido del archivo Authorized_keys es similar a yourname.pub.
tu nombre:~ git$ cd ~tu nombre:~ git$ cd .sshtunombre:.ssh git$ ls
authorized_keys
Necesitamos modificar ligeramente Authorizd_keys , ábrelo con un editor de texto y elimina la línea "command="gitosis-serve yourname",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " dentro:
tunombre:.ssh git$ open -e autorizado_keys
Luego, otorgamos permisos de escritura posteriores a la actualización para que el cliente pueda enviar cambios.
tu nombre:gitosis git$ sudo chmod 755 /Users/git/repositories//gitosis-admin.git/hooks/post-update
Contraseña:
tu nombre:.ssh git$ cd ~
tu nombre:~ git$ cd repositorios/
tu nombre:repositorios git$ ls
gitosis-admin.git p>
yourname:repositories git$
Como puede ver en el comando anterior, gitosis también se proporciona como un almacén. Podemos realizar el pago en otras cuentas y luego configurar y administrar gitosis, etc. etc. sin utilizar la cuenta git del servidor.
El último paso es modificar la ruta PATH de la cuenta de git.
tu nombre:gitosis git$ touch ~/.bashrc
tu nombre:gitosis git$ echo PATH=/usr/local/bin:/usr/local/git/bin:\$ RUTA > .bashrc
tu nombre:gitosis git$ echo export RUTA >> .bashrc
tu nombre:gitosis git$ cat .bashrc
RUTA=/usr/ local/bin:/usr/local/git/bin:$PATHexport PATH
En este punto, se completa la configuración del servidor.
Cinco, configuración del cliente
1. Regrese a la cuenta local, primero ingrese el siguiente comando en la terminal para modificar la configuración de git local:
bash- 3.2$ git config --global user.name "yourgitname"bash-3.2$ git config --global user.email "yourmail@yourcom.com"
2. 10.1.4.211 con el tuyo El nombre del servicio o la dirección del servidor bastará.
tu nombre:~ local_account$ ssh git@10.1.4.211Último inicio de sesión: lunes 7 de noviembre 13:11:38 2011 desde 10.1.4.211
3, clona el repositorio del servidor local, Lo siguiente toma gitosis-admin.git como ejemplo:
bash-3.2$ git clone git@10.1.4.211:repositories/gitosis-admin.git
Clonación en gitosis-adminremote : Contando objetos: 5, done.remote: Comprimiendo objetos: 100% (5/5), done.remote: Total 5 (delta 0), reutilizado 5 (delta 0)
Recibiendo objetos: 100% (5 /5), listo.
bash-3.2$ ls
Desktop InstallApp Sitios de música
Biblioteca de documentos Imágenes gitosis-admin
Descargas Películas Públicas
bash-3.2$ git
Como puede ver en el resultado anterior, hemos clonado con éxito el repositorio gitosis-admin del servidor localmente.
4. Administrar gitosis-admin localmente:
Ingrese al directorio gitosis-admin, verifiquemos su estructura de directorios: el archivo gitosis.conf es un archivo de configuración, que define qué usuarios tenemos. Puede modificar esta configuración en cuanto a a qué repositorios se puede acceder; keydir es donde se almacena la clave pública ssh.
bash-3.2$ cd gitosis-admin/
bash-3.2$ ls
gitosis.conf keydir
bash-3.2$ cd keydir/
bash-3.2$ ls
tunombre.pub
Solo necesitamos agregar la clave pública ssh generada por otros clientes al directorio keydir, y Configure los repositorios a los que estos usuarios pueden acceder en el archivo gitosis.conf (el nombre de usuario es el mismo que el nombre de la clave pública sh colocado en keydir, razón por la cual tenemos que modificar el nombre de la clave pública ssh antes), y luego envíe los cambios en el servidor, por lo que esto permite que otros clientes accedan al repositorio de código del servidor.
5. Gestión de permisos de almacén
El archivo gitosis.conf es un archivo de control que se utiliza para configurar usuarios, almacenes y permisos. El directorio keydir es donde se almacenan las claves públicas de todos los usuarios con derechos de acceso: una para cada persona. El nombre del archivo en keydir (como yourname.pub arriba) debe ser diferente al suyo: Gitosis obtendrá automáticamente el nombre de la descripción al final de la clave pública importada usando el script gitosis-init.
Mira el contenido del archivo gitosis.conf. Solo debe contener información relacionada con el gitosis-admin que acabas de clonar:
$ cat gitosis.conf
<. p>[gitosis][grupo gitosis-admin]
members=scott
writable=gitosis-admin
Muestra usuario yourname: el propietario de la clave pública de Gitosis inicializada; la única persona que puede administrar el proyecto gitosis-admin.
Ahora agreguemos un nuevo proyecto. Para hacer esto, crearemos una nueva sección llamada móvil que enumera los desarrolladores del equipo de desarrollo móvil y los proyectos a los que tienen acceso de escritura. Dado que su nombre es el único usuario en el sistema, lo convertimos en el único usuario y le permitimos leer y escribir un nuevo proyecto llamado iphone_project:
[group mobile]
members = scott
writable = iphone_project
Después de la modificación, envíe los cambios en gitosis-admin y envíelos al servidor para que sean efectivos:
$ git commit -am ' agregar iphone_project y grupo móvil'[master 8962da8] agregar iphone_project y grupo móvil
1 archivo modificado, 4 inserciones(+)
$ git push origin master
Contando objetos: 5, listo.
Comprimiendo objetos: 100% (3/3), listo.
Escribiendo objetos: 100% (3/3), 272 bytes | bytes/s, listo.
Total 3 (delta 0), reutilizado 0 (delta 0)
A git@gitserver:gitosis-admin.git
fb27aec ..8962da8 ?master -> master
6. Agregar un nuevo proyecto al almacén
Antes de enviar datos al servidor por primera vez en el nuevo proyecto iphone_project, debes Primero configure la dirección del servidor en Almacén remoto.
Pero no es necesario ir al servidor para crear manualmente el repositorio básico del proyecto con anticipación: Gitosis lo creará automáticamente cuando encuentre el impulso por primera vez:
$ git remote add origin git@gitserver:iphone_project.git
$ git push origin master
Repositorio Git vacío inicializado en /opt/git/iphone_project.git/
Contando objetos: 3, hecho.
Objetos de escritura: 100% (3/3), 230 bytes | 0 bytes/s, hecho.
Total 3 (delta 0), reutilizado 0 (delta). 0)
A git@gitserver:iphone_project.git
* [nueva rama] ?master -> master
Tenga en cuenta que no es necesario especificar la ruta completa aquí (de hecho, será inútil si la agrega), solo necesita dos puntos más el nombre del proyecto; Gitosis lo asignará automáticamente a la ubicación real para usted.
Para trabajar con amigos en un proyecto, debes volver a agregar sus claves públicas. Pero esta vez, no necesita agregarlos manualmente al final del archivo ~/.ssh/authorized_keys uno por uno en el servidor. En lugar de eso, solo necesita administrar los archivos de clave pública en el directorio keydir. El nombre del archivo determinará cómo se identifica al usuario en gitosis.conf. Ahora agregamos las claves públicas de John, Josie y Jessica:
$ cp /tmp/id_rsa.john.pub keydir/john.pub
$ cp /tmp/id_rsa.josie . pub keydir/josie.pub
$ cp /tmp/id_rsa.jessica.pub keydir/jessica.pub
Luego agréguelos al equipo móvil y déles acceso de lectura. iphone_project Permiso de escritura:
[group mobile]
members = scott john josie jessica
writable = iphone_project
Si envías y empujas Con esta Modificación, cuatro usuarios tendrán permisos de lectura y escritura para el proyecto al mismo tiempo.
Gitosis también cuenta con funciones sencillas de control de acceso. Si quieres que John solo tenga permisos de lectura, puedes hacer esto:
[group mobile]
members = scott josie jessica
writable = iphone_project p>
[group mobile_ro]
members = johnreadonly = iphone_project
Ahora John puede clonar y obtener actualizaciones, pero Gitosis no le permitirá enviar nada al proyecto. Puede crear tantos grupos como desee, cada uno con una cantidad de usuarios y proyectos diferentes.
Incluso puedes especificar un grupo como uno de los miembros (prefijo @ al nombre del grupo) y heredar automáticamente los miembros del grupo:
[group mobile_committers]
members = scott josie jessica
[grupo móvil]
miembros ? = @mobile_committers
escribible ?= iphone_project
[grupo móvil_2]
members ? = @mobile_committers john
writable ?= another_iphone_project
Si encuentra problemas inesperados, intente agregar loglevel=DEBUG a la sección [gitosis] El registro está configurado en. nivel de depuración para registrar información de ejecución más detallada). Si accidentalmente realiza una configuración incorrecta y pierde el permiso de inserción, también puede modificar manualmente el archivo /home/git/.gitosis.conf en el servidor; Gitosis en realidad lee la información de este archivo. Cuando obtenga los datos push, guardará el nuevo gitosis.conf en esta ruta. Entonces, si edita manualmente el archivo, permanecerá hasta la próxima vez que envíe una nueva versión a gitosis-admin. El contenido de configuración es
.