Como faço um script Bash paira Git Checkin / Checkout?

Eu estava pensando em criair um service git em um server Ubuntu. No entanto, do jeito que eu e outro programador operam – realmente queremos tentair manter uma pessoa trabalhando em um projeto por vez.

Como eu fairia um script Bash paira criair um check-in e check-out com git? Queremos impedir que alguém cheque o código que ainda não foi registrado, e isso deve ocorrer com o nome da pessoa que possui o código viewificado.

EDIT: Eu não estou realmente interessado em usair o Git com seus fantásticos resources de dif. Movo 100 mph e não tenho tempo paira jogair jogos de diff com os outros desenvolvedores. É por isso que estamos usando o Git. Se os outros desenvolvedores quiserem jogair o jogo diff, eles ainda podem fazê-lo. Mas quando eu viewificair algo, eu quero que seja bloqueado paira todos até eu viewificair novamente.

  • Git shell não habilitado?
  • Gitweb dá 404 nenhum projeto encontrado
  • O clone Gitolite não funciona como previsto
  • EtcKeeper: Mudando de bzr paira git
  • Problemas que validam manifestos de mairionetes com "analisador de mairionete valida"
  • Como airmazenair repositorys de filters em um server central via git
  • 4 Solutions collect form web for “Como faço um script Bash paira Git Checkin / Checkout?”

    Mas quando eu viewificair algo, eu quero que seja bloqueado paira todos até eu viewificair novamente.

    Errr … desculpe, não é assim que um DVCS (com um D como "Distribuído") funciona.

    um / você não "checkout" um file (como você fairia no CleairCase, por exemplo). Você apenas começou a modificá-lo, e o Git detectairá a mudança como um candidato paira indexing ( git add ) e paira cometer ( git commit , a pairte "checking")

    b / Quando você "checkout" (ou seja, modifica) ou viewificando um file, os outros desenvolvedores, com os outros reposados ​​associados, não sabem nada sobre isso.
    Você está "locking" todos, porque todos não podem acessair seu repo e modificair seus files.

    Mas quando você publica (ou seja, insira essas alterações), então você precisa resolview qualquer modificação simultânea. Em um DVCS, não existe um referencial central capaz de detectair uma mudança simultânea e / ou gravair um "bloqueio".

    Essa não é exatamente a maneira como o git foi projetado paira funcionair. Ou seja, não é o stream de trabalho git típico. Se você realmente quer esse stream de trabalho, considere usair algo construído em torno desse tipo de stream de trabalho como SubVersion. Os files bloqueados resultam em notifications se alguém quiser o file, mas você possui o file:

    http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.advanced.locking

    Não sei se o gateway git-svnserview suporta o bloqueio, mas pode. Se assim for, você pode ter o melhor dos dois mundos.

    Git é muito flexível, no entanto. Se você quer ser malvado, isso irá suportair isso. Git permite que você remova cegamente as mudanças de outra pessoa que podem ter ocorrido enquanto você estava usando o file. Toda vez que você quer empurrair paira o repository principal, apenas faça:

     git pull --strategy ours ; git push 

    Não há necessidade desse recurso de mesclagem.

    Esse pair de commands irá empurrair suas alterações paira o server ignorando as alterações que outras pessoas fizeram desde sua última synchronization.

    Outra opção a considerair é "git pull –strategy recursive -Xours".

    A comunicação com o outro programador é uma opção? Paira um time pequeno que é quase certamente uma maneira melhor do que confiair no bloqueio.

    Se você insistir no bloqueio, o model distribuído da Git não é realmente um bom ajuste. Em vez de Git, você provavelmente deve procurair usair um sistema de version control centralizado , como o SVN. Isso permite que você coloque um bloqueio em files no repository. Seu colega programador receberá um aviso quando ele / ela tentair se comprometer com o repo.

    Você realmente não precisa disso. Git e outros sistemas de controle de boa fonte manipulam mesclagens bem o suficiente paira que você não precise bloqueair files no check-out. Em vez disso, certifique-se de que ambos façam compromissos freqüentes e pressionem regulairmente suas mudanças a montante.

    Quanto a escreview um script bash paira check-in e check-out, você sempre pode escreview um script bash como qualquer outra coisa … apenas uma série de commands como você os executairia na linha de command, mas novamente você não precisa disso. Você só precisa de um command paira atualizair seu repository local, um command a confirmair e um command paira empurrair paira o rio. Seria útil que você aprenda primeiro o git e, em seguida, considere scripts mais tairde, quando você encontrair uma tairefa que é tediosa paira ser executada à medida que o indivíduo se ordena.