2015-04-26 5 views
2

Так что я смотрел вокруг, пытаясь выяснить, как я могу перейти на указанную страницу github и получить последнее значение фиксации и связать его с значением в моем приложении, ничего не имеет смысла, и их не так много, если они есть примеры для чего-либо. Как и никто, похоже, не хочет делиться своими знаниями по этой теме.Github Last Commit?

Я пытаюсь получить последнее значение фиксации только с страницы github и использовать это как значение в своем приложении, может ли кто-нибудь дать мне пример того, как это сделать? Я использую C# с типом проекта WPF.

+0

Похоже, что это, вероятно, работа WebClient. Можете ли вы опубликовать несколько подробностей о том, что именно вы пытаетесь достичь в Github? – goobering

+0

Это кажется немного окольным, поскольку, поскольку страница представляет собой репозиторий git, зачем смотреть на страницу и зависеть от ее вида, которое может сломаться с незначительной редизайном, а не смотреть на репозиторий? –

+0

Im пытается получить последнее значение фиксации из самого репо. Конечно, я мог бы взглянуть на версию и попытаться получить это значение вместо этого, поскольку оно хранится в файле .config где-то, однако некоторые люди могут не обновлять это с помощью незначительных изменения, im после последнего значения фиксации в репозитории (последняя фиксация: 2 часа назад, например, но только после части «2 часа назад»). Я честно не уверен, как я должен приближаться к ней, но iv видел несколько сайты и приложения, которые смогли реализовать его, и я надеялся сделать то же самое. – Darkshadow

ответ

3

Если вы хотите клонировать хранилище локально и проверить его, вы можете использовать GitSharplibgit2sharp. Если это не вариант для вас, вы можете использовать API github. Адрес, использованный для вашего заказа:

https://api.github.com/repos/<repo_path>/commits 

e.g. https://api.github.com/repos/NancyFx/Nancy/commits

using (var client = new HttpClient()) 
{ 
    client.DefaultRequestHeaders.Add("User-Agent", 
     "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"); 

    using (var response = client.GetAsync("https://api.github.com/repos/NancyFx/Nancy/commits").Result) 
    { 
     var json = response.Content.ReadAsStringAsync().Result; 

     dynamic commits = JArray.Parse(json); 
     string lastCommit = commits[0].commit.message; 
    } 
} 

Как уже упоминалось в комментариях, это будет пара ваша реализация на GitHub, так что убедитесь, что ваше приложение не нужно работать с другими хостами GIT в будущем, если вы выбрали 2-й вариант.

+0

Да, это то, что плохое иметь на нескольких компьютерах пользователей (пользователей программного обеспечения), поэтому я не думаю, что клонирование локального репо было бы хорошей идеей, так как тогда мне нужно было бы выяснить относительный путь/полный путь просто для доступа к нему .. Но похоже, что это сработает хорошо (понятия не было о github api до сих пор) плохо попробуйте и вернитесь к вам :) – Darkshadow

+0

Yup .. несколько изменений тут и там с помощью последней строки Commommit и я смог получить дату одного из коммитов (сделал пример этого github, а также моего собственного) Как я планирую, чтобы я обновил свою версию с каждой функцией, которую я добавляю и выпускаю. Что бы вы сделали предложить лучший способ автоматического обновления моего приложения .. создать json-файл с данными приложения и сравнить это значение со значением, хранящимся в github? (поскольку он будет иметь тот же файл, например, более раннюю дату) – Darkshadow

+1

Как указано на веб-сайте, GitSharp больше не поддерживается: * «Разработка GitSharp в настоящее время приостановлена, поскольку мы считаем, что проект libgit2 и его привязки C# libgit2sharp гораздо более перспективным для работы ». * – nulltoken