Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
docs:git:backing_up_repository [2009/10/19 23:46] – created billhdocs:git:backing_up_repository [2010/05/28 11:28] (current) billh
Line 1: Line 1:
 ====== backing up repository ====== ====== backing up repository ======
 +
 +===== notes =====
 +  * do **NOT** use rsync
 +    * git is smarter about what needs copied and will be faster
 +    * a commit or other action could be in progress
 +
 +===== using a hook =====
 +  * you have a myproject directory containing the .git repository, and would like to back up the repository contents  
 +  * create the backup repo<code>
 +cd /backup/destination
 +git init --bare myproject.git
 +</code>
 +  * do the initial push of your project to the backup repo<code>
 +cd /myproject
 +git push --all --force /backup/destination/myproject.git
 +</code>
 +  * in your local git repo, make a copy of the .git/hooks/post-commit file and modify it similar to this<code>
 +# assuming you have a mount point at /gitshare
 +echo -e "backing up repo...\n";
 +git push --all --force /backup/destination/myproject.git
 +</code>
 +
 +===== without changing local repo =====
   * you have a myproject directory containing the .git repository, and would like to back up the repository contents   * you have a myproject directory containing the .git repository, and would like to back up the repository contents
   * clone your project as a "mirror"<code>   * clone your project as a "mirror"<code>
Line 12: Line 35:
 </code> </code>
  
-===== notes ===== +===== automating backup of many repos ===== 
-  * don't use rsyncbecause commit or other action could be in progress+  * you have many projects that you want to backuplike to usb drive 
 +  * clone each project<code> 
 +cd /path/to/your/usb/drive/destfolder 
 +git clone --mirror /project.git 
 +</code> 
 +  * create a shell script (i.e. **pullall.sh**) to loop through each project and fetch<code> 
 +#!/bin/sh 
 + 
 +`which ls` -1d *.git | while read item;do 
 +echo -e "updating ${item}...\n" 
 +cd "${item}" 
 +git fetch --all --force 
 +cd .. 
 +done 
 +</code> 
 +  * run the script with ./pullall.sh (make sure it is executable: chmod 755 pullall.sh) 
  • docs/git/backing_up_repository.1256017591.txt.gz
  • Last modified: 2009/10/19 23:46
  • by billh