2016-05-30 2 views
1

Может быть, спросил раньше, но я не могу найти ясный ответ. Когда мне нужно перечислить ветви репо с gitlib2sharp, действительно ли мне нужно сначала клонировать локальное репо? В чем смысл этого? Я просто хочу клонировать конкретную ветку, как вы делаете с git clone https://bla/repo.git -b branch1Libgit2sharp Получить удаленные ветви

Теперь мне сначала нужно сделать локальную проверку, а затем получить ветви и оттуда сделать второй раунд.

Я пропустил что-то здесь (надеюсь я).

TIA для вашего ответа!

Grtz, Ronald

Update (долго для комментариев): ОК, так что здесь случай использования. Компания предоставляет отчеты ssrs, которые нам нужно развернуть через TAP. Поэтому мои мысли должны были сделать это через Гит. Для каждого изменения пусть они создают ветвь, upload/alter/etc в этой ветви. И повторите изменения в этой ветке, пока все не будет хорошо. В итерациях они должны иметь возможность (повторно) развертываться, по крайней мере, на T. На заключительном этапе мы объединяем brnanch для освоения и (повторного) развертывания мастера в P. В Github вы можете полностью «щелкнуть» этот поток, но Конечно, я хочу автоматизировать это, и желательно, чтобы кто-то нажал кнопки, поэтому они мне не нужны. Итак, какой лучший программный выбор здесь? Когда они создают ветку и начинают развертывание в T, следует ли мне создавать (клонировать) репо, указывать местное репо на конкретную ветку, получать файлы (файлы .sql и .rdl) и выполнять/выгружать их? Я не знал, что когда вы клонируете репо, вы клонируете все ветви вместе с ним. Спасибо уже!

+0

FYI: 'git clone https: //bla/repo.git -b branch1' извлекает все ветви в любом случае, если вы действительно хотите только получить одну ветку без' comm-ish', которые не находятся внутри этих ветвей 'tree-ish', вам нужно будет инициализировать ze пустое репо, добавьте удаленную ветку отслеживания с источником исходного репо, а затем выполните проверку на этой ветке ... – SushiHangover

+0

@SushiHangover Вы не можете просто сделать: 'git clone https: //bla/repo.git -b branch1 - одна ветвь. У меня на самом деле не было причин использовать это, но просмотр документации, такой как '--single-branch', должен сделать это только для получения коммитов, связанных с желаемой ветвью. – Alderath

+0

@ Alderath вы правы, используя '--single - branch' работает (в зависимости от версии git, а также мелкое клонирование (' --depth 1') и еще совсем недавно клонирование одной фиксации, если включено на сервере (' upload-pack' установлен в 'true') ... просто зависит от версий git (клиент и сервер) ;-) – SushiHangover

ответ

0

Если вы хотите сделать что-то вроде мерзавца клона https://bla/repo.git -b branch1 с libgtk2sharp попробовать этот один:

var exampleRepositoryUrl = "https://github.com/npgsql/npgsql.git"; 
var exampleDestinationFolder = "branch-hotfix-3.0.8"; 
var exampleBranchName = "hotfix/3.0.8"; 

var repositoryClonedPath = Repository.Clone(exampleRepositoryUrl, 
              exampleDestinationFolder, 
              new CloneOptions() 
{ 
    BranchName = exampleBranchName 
}); 

using (var clonedRepo = new Repository(repositoryClonedPath)) 
{ 
    // ... 
} 

Чтобы получить список имен удаленных филиалов без клонировать репозиторий вы можете использовать что-то вроде этого:

var branches = Repository.ListRemoteReferences(exampleRepositoryUrl) 
         .Where(elem => elem.IsLocalBranch) 
         .Select(elem => elem.CanonicalName 
              .Replace("refs/heads/", "")); 
+0

Спасибо! Я также получил здесь, но мне нужно получить FriendlyName из филиалов. Вы можете получить доступ к коллекции филиалов через объект репо, но тогда вам сначала нужен объект репо, который является зарегистрированным репо на локальном диске. И именно этого я и хотел избежать, чтобы получить имена ветвей. Но, может быть, я использую Гит неправильно? – Ronald

+0

Я обновил свой ответ на примере списка имен удаленных филиалов без клонирования репо. Может быть, это будет полезно. – PiKos

+0

Спасибо! это то, что я искал! – Ronald

Смежные вопросы