Programação com Objectos/Projecto de Programação com Objectos/Repositório CVS: Difference between revisions

From Wiki**3

< Programação com Objectos‎ | Projecto de Programação com Objectos
 
Line 1: Line 1:
{{PRJPOAvisosEN20182019}}
#REDIRECT [[ist:Programação com Objectos/Projecto de Programação com Objectos/Repositório CVS]]
<!--{{PRJPOAvisosEE20172018}}-->
{{PRJPOMandatory20182019}}
{{TOCright}}
<!--'''<font color="red">A DISPONIBILIZAR BREVEMENTE</font>'''-->
 
Os repositórios CVS para os projectos (um por grupo) já contêm versões iniciais do projecto.
 
{{Suggestion|Guia para leitores perplexos: [[CVS Crash Course]].}}
 
== Localização ==
 
Os repositórios estão disponíveis no AFS em:
 
* '''<nowiki>/afs/ist.utl.pt/groups/leic-po/po18/cvs</nowiki>'''
 
O conteúdo do repositório pode ser manipulado com o comando '''cvs''' ou com qualquer outro cliente compatível (e.g. ''[http://www.eclipse.org/ eclipse]'').
 
{{Aviso|Esta directoria não deve ser utilizada directamente.}}
 
== Modo de Acesso ==
 
No texto que se segue:
* '''<nowiki>###</nowiki>''' designa o [https://fenix.tecnico.ulisboa.pt/disciplinas/PO6517957/2018-2019/1-semestre/grupos número de grupo] com três dígitos, e.g., 012
* '''<nowiki>ISTID</nowiki>''' designa o identificador de aluno, no formato "ist123456"
 
Assim, os valores possíveis para a variável de ambiente '''CVSROOT''' (ou pela opção '''-d''' do comando "cvs") são:
 
* '''<nowiki>/afs/ist.utl.pt/groups/leic-po/po18/cvs/###</nowiki>''' (disponível em clientes AFS e utilizador com token válido para a célula ist.utl.pt)
* '''<nowiki>:ext:ISTID@sigma.ist.utl.pt:/afs/ist.utl.pt/groups/leic-po/po18/cvs/###</nowiki>''' (disponível via SSH; verificar que CVS_RSH=ssh)
 
{{Aviso|Alunos que ainda não visitaram o [https://selfservice.dsi.tecnico.ulisboa.pt/ self-service da DSI], devem fazê-lo, para activação dos serviços relevantes (AFS e Shell, pelo menos). Sem isso, não conseguirão desenvolver ou entregar o projecto, reprovando à disciplina.}}
 
== Conteúdo e Estrutura do Repositório ==
 
O código fornecido é de uso obrigatório e deve ser completado.
 
Cada projecto é constituído por dois módulos: '''project/sth-core''' e '''project/sth-app'''.
{{CollapsedCode|Conteúdo inicial do repositório CVS para o módulo sth-core|<text>
sth-core
├── Makefile
└── src
    └── sth
        ├── exceptions
        │   ├── BadEntryException.java
        │   ├── ImportFileException.java
        │   └── NoSuchPersonIdException.java
        ├── School.java
        └── SchoolManager.java
</text>
}}
{{CollapsedCode|Conteúdo inicial do repositório CVS para o módulo sth-app|<text>
sth-app
├── Makefile
├── people.import
└── src
    └── sth
        └── app
            ├── App.java
            ├── exceptions
            │   ├── ClosingSurveyException.java
            │   ├── DuplicateProjectException.java
            │   ├── DuplicateSurveyException.java
            │   ├── FinishingSurveyException.java
            │   ├── Message.java
            │   ├── NonEmptySurveyException.java
            │   ├── NoSuchDisciplineException.java
            │   ├── NoSuchPersonException.java
            │   ├── NoSuchProjectException.java
            │   ├── NoSurveyException.java
            │   ├── OpeningSurveyException.java
            │   └── SurveyFinishedException.java
            ├── main
            │   ├── DoOpen.java
            │   ├── DoOpenPersonnelMenu.java
            │   ├── DoOpenRepresentativeMenu.java
            │   ├── DoOpenStudentMenu.java
            │   ├── DoOpenTeachingMenu.java
            │   ├── DoSave.java
            │   ├── Label.java
            │   ├── MainMenu.java
            │   └── Message.java
            ├── person
            │   ├── DoChangePhoneNumber.java
            │   ├── DoLogin.java
            │   ├── DoSearchPerson.java
            │   ├── DoShowAllPersons.java
            │   ├── DoShowPerson.java
            │   ├── Label.java
            │   ├── Message.java
            │   └── PersonnelMenu.java
            ├── representative
            │   ├── DoCancelSurvey.java
            │   ├── DoCloseSurvey.java
            │   ├── DoCreateSurvey.java
            │   ├── DoFinishSurvey.java
            │   ├── DoOpenSurvey.java
            │   ├── DoShowDisciplineSurveys.java
            │   ├── Label.java
            │   ├── Message.java
            │   └── RepresentativeMenu.java
            ├── student
            │   ├── DoAnswerSurvey.java
            │   ├── DoDeliverProject.java
            │   ├── DoShowSurveyResults.java
            │   ├── Label.java
            │   ├── Message.java
            │   └── StudentMenu.java
            └── teaching
                ├── DoCloseProject.java
                ├── DoCreateProject.java
                ├── DoShowDisciplineStudents.java
                ├── DoShowProjectSubmissions.java
                ├── DoShowSurveyResults.java
                ├── Label.java
                ├── Message.java
                └── TeachingMenu.java
</text>
}}
 
Estes módulos podem ser obtidos em conjunto fazendo checkout de '''project''' (ver abaixo). <!-- (não recomendado, pois podem aparecer interferências indesejáveis -- configurações de eclipse, por exemplo).-->
O repositório já tem a seguinte estrutura:
<!--* '''Makefile''' (makefile "principal" -- repete as acções sobre as makefiles secundárias)-->
* '''sth-core''' (directoria principal da biblioteca com a funcionalidade sem interface com o utilizador)
* '''sth-core/Makefile''' (makefile secundária, semelhante à disponibilizada na aplicação bancária)
* '''sth-core/src''' (directoria onde reside o código do "core", à semelhança do que acontece na aplicação bancária)
* '''sth-app''' (directoria correspondente à aplicação; contém a interface com o utilizador)
* '''sth-app/Makefile''' (makefile secundária, semelhante à disponibilizada na aplicação bancária)
* '''sth-app/src''' (directoria onde já reside o código da interface textual, tal como na biblioteca equivalente da aplicação bancária)
 
Esta estrutura já contém algumas classes parcialmente implementadas ('''sth-core''') (que devem ser adaptadas) e outras completamente implementadas ('''sth-app''') (que não podem ser alteradas). <!--Estas implementações devem ser adaptadas ao código particular de cada projecto.-->
 
{{Aviso|A estrutura do repositório não pode ser alterada.}}
 
{{Aviso|Os nomes das classes fornecidas em '''sth-core''' não podem ser alterados.}}
 
{{Aviso|O código fornecido em '''sth-app''' tem de ser completado, mas os nomes das classes não podem ser alterados.}}
 
== Cuidados a ter na Utilização do Repositório CVS ==
 
=== <font color="red">NÃO FAZER</font> ===
 
* '''cvs init''' (não é necessário: o repositório já existe)
* '''cvs import''' (não é necessário: o projecto já existe)
* '''cd /afs/ist.utl.pt/groups/leic-po/po18/cvs''' (ou qualquer outra manipulação directa dos ficheiros do repositório: toda a interacção com o repositório deve ser limitada ao comando "cvs")
 
=== <font color="forestgreen">FAZER</font> ===
 
Antes de tudo o mais, fazer cópias de segurança (vulgo "backups") de tudo o que já foi feito.
 
O repositório já contém uma versão preliminar do projecto e devem ser dados os seguintes passos, para continuar a desenvolver o projecto:
 
# '''cvs co project''' (permite criar localmente uma directoria controlada pelo CVS, com o nome '''project''', com a estrutura apresentada acima, contendo os ficheiros do projecto);
# Editar/adicionar material do/ao projecto;
# Caso sejam criados ficheiros ou directórios novos, fazer '''cvs add ficheiro1 ficheiro2 ... ficheiro3''' (adicionar cada ficheiro novo ao projecto no CVS);
# '''cvs update''' (antes de enviar alteração locais para o repositório, verificar se há actualizações a incorporar na cópia local e que não foi esquecido nenhum ficheiro importante: voltar a 3 até terem sido todos adicionados)
# '''cvs commit''' (enviar alterações para o repositório)
 
=== Observações importantes ===
 
* No ponto 3 acima, é importante notar que quando se quer adicionar o conteúdo de uma (sub)directoria, deve ser primeiro adicionada a própria directoria e, só depois, o seu conteúdo.
* Não adicionar a biblioteca '''po-uuilib''' ao projecto (serão removidas e quaisquer alterações perdidas -- isto pode causar problemas de compilação e perda de nota).
* Pessoas sem área no AFS, ou sem login activado, não poderão aceder ao conteúdo do repositório: para activar estes acessos, consultar o self-service do CIIST (DSI). Em caso de dificuldade, consultar o corpo docente.
* A estrutura do projecto no CVS deve ser mantida como apresentado e cada biblioteca do projecto deve ser, em geral, semelhante, em estrutura, às apresentadas para a aplicação bancária.
* Em caso de dúvidas, consultar o corpo docente.
 
Agradece-se a comunicação de eventuais problemas.
 
[[category:Projecto de PO]]
[[category:PO]]
[[category:Ensino]]

Latest revision as of 13:53, 7 November 2018