diff --git a/scripts/feeds b/scripts/feeds
index 785be385a9038983e5281ba9ca5726422fdf1c5e..89cb5a22c535ebaf5af4500876a36587ea420ace 100755
--- a/scripts/feeds
+++ b/scripts/feeds
@@ -51,7 +51,7 @@ sub parse_config() {
 		$line++;
 
 		my $valid = 1;
-		$line[0] =~ /^src-\w+$/ or $valid = 0;
+		$line[0] =~ /^src-[\w-]+$/ or $valid = 0;
 		$line[1] =~ /^\w+$/ or $valid = 0;
 		@src = split /\s+/, $line[2];
 		$valid or die "Syntax error in feeds.conf, line: $line\n";
@@ -128,6 +128,13 @@ my %update_method = (
 		'update'	=> "git pull --ff",
 		'controldir'	=> ".git",
 		'revision'	=> "git show --abbrev-commit HEAD | head -n 1 | cut -d ' ' -f 2 | tr -d '\n'"},
+	'src-git-full' => {
+		'init'          => "git clone '%s' '%s'",
+		'init_branch'   => "git clone --branch '%s' '%s' '%s'",
+		'init_commit'   => "git clone '%s' '%s' && cd '%s' && git checkout -b '%s' '%s' && cd -",
+		'update'	=> "git pull --ff",
+		'controldir'	=> ".git",
+		'revision'	=> "git show --abbrev-commit HEAD | head -n 1 | cut -d ' ' -f 2 | tr -d '\n'"},
 	'src-gitsvn' => {
 		'init'	=> "git svn clone -r HEAD '%s' '%s'",
 		'update'	=> "git svn rebase",